大数据学习栈记——HBase安装

本文介绍大数据技术中流行的非关系型数据库HBase的安装,操作系统:Ubuntu24.04

安装Zookeeper

安装HBase前需要先安装Zookeeper,HBase使用Zookeeper作为其分布式协同服务,存储了HBase集群的元数据信息,并提供了分布式锁、保障系统高可用等功能。Zookeeper在Hbase中的主要作用如下:

(1)Master节点:

Master选举与主备切换。Master节点启动时选举与主备切换;

提供分布式一致锁。保证数据写入的事务性,表的删除,新建,更新需要维护全局锁;

(2)RegionServer节点

实现RegionServer节点的高可用管理。每个RegionServer启动时都会在ZK上注册,然后Master节点会去监控这个znode,若RegionServer节点宕机,Master节点会监听到;

RegionServer负载均衡管理。RegionServer节点Region的迁移、合并、分裂需要Master节点和RegionServer节点参与。ZooKeeper是Master和RegionServer之间的协调节点,做中间状态管理。

(3)维护管理HBase相关元数据信息

Zookeeper中meta-region-server节点维护hbase的meta表所在的节点信息,这个表存储着Hbase集群所有region的相关信息,包括region所在RegionServer节点,region的rowkey范围,以及region所在表名,列值等信息;

1. 下载Zookeeper

下载地址  https://zookeeper.apache.org/  ,找到下载链接

选择稳定版安装,随后用xftp上传

注意,你需要先搭建hadoop集群,并确认集群的IP地址

我原来的服务器配置是:

Hadoop101 192.168.179.140

Hadoop102 192.168.179.141

Hadoop103 192.168.179.142

2. 解压文件、修改文件夹名称、修改文件权限

在hadoop101中执行以下代码:

cd /home/youka

sudo tar -zxvf apache-zookeeper-3.8.4-bin.tar.gz -C /usr/local   #解压

cd /usr/local/

sudo mv apache-zookeeper-3.8.4-bin zookeeper  # 将文件夹名改为zookeeper(原来那个太长了,很难写)

sudo chown -R hadoop ./zookeeper    # 修改文件权限

备注:①tar是解压命令,具体使用方法参考

linux压缩解压缩文件tar命令_tar zxf-CSDN博客;

②mv命令时指move,可以移动或修改文件夹;③chown 是指change ower,用于修改文件或目录的所有者,参考

https://blog.csdn.net/weixin_41951954/article/details/128630329

3. 配置 zoo.cfg文件

在主节点hadoop101中执行以下代码:

cd /usr/local/zookeeper/conf

ls

sudo mv zoo_sample.cfg zoo.cfg     #修改zoo_sample.cfg 名字,我这边是直接改名使用,有的教程是复制一份

sudo vim zoo.cfg

进入zoo.cfg文件后修改和添加以下内容

dataDir=/usr/local/zookeeper/data

dataLogDir=/usr/local/zookeeper/logs

server.1=hadoop101:2888:3888

server.2=hadoop102:2888:3888

server.3=hadoop103:2888:3888

由于zookeeper安装目录默认没有data和logs文件夹,我们需要手工创建。

cd /usr/local/zookeeper

sudo mkdir data

sudo mkdir logs

给这两个文件夹添加权限

chmod 777 data

chmod 777 logs

4. 配置环境变量

执行下列代码

vim ~/.bashrc

在vim中添加内容

export ZOOKEEPER_HOME=/usr/local/zookeeper

export PATH=$PATH:$ZOOKEEPER_HOME/bin

保存退出,然后让环境变量生效

source ~/.bashrc

5. 将ZooKeeper发布到其他服务器

Hadoop102和hadooop103节点还没有安装zookeeper,我们直接把hadoop101上面装好的zookeeper目录远程拷贝过去,在hadoop101上执行下列命令

执行

scp -r /usr/local/zookeeper root@hadoop102:/usr/local

