当前位置: 首页 > news >正文

openEuler24.03 LTS下安装HBase集群

前提条件

  • 安装好Hadoop完全分布式集群,可参考:openEuler24.03 LTS下安装Hadoop3完全分布式

  • 安装好ZooKeeper集群,可参考:openEuler24.03 LTS下安装ZooKeeper集群

HBase集群规划

node2node3node4
MasterBackup Master
RegionServerRegionServerRegionServer

版本匹配查询

HBase与JDK版本

https://hbase.apache.org/book.html#java

在这里插入图片描述

HBase与Hadoop版本

https://hbase.apache.org/book.html#hbase.versioning

在这里插入图片描述

综合来看,hbase2.5.x对JDK8和Hadoop3.3.4都兼容,具体选择hbase2.5.3。

下载HBase

浏览器访问如下地址下载HBase安装包

https://archive.apache.org/dist/hbase/2.5.3/hbase-2.5.3-bin.tar.gz

上传到Linux的/opt/software目录

[liang@node2 software]$ ls | grep hbase
hbase-2.5.3-bin.tar.gz

解压

解压

[liang@node2 software]$ tar -zxvf hbase-2.5.3-bin.tar.gz -C /opt/module/

查看解压后文件

[liang@node2 software]$ cd /opt/module/
[liang@node2 module]$ ls | grep hbase
hbase-2.5.3
[liang@node2 module]$ cd hbase-2.5.3/
[liang@node2 hbase-2.5.3]$ ls
bin         conf  hbase-webapps  lib          NOTICE.txt  RELEASENOTES.md
CHANGES.md  docs  LEGAL          LICENSE.txt  README.txt
[liang@node2 hbase-2.5.3]$ pwd
/opt/module/hbase-2.5.3

设置环境变量

环境变量

[liang@node2 hbase-2.5.3]$ sudo vim /etc/profile.d/my_env.sh

添加内容

#HBASE_HOME
export HBASE_HOME=/opt/module/hbase-2.5.3
export PATH=$PATH:$HBASE_HOME/bin

让环境变量生效

[liang@node2 hbase-2.5.3]$ source /etc/profile

配置hbase

配置hbase-env.sh

[liang@node2 hbase-2.5.3]$ cd $HBASE_HOME/conf/
[liang@node2 conf]$ vim hbase-env.sh

修改如下两个地方:

(1)去掉export HBASE_MANAGES_ZK=false一行前面的#注释,值修改为false

export HBASE_MANAGES_ZK=false

(2)去掉export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP="true"一行前面的#号注释。

export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP="true"

在这里插入图片描述

配置hbase-site.xml

[liang@node2 conf]$ vim hbase-site.xml

删除原有配置内容,添加如下配置

    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>node2,node3,node4</value>
    </property>
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://node2:8020/hbase</value>
    </property>
    <!-- 在分布式的情况下一定要设置,不然容易出现Hmaster起不来的情况 -->
    <property>
        <name>hbase.unsafe.stream.capability.enforce</name>
        <value>false</value>
    </property>

配置regionservers

[liang@node2 conf]$ vim regionservers

内容修改为如下主机名

node2
node3
node4

配置Master高可用

Master存在单点故障问题,生产环境有必要配置Master高可用,配置方法如下:

创建backup-masters文件

[liang@node2 conf]$ vim backup-masters

内容如下

node3

把node3当作HBase的备份Master。

分发到其他机器

分发安装包

[liang@node2 conf]$ xsync /opt/module/hbase-2.5.3

分发环境变量

sudo /home/liang/bin/xsync /etc/profile.d/my_env.sh

根据提示输入node2机器root账户的登录密码

分别让node3及node4的环境变量生效

[liang@node3 ~]$ source /etc/profile
[liang@node4 ~]$ source /etc/profile

启动集群

先启动hadoop和zookeeper,再启动hbase,注意这个启动顺序,否则会造成没有HMaster

