openEuler24.03 LTS下安装HBase集群
前提条件
-
安装好Hadoop完全分布式集群,可参考:openEuler24.03 LTS下安装Hadoop3完全分布式
-
安装好ZooKeeper集群,可参考:openEuler24.03 LTS下安装ZooKeeper集群
HBase集群规划
| node2 | node3 | node4 |
|---|---|---|
| Master | Backup Master | |
| RegionServer | RegionServer | RegionServer |
版本匹配查询
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 yetat 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 classat 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!
相关文章:
openEuler24.03 LTS下安装HBase集群
前提条件 安装好Hadoop完全分布式集群,可参考:openEuler24.03 LTS下安装Hadoop3完全分布式 安装好ZooKeeper集群,可参考:openEuler24.03 LTS下安装ZooKeeper集群 HBase集群规划 node2node3node4MasterBackup MasterRegionServ…...
关于testng.xml无法找到类的问题
问题:testng.xml添加测试类的时候飘红 解决办法: 1.试图通过自动生成testng.xml插件去解决,感觉也不是这个问题,没有尝试; 2.以为是创建包的方式不对,重新删除后新建--还是找不到 想新建类的时候发现从m…...
数据结构:探秘AVL树
本节重点 理解AVL树的概念掌握AVL树正确的插入方法利用_parent指针正确更新平衡因子掌握并理解四种旋转方式:左单旋,右单旋,左右双旋,右左双旋 一、AVL树的概念 AVL树得名于它的发明者G. M. Adelson-Velsky和E. M. Landis&…...
Linux 入门:基础开发工具(上)vim,gcc/g++,make/makefile
目录 一.软件包管理器 一).软件包 二).安装软件 三).删除软件 二.编辑器vim 一).vim的基本介绍 1.正常/普通/命令模式(Normal mode) 2.插入模式(Insert mode) 3.底行模式(last line mode) 二).vim的基本操作 …...
计算机科学基础设施之数学:科研工具、资源与环境详介
李升伟 整理 数学科研涉及广泛的工具、资源和环境,涵盖从理论分析到数值模拟、从数据获取到论文发表的各个环节。以下是对数学科研中常用工具、资源和环境的详细介绍: 一、数学科研工具 1. 文献检索与管理工具 Google Scholar:全球最大的…...
Turtle事件处理(键盘与鼠标交互)
Turtle 提供了 事件驱动编程,允许我们使用 键盘 和 鼠标 控制 Turtle,从而实现交互式绘图。例如,我们可以让 Turtle 响应 按键、鼠标点击 和 拖动 事件,使其根据用户的输入进行移动、旋转或绘制图形。 1. 事件机制概述 Turtle 的事件处理主要依赖 turtle.Screen() 提供的 …...
5、无线通信基站的FPGA实现架构
基站(Base Station,BS),也称为公用移动通信基站,是无线电台站的一种形式,具体则指在一定的无线电覆盖区中,通过移动通信交换中心,与移动电话终端之间的信息传递的无线电收发信电台。…...
关于 UPDATE 语句 和 SELECT ... FOR UPDATE 的对比分析,包括语法、功能、锁机制、使用场景及示例代码
以下是关于 UPDATE 语句 和 SELECT ... FOR UPDATE 的对比分析,包括语法、功能、锁机制、使用场景及示例代码: 1. UPDATE 语句 功能 直接修改数据:立即更新表中的数据,并提交修改。无显式锁:虽然会自动加锁ÿ…...
Linux2 CD LL hostnamectl type mkdir dudo
查看主机名信息 设置静态主机名 同时配置静态、瞬时主机名 下载Vmware tools https://blog.csdn.net/qq_34638161/article/details/102779721 mkdir创建目录 问题:为什么在root目录下 看不到 /var /usr那些文件夹...
Docker容器部署Java项目的自动化脚本(Shell编写)
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Docker容器部署Java项目的自动化脚本&#x…...
计组(蒋)期末不挂科纲要
2025.03.27:计算机组成原理期末不挂科速成纲要 计组期末不挂科速成纲要 第1章 概论第2章 数据的机器层次表示习题练习 第3章 指令系统习题练习 第4章 数值的机器运算习题练习 第5章 存储系统和结构习题练习 第6章 中央处理器习题练习 第7章 总线 第1章 概论 冯诺依曼…...
STM32F103C8T6单片机硬核原理篇:讨论GPIO的基本原理篇章1——只讨论我们的GPIO简单输入和输出
目录 前言 输出时的GPIO控制部分 标准库是如何操作寄存器完成GPIO驱动的初始化的? 问题1:如何掌握GPIO的编程细节——跟寄存器如何打交道 问题2:哪些寄存器,去哪里找呢? 问题三,寄存器的含义ÿ…...
UniApp集成极光推送详细教程
最近项目要集成推送服务,选型极光推送,记录一下开发过程。 1、极光官网注册登录 1.1选择极光推送产品,新建应用 1.2在下一步中选择Android/IOS的消息推送服务 1.3产品设置中输入应用包名(一经输入后不可更改,一定要正…...
探索Doris:日志分析的新宠,是否能取代老牌ES?
在大数据时代,日志存储与分析对于企业的运营和决策起着至关重要的作用。Elasticsearch(简称 ES)作为一款广泛应用的开源分布式搜索和分析引擎,长期以来在日志管理领域占据着举足轻重的地位。然而,随着技术的不断发展&a…...
HCIA/HCIP基础知识笔记汇总
HCIA/HCIP基础知识笔记汇总 ICT产业链: 上游:芯片制造、元器件生产、光纤光缆制造 中游:硬件组装、软件开发、网络建设维护 下游:电信服务、互联网服务、终端产品 VLAN端口类型: access :…...
AI战略群与星际之门:软银AI投资版图计划深度解析
一、星际之门:万亿美元级 AI 基础设施革命 1.1 项目背景与战略定位 在 AI 技术迅猛发展的今天,算力已成为推动其前进的核心动力。软银联合 OpenAI、甲骨文、英伟达、微软、arm推出的 “星际之门”(Stargate)计划,无疑是 AI 领域的一颗重磅炸弹。作为 AI 领域史上最大单笔…...
系统思考与时间管理
时间管理的真正秘诀:主动浪费时间? 巴菲特的私人飞机驾驶员觉得自己不够成功,于是向巴菲特请教应该怎么做。巴菲特让他列出了自己人生中最想实现的25个目标,并按重要程度排序,接着安排时间专注做前五件最重要的事情。…...
mac air m系列arm架构芯片安装虚拟机 UTM+debian 浏览器firefox和chrome
成果展示:debian虚拟机,你值得拥有! 预期结果 1、mac的m系列芯片,arm 架构且内存小,安装虚拟机。 考虑到mac m系列芯片8g内存,arm架构想安装一个轻量的虚拟机,偶然之间发现了debian,…...
大模预测法洛四联症的全方位研究报告
目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 二、法洛四联症概述 2.1 病理特征 2.2 临床表现 2.3 现有治疗手段 三、大模预测法洛四联症的原理与模型构建 3.1 大模预测基本原理 3.2 模型构建的数据收集与处理 3.3 模型训练与优化 四、术前风险预测与准…...
Keepalived+LVS+nginx高可用架构
注明:所有软件已经下载好,防火墙和SELinux已经全部关闭 一.搭建NFS 1.服务端 1.创建文件 [rootnfs ~]# mkdir -p /nfs/data 2、修改权限 [rootnfs ~]# chmod orw /nfs/data 3、写配置文件 [rootnfs ~]# cat /etc/exports /nfs/data 192.168.111.118(r…...
【力扣hot100题】(034)LRU缓存
做完这题已经没有任何力气写链表题了。 思路很简单,就是调试特别的痛苦。 老是频频报错,唉。 class LRUCache { public:struct ListNode{int key,val;ListNode* next; ListNode* prev;ListNode() : key(0), val(0), next(nullptr), prev(nullptr) {}L…...
【redis】缓存 更新策略(定期、实时生存),缓存预热、穿透、雪崩、击穿详解
什么是缓存 redis 最常用的场景 核心思路就是把一些常用的数据,放到触手可及(访问速度更快)的地方 ⽐如我需要去⾼铁站坐⾼铁. 我们知道坐⾼铁是需要反复刷⾝份证的 (进⼊⾼铁站, 检票, 上⻋,乘⻋过程中, 出站…)正常来说, 我的⾝份证是放在…...
好文和技术网站记录
后续不断记录一些本人觉得的好文和一些技术网站 技术网站 Java 全栈知识体系 https://www.pdai.tech/ 文章 利用 NginxKeepalived 实现高可用技术 https://cloud.tencent.com/developer/article/1647182?policyId1004...
使用STM32CubeMX和Keil在STM32上创建并运行一个简单的FreeRTOS多任务程序
目标 利用FreeRTOS运行两个任务,分别为点灯和OLED屏的显示。 利用STM32CubeMX生成Keil工程和相关初始化代码 知识回顾 之前已经利用STM32CubeMX生成过Keil工程和相关初始化代码了,可以去回顾一下,详情见:https://blog.csdn.ne…...
从查重报告入手的精准论文降重秘籍
每个同学在使用论文查重时,为何同一篇文章,可能重复率从10%—30%不等?归根结底还是使用了不同查重系统。其实不同的论文查重与论文AIGC检测系统的算法、数据及模型都不一样,那如何针对这些系统的“个性”精准降重,这篇…...
车辆控制解决方案
车辆控制解决方案 /* * Purpose: 优化车辆控制的功能 -> 用户在控制车辆状态时,实现控制按钮点击状态改变只触发一次onSwitchChange事件,不再下发控制指令,同时清除加载车辆实时状态的定时器status_interval直到有返回值再开启࿰…...
【机器学习】嘿马机器学习(算法篇)第14篇:决策树算法,学习目标【附代码文档】
本教程的知识点为:机器学习算法定位、 K-近邻算法 1.4 k值的选择 1 K值选择说明 1.6 案例:鸢尾花种类预测--数据集介绍 1 案例:鸢尾花种类预测 1.8 案例:鸢尾花种类预测—流程实现 1 再识K-近邻算法API 1.11 案例2:预测…...
Uubuntu20.04复现SA-ConvONet步骤
项目地址: tangjiapeng/SA-ConvONet: ICCV2021 Oral SA-ConvONet: Sign-Agnostic Optimization of Convolutional Occupancy Networks 安装步骤: 一、系统更新 检查系统是否已经更新到最新版本: sudo apt-get update sudo apt-get upgra…...
设计模式 三、结构型设计模式
一、代理模式 代理设计模式(Proxy Design Pattern)是一种结构型设计模式,它为其他对象提供了一个代理,以控制对这个对象的访问。 代理模式可以用于实现懒加载、安全访问控制、日志记录等功能。简单来说,代理模式 就是通…...
C语言函数实战指南:从零到一掌握函数设计与10+案例解析(附源码)
一、函数基础:程序的“积木块” (一)什么是函数? 函数是可重复使用的代码块,用于实现特定功能。如同乐高积木,通过组合不同函数,可快速构建复杂程序。例如: #include <stdio.h>// 函数定义:计算两数之和 int add(int a, int b) {return a + b; }int main() {…...