scp -r /usr/local/zookeeper root@hadoop103:/usr/local

注意:我用的是root用户配置的hadoop集群,所以可以直接传,如果是非root用户上传会导致权限不够,解决办法是给所有集群的/usr/local增加权限,这里大家可以参考Bug | scp命令显示Permission denied! - Unirithe - 博客园

或者我们使用更好的命令:xsync

xsync /usr/local/zookeeper

6. 修改node1和node2节点的配置

zookeeper的启动需要在每个节点输入命令,所以需要在hadoop101、hadoop102、hadoop103上都配置zookeeper的环境变量。配置与hadoop101相同,因此我们又可以使用xsync大法

xsync ~/.bashrc

并在各个节点上让配置生效

source ~/.bashrc

(2)将配置文件中的myid改为不相同的值,在三台虚拟机上执行下列命令:

cd /usr/local/zookeeper/data

vim myid

在hadoop101里写1 hadoop102里写2 hadoop103里写3

保存后退出

7. ZooKeeper集群启动

启动集群需要在每台zookeeper服务器上都运行命令:

zkServer.sh start

集群启动成功,查看各个结点的状态

zkServer.sh status

关闭Zookeeper

zkServer.sh stop

注意:如果集群无法正常启动,可能有以下问题:myid配置不正确、防火墙未开放端口、8080端口占用。如果以上问题都无法解决,可以将每一个zoo.cfg文件进行修改,对应每一台结点上server.i的值修改为0.0.0.0:2888:3888。例如,hadoop101修改如下:

server.1=0.0.0.0:2888:3888

server.2=hadoop101:2888:3888

server.3=hadoop102:2888:3888

三台结点均需要修改。

我们发现每次都要在三台机器上启动Zookeeper很麻烦,我们可以写一个脚本,在一台机器上启动三台服务。

cd /usr/local/zookeeper/bin

vim zkp

添加如下内容:

#!/bin/bash
for host in hadoop101 hadoop102 hadoop103
docase $1 in"start"){echo "                                               "echo "--------------- 启 动 zookeeper ---------------"echo "------------ $host zookeeper -----------"ssh $host "source ~/.bashrc; /usr/local/zookeeper/bin/zkServer.sh start"};;"stop"){echo "                                               "echo "--------------- 关 闭 zookeeper ---------------"echo "------------ $host zookeeper -----------"ssh $host "source ~/.bashrc; /usr/local/zookeeper/bin/zkServer.sh stop"};;"status"){echo "                                               "echo "-------------- 查看zookeeper状态 --------------"echo "------------ $host zookeeper -----------"ssh $host "source ~/.bashrc; /usr/local/zookeeper/bin/zkServer.sh status"};;esac
done

随后给文件赋予权限

sudo chmod +x zkp

进入目录,启动

zkp start

zkp status

安装HBase

安装完Zookeeper后,我们正式进入HBase的安装

参考:

https://blog.csdn.net/linghaowoneng/article/details/130552766

https://blog.csdn.net/qq_51246603/article/details/129101644

https://blog.csdn.net/qq_63519278/article/details/134467429

1. 下载HBase

下载地址  https://hbase.apache.org/downloads.html ,找到下载链接

我这里下的是HBase2.5.8版本,你可以结合自己需求下载,但需要注意的是要和hadoop兼容,具体兼容规则见

https://hbase.apache.org/book.html#basic.prerequisites

将安装包用xftp上传

2. 解压文件、修改文件夹名称、修改文件权限

cd /home/youka

sudo tar -zxvf hbase-2.5.8-bin.tar.gz -C /usr/local   #解压

cd /usr/local/

sudo mv hbase-2.5.8 hbase  # 将文件夹名改为hbase(原来那个太长了,很难写)

sudo chown -R hadoop ./hbase    # 修改文件权限

3. 配置环境变量

执行下列代码

vim ~/.bashrc

在vim中添加内容

export HBASE_HOME=/usr/local/hbase