[liang@node2 conf]$ hdp.sh start
[liang@node2 conf]$ zk.sh start
[liang@node2 conf]$ start-hbase.sh

jps查看进程

[liang@node2 conf]$ jpsall

结果

=============== node2 ===============
10112 HMaster
9426 NodeManager
8789 NameNode
10715 Jps
4173 QuorumPeerMain
10349 HRegionServer
9726 JobHistoryServer
8991 DataNode
=============== node3 ===============
5636 DataNode
6036 NodeManager
6868 HMaster
7205 Jps
5894 ResourceManager
3511 QuorumPeerMain
6652 HRegionServer
=============== node4 ===============
3216 QuorumPeerMain
5072 SecondaryNameNode
5666 HRegionServer
5284 NodeManager
5940 Jps
4902 DataNode

查看Web UI

浏览器查看Web UI界面

node2:16010

在这里插入图片描述

简单使用

# 进入hbase shell命令行
[liang@node2 conf]$ hbase shell

# 创建表
hbase:001:0> create 't1','f1','f2'

# 查看表
hbase:002:0> list

# 退出hbase shell命令行
hbase:004:0> quit

操作过程

[liang@node2 conf]$ hbase shell
HBase Shell
Use "help" to get list of supported commands.
Use "exit" to quit this interactive shell.
For Reference, please visit: http://hbase.apache.org/2.0/book.html#shell
Version 2.5.3, rd385524561f771dcb402905c2bdcaeb4a8fecbdb, Wed Feb  1 09:01:02 UTC 2023
Took 0.0025 seconds
hbase:001:0> create 't1','f1','f2'
Created table t1
Took 2.7209 seconds
=> Hbase::Table - t1
hbase:002:0> list
TABLE
t1
1 row(s)
Took 0.0205 seconds
=> ["t1"]
hbase:003:0> quit
[liang@node2 conf]$

过程问题记录及解决

建表报错日志

hbase:002:0> create 'stu','info'

ERROR: org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet
        at org.apache.hadoop.hbase.master.HMaster.checkServiceStarted(HMaster.java:2821)
        at org.apache.hadoop.hbase.master.MasterRpcServices.isMasterRunning(MasterRpcServices.java:1205)
        at org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java)
        at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:392)
        at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:133)
        at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:359)
        at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:339)



查看hbase-liang-master-node2.log日志文件警告如下:
WARN  [RS-EventLoopGroup-1-2] concurrent.DefaultPromise: An exception was thrown by org.apache.hadoop.hbase.io.asyncfs.FanOutOneBlockAsyncDFSOutputHelper$4.operationComplete()
java.lang.IllegalArgumentException: object is not an instance of declaring class
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

成功解决步骤:

关闭进程:stop-hbase.sh关不掉进程,手动kill hbase进程

删除hdfs的/hbase目录

hdfs dfs -rm -r /hbase

删除zookeeper的/hbase

zkCli.sh
[zk: localhost:2181(CONNECTED) 0] ls /
[hbase, kafka, zookeeper]
[zk: localhost:2181(CONNECTED) 3] deleteall /hbase
[zk: localhost:2181(CONNECTED) 4] ls /
[kafka, zookeeper]
[zk: localhost:2181(CONNECTED) 5] quit

删除hbase logs文件

[liang@node2 module]$ same.sh rm -rf $HBASE_HOME/logs

修改hbase-env.sh

[liang@node1 conf]$ vim hbase-env.sh