export PATH=$PATH:$HBASE_HOME/bin

保存退出,然后让环境变量生效

source ~/.bashrc

4. 配置hbase-env.sh文件

配置hbase-env.sh文件,位于Hbase安装目录/conf/,执行下列命令:

cd /usr/local/hbase/conf

vim hbase-env.sh

在vim中添加内容

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 #目录要换成自己jdk所在目录

export HBASE_MANAGES_ZK=false

export HBASE_PID_DIR=/usr/local/hbase/pids

HBASE_MANAGES_ZK设置为true,则使用HBase自带的Zookeeper进行管理,只能实现单机模式,常用于测试环境,不能用于生产环境;设为false,启动独立的Zookeeper。由于我使用的是独立的Zookeeper,所以设置为false

5. 配置hbase-site.xml文件

配置hbase-site.xml文件,位于Hbase安装目录/conf/:

cd /usr/local/hbase/conf

vim hbase-site.xml

发现hbase-site.xml已经有一些基本的配置标记了:

在vim中将<configuration></configuration>里的内容增加(没有的标记)或者替换(已经有的标记):

<property>
<!--启用分布式集群--><name>hbase.cluster.distributed</name><value>true</value></property><property>
<!-- HBase的根目录在HDFS上的路径--><name>hbase.rootdir</name><value>hdfs://hadoop101:8020/hbase</value></property>
<property><!-- ZooKeeper的主机名或IP地址列表,用逗号分隔--><name>hbase.zookeeper.quorum</name><value>hadoop101:2181,hadoop102:2181,hadoop103:2181</value>
</property>

注意:上述配置hdfs的客户端路径需要根据自己的路径进行修改!!!!!(我的是8020端口,这个配置是在hdfs里自己配置的,不同人不一样,可能是9000端口)

6. 配置regionservers

配置hbase-site.xml文件,在regionservers文件中添加HBase的节点,类似hadoop中的hadoop102 hadoop103,一行一个

vim regionservers

在vim中去掉localhost,添加内容

hadoop101
hadoop102
hadoop103

7. 将HBase发布到其他服务器

可以用scp命令,这里使用简单好用的xsync

xsync /usr/local/hbase

8. 启动和停止HBase服务

在master节点机器进行 启动和停止 HBase命令为:

注意:启动和关闭Hadoop、Zookeeper和HBase的顺序是:

启动Hadoop → 启动Zookeeper → 启动HBase

关闭HBase → 关闭Zookeeper → 关闭Hadoop

启动:

start-all.sh  #启动hadoop,在hadoop101上执行

zkServer.sh start  #启动ZooKeeper,在hadoop101、hadoop102、hadoop103执行。

start-hbase.sh  #启动HBase,在hadoop101上执行

停止:

stop-hbase.sh   #停止HBase,在hadoop101上执行

zkServer.sh stop   #停止ZooKeeper,在hadoop101、hadoop102、hadoop103执行

stop-all.sh  #停止hadoop,在hadoop101上执行

但是注意到我们已经把Zookeeper启动写成了脚本,所以启动可以只在hadoop101输入:

start-all.sh

zkp start

start-hase.sh

HBase Web 管理网页,浏览器输入

http://hadoop101:16010 ,验证hadoop101状态和各个Region Servers状态

http://hadoop102:16030 ,验证hadoop102状态

http://hadoop103:16030 ,验证hadoop103状态

发现16030有问题,16010也只显示一个,其实是我们hbase-site没有配置正确

vim hbase-site.xml

在vim中将<configuration></configuration>里的内容增加:

<property><name>hbase.wal.provider</name><value>filesystem</value>
</property>

现在hbase-site.xml的内容变成这样了:

随后,将配置文件继续分发给集群

xsync hbase-site.xml

随后,重新启动集群。如果大家在停止hbase的时候出现一直stopping的话,参考stop-hbase.sh关闭不了,一直处于等待状态。_stophbasesh一直处于等待状态-CSDN博客进行操作。

hbase-daemon.sh stop master

stop-hbase.sh

start-hbase.sh

集群正常启动

子结点状态正常

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/38533.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot+VUE(Ant Design Vue)实现图片下载预览功能

目录 背景 1.后端实现下载接口 2.前端请求实现 第一步&#xff1a;导入api 第二步&#xff1a;请求接口 3.前端展示实现 4.实现效果展示 5.总结 背景 这段时间通过SpringBootVUE(Ant Design Vue)框架做了一个项目&#xff0c;但是在图片下载&#xff0c;展示的时候在网…

Java 推送钉钉应用消息

前言&#xff1a; 本文的目的是通过手机号获取钉钉成员的userid&#xff0c;实现钉钉应用的消息推送。 一、创建钉钉应用 登录钉钉开放平台 二、应用相关凭证 需要获取 Client ID (原 AppKey 和 SuiteKey) Client Secret (原 AppSecret 和 SuiteSecret) App ID 原企业内部…

SpringCloud介绍

什么是SpringCloud&#xff1f; SpringCloud 是分布式微服务架构下的一站式解决方案&#xff0c;是各个微服务架构落地技术的集合体&#xff0c;俗称微服务全家桶。 官方介绍&#xff1a; SpringCloud是基于SpringBoot提供了一套微服务解决方案&#xff0c;包括服务注册与发现…

YOLOv11 目标检测

本文章不再赘述anaconda的下载以及虚拟环境的配置&#xff0c;博主使用的python版本为3.8 1.获取YOLOv11的源工程文件 链接&#xff1a;GitHub - ultralytics/ultralytics: Ultralytics YOLO11 &#x1f680; 直接下载解压 2.需要自己准备的文件 文件结构如下&#xff1a;红…

【Linux】——环境变量与进程地址空间

文章目录 环境变量环境变量的概念常见的环境变量PATH相关指令 main的三个参数前两个参数第三个参数 程序地址空间进程地址空间 环境变量 环境变量的概念 环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数&#xff0c;将来会以shell的形式传递给所有进程&…

Kafka--常见问题

1.为什么要使用 Kafka&#xff0c;起到什么作用 Kafka是一个高吞吐量、分布式、基于发布订阅的消息系统&#xff0c;它主要用于处理实时数据流 Kafka 设计上支持高吞吐量的消息传输&#xff0c;每秒可以处理数百万条消息。它能够在处理大量并发请求时&#xff0c;保持低延迟和…

Flutter:页面滚动,导航栏背景颜色过渡动画

记录&#xff1a;导航默认透明&#xff0c;页面发生滚动后&#xff0c;导航背景色由0-1&#xff0c;过渡到白色背景。 view import package:ducafe_ui_core/ducafe_ui_core.dart; import package:flutter/material.dart; import package:get/get.dart; import package:redo…

探秘格式化:数据危机与恢复之道

引言 在数字化飞速发展的当下&#xff0c;数据已然成为我们生活中不可或缺的一部分。无论是珍贵的家庭照片、重要的工作文档&#xff0c;还是企业关键的业务数据&#xff0c;都承载着我们的回忆、努力和希望。然而&#xff0c;格式化这一操作却如同隐藏在数字世界中的“幽灵”…

人工智能 - 通用 AI Agent 之 LangManus、Manus、OpenManus 和 OWL 技术选型

一、核心项目概览 1. Manus(闭源通用 AI Agent) 定位 :全球首个全流程自动化通用 AI Agent,GAIA 基准测试 SOTA 水平。核心能力 : 全流程自动化 :从任务规划(如撰写报告)到执行(代码生成、表格制作)的端到端处理。智能纠错机制 :基于沙箱环境的实时错误反思与调整…

封装一个分割线组件

最终样式 Vue2代码 <template><div class"sep-line"><div class"sep-label"><span class"sep-box-text"><slot>{{ title }}</slot> <!-- 默认插槽内容&#xff0c;如果没有传递内容则使用title -->&…