取消export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP="true"一行开头的注释(解决问题关键语句

在这里插入图片描述

验证

[liang@node1 hbase-2.4.11]$ hbase shell
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
SLF4J: Failed to load class "org.slf4j.impl.StaticMDCBinder".
SLF4J: Defaulting to no-operation MDCAdapter implementation.
SLF4J: See http://www.slf4j.org/codes.html#no_static_mdc_binder for further details.
HBase Shell
Use "help" to get list of supported commands.
Use "exit" to quit this interactive shell.
For Reference, please visit: http://hbase.apache.org/2.0/book.html#shell
Version 2.4.11, r7e672a0da0586e6b7449310815182695bc6ae193, Tue Mar 15 10:31:00 PDT 2022
Took 0.0017 seconds
hbase:001:0> list
TABLE
0 row(s)
Took 0.3598 seconds
=> []
hbase:002:0> create 't1','f1'
Created table t1
Took 2.2108 seconds
=> Hbase::Table - t1
hbase:003:0>

退出

[liang@node1 conf]$ stop-hbase.sh
stopping hbase..........
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
[liang@node1 conf]$ 

均提示缺少日志是实现,因为之前重命名了日志文件,把日志文件改回来就好了。

mv /opt/module/hbase-2.4.11/lib/client-facing-thirdparty/slf4j-reload4j-1.7.33.jar.bak /opt/module/hbase-2.4.11/lib/client-facing-thirdparty/slf4j-reload4j-1.7.33.jar

进入hbase shell测试

[liang@node1 conf]$ hbase shell
2025-03-21 17:16:53,325 WARN  [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
HBase Shell
Use "help" to get list of supported commands.
Use "exit" to quit this interactive shell.
For Reference, please visit: http://hbase.apache.org/2.0/book.html#shell
Version 2.4.11, r7e672a0da0586e6b7449310815182695bc6ae193, Tue Mar 15 10:31:00 PDT 2022
Took 0.0014 seconds
hbase:001:0> create 't2','f1','f2'
Created table t2
Took 0.9881 seconds
=> Hbase::Table - t2
hbase:002:0> list
TABLE
t1
t2
2 row(s)
Took 0.0188 seconds
=> ["t1", "t2"]
hbase:003:0> quit
[liang@node1 conf]$

关闭HBase

先关闭hbase,再关闭zookeeper和hadoop

[liang@node2 conf]$ stop-hbase.sh
[liang@node2 conf]$ zk.sh stop
[liang@node2 conf]$ hdp.sh stop

如有需要,可点击查看:配套视频教程

完成!enjoy it!

http://www.dtcms.com/a/107450.html

相关文章:

  • YOLO学习笔记 | 基于YOLOv5的车辆行人重识别算法研究(附matlab代码)
  • Ubuntu 22.04 安装和运行 EDK2 超详细教程
  • 门控循环单元(GRU)基础学习与实例:电影评论情感分类
  • 微信小程序开发-01.介绍
  • Java 基础-29-final关键字-详解
  • 当网页受到DDOS网络攻击有哪些应对方法?
  • 【mysql 的安装及使用】
  • SuperMap GIS基础产品FAQ集锦(20250402)
  • 02_使用Docker在服务器上部署Jekins实现项目的自动化部署
  • Docker Registry 清理镜像最佳实践
  • 06-21-自考数据结构(20331)- 查找技术-动态查找例题分析
  • 02-Docker 使用
  • libevent 核心数据结构
  • AI 数字人短视频数字人源码部署揭秘:开启虚拟内容创作新纪元​
  • 工作后考研
  • 为什么在Transformer模型处理的输入维度会因为图像分辨率大小的不同而导致patch数量的变化,但是不需要修改模型的维度参数?
  • C语言数组知识点
  • 【C语言】深入理解指针(四):回调函数与qsort函数的奥秘
  • Mysql MIC高可用集群搭建
  • python的一些使用姿势
  • 【HTML】分享一个自己写的3*3拼图小游戏
  • Go语言从零构建SQL数据库(4)-解析器
  • 人工智能之数学基础:矩阵分解之LU分解
  • Stable Diffusion win10 Cpu安装日志
  • 国产三维CAD「皇冠CAD」在汽车零部件领域建模教程:刹车片
  • React-Diffing算法和key的作用
  • 【AI论文】什么、如何、何处以及效果如何?大语言模型测试时缩放技术调研
  • Python扩展知识详解:map函数
  • Pinia持久化插件pinia-plugin-persistedstate
  • Ubuntu安装psql