走进Java:String字符串的基本使用

❀❀❀ 大佬求个关注吧~祝您开心每一天 ❀❀❀ 目录 一、什么是String 二、如何定义一个String 1. 用双引号定义 2. 通过构造函数定义 三、String中的一些常用方法 1 字符串比较 1.1 字符串使用 1.2 字符串使用equals() 1.3 使用 equalsIgnoreCase() 1.4 cpmpareTo…

第2.2节 Android Jacoco插件覆盖率采集

JaCoCo&#xff08;Java Code Coverage&#xff09;是一款开源的代码覆盖率分析工具&#xff0c;适用于Java和Android项目。它通过插桩技术统计测试过程中代码的执行情况&#xff0c;生成可视化报告&#xff0c;帮助开发者评估测试用例的有效性。在github上开源的项目&#xff…

OpenGL ES ->乒乓缓冲,计算只用两个帧缓冲对象(Frame Buffer Object)+叠加多个滤镜作用后的Bitmap

乒乓缓冲核心思想 不使用乒乓缓冲&#xff0c;如果要每个滤镜作用下的绘制内容&#xff0c;也就是这个滤镜作用下的帧缓冲&#xff0c;需要创建一个Frame Buffer Object加上对应的Frame Buffer Object Texture使用乒乓缓冲&#xff0c;只用两个Frame Buffer Object加上对应的F…

Unity导出WebGL,无法加载,data文件无法找到 404(NotFound)

问题&#xff1a;data文件无法找到404Not found 示例是使用IIS托管启动 F12可以看到not found 的报错 解决办法&#xff1a; iis无法识别data文件&#xff0c;在MIME类型中增加data 类型&#xff1a;application/octet-stream 添加之后&#xff0c;会在根目录下生产一个…

C++与OO思想的联系

一、C与OO思想的联系 C&#xff1a;OO思想&#xff08;面向对象--属性和行为&#xff09; 任何事务都可以被看做一个个对象&#xff0c;一个再复杂的模型结构都是由千千万万个对象组成。 OO思想两个要素&#xff1a;属性和行为(方法)。 OO思想的特点&#xff1a; 封装&#x…

单表达式倒计时工具:datetime的极度优雅(DeepSeek)

一个简单表达式&#xff0c;也可以优雅自成工具。 笔记模板由python脚本于2025-03-22 20:25:49创建&#xff0c;本篇笔记适合任意喜欢学习的coder翻阅。 【学习的细节是欢悦的历程】 博客的核心价值&#xff1a;在于输出思考与经验&#xff0c;而不仅仅是知识的简单复述。 Pyth…

Kubernetes的Replica Set和ReplicaController有什么区别

ReplicaSet 和 ReplicationController 是 Kubernetes 中用于管理应用程序副本的两种资源&#xff0c;它们有类似的功能&#xff0c;但 ReplicaSet 是 ReplicationController 的增强版本。 以下是它们的主要区别&#xff1a; 1. 功能的演进 ReplicationController 是 Kubernete…

CSS基础知识一览

持续维护 选择器 display 常用属性 浮动 弹性布局

IS-IS原理与配置

一、IS-IS概述 IS-IS&#xff08;Intermediate System to Intermediate System&#xff0c;中间系统到中间系统&#xff09;是ISO&#xff08;International Organization for Standardization&#xff0c;国际标准化组织&#xff09;为它的CLNP&#xff08;ConnectionLessNet…

【前端】Visual Studio Code安装配置教程:下载、汉化、常用组件、基本操作

文章目录 一、Visual Studio Code下载二、汉化三、常用组件1、Auto Rename Tag2、view-in-browser3、Live Server 四、基本操作五、感谢观看&#xff01; 一、Visual Studio Code下载 下载官网&#xff1a;https://code.visualstudio.com/ 进入官网后点击右上角的Download &…