准备
hadoop版本:hadoop-3.2.2
zookeeper版本:apache-zookeeper-3.5.8-bin
hbase版本:hbase-2.4.17
jdk版本:jdk1.8.0_281
前提:在已部署好hadoop,zookeeper的集群上进行搭建
hadoop搭建参考: https://blog.csdn.net/SUMU31707/article/details/119845009?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-5-119845009-blog-127474350.235v43pc_blog_bottom_relevance_base2&spm=1001.2101.3001.4242.4&utm_relevant_index=6#t15
zookeeper搭建参考: https://blog.csdn.net/weixin_40612128/article/details/123271578?spm=1001.2014.3001.5502
上传 hbase-2.4.17-bin.tar.gz 安装包并解压到 /opt/module 目录下
配置 HBASE_HOME
修改hbase-env.sh
vim /opt/module/hbase-2.4.17/conf/hbase-env.sh
配置环境变量:
export JAVA_HOME=/opt/module/jdk1.8.0_281
export HBASE_MANAGES_ZK=false
修改hbase-site.xml
vim /opt/module/hbase-2.4.17/conf/hbase-site.xml
以下是几个比较重要的配置信息说明:
hbase.rootdir
这个目录是region server的共享目录,用来持久化HBase。URL需要是’完全正确’的。例如,要表示hdfs中的’/hbase’目录,namenode 运行在namenode.example.org的9090端口。则需要设置为hdfs://namenode.example.org:9000/hbase。默认情况下HBase是写到/tmp的。不改这个配置,数据会在重启的时候丢失。
默认: file:///tmp/hbase-${user.name}/hbase
hbase.master.port
HBase的Master的端口.
hbase.cluster.distributed
HBase的运行模式。false是单机模式,true是分布式模式。若为false,HBase和Zookeeper会运行在同一个JVM里面。
hbase.zookeeper.quorum
Zookeeper集群的地址列表,用逗号分割。例如:“host1.mydomain.com,host2.mydomain.com,host3.mydomain.com”.默认是localhost,是给伪分布式用的。要修改才能在完全分布式的情况下使用。如果在hbase-env.sh设置了HBASE_MANAGES_ZK,这些ZooKeeper节点就会和HBase一起启动。
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://hbase01:8020/hbase</value>
</property>
<property>
<name>hbase.master.port</name>
<value>16000</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>hbase01:2181,hbase02:2181,hbase03:2181</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/opt/module/apache-zookeeper-3.5.8-bin/tmp</value>
</property>
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>
修改 regionservers 文件
vim /opt/module/hbase-2.4.17/conf/regionservers
添加集群节点主机名( 不能有多余空格 )
修改环境变量文件
此处环境变量文件为自己在 /etc/profile.d/ 目录下创建的 dev_env.sh 文件。如果环境变量在 /etc/profile 中修改了,直接在 /etc/profile 即可
sudo vim /etc/profile.d/dev_env.sh
加入hbase环境:
#hbase
export HBASE_HOME=/opt/module/hbase-2.4.17
export PATH=$PATH:$HBASE_HOME/bin
export PATH=$PATH:$HBASE_HOME/sbin
使生效:
source /etc/profile
拷贝文件至其他节点
采用 scp 或者使用 xsync 脚本分发 /opt/module/hbase 至剩下的两个节点。
启动
启动habse时,由于hbase依赖于hdfs和zookeeper,所以要先启动hadoop和zookeeper,然后再启动hbase。
hadoop 启动
启动namenode,secondarynamenode,datanode
sbin/hadoop-daemon.sh start namenode
sbin/hadoop-daemon.sh start secondarynamenode
sbin/hadoop-daemon.sh start datanode
或者:
sbin/start-dfs.sh
启动resourcemanager,nodemanager
sbin/yarn-daemon.sh start resourcemanager
sbin/yarn-daemon.sh start nodemanager
或者:
sbin/start-yarn.sh
zookeeper启动
zkServer.sh start
hbase启动
start-hbase.sh
web访问端口16010
在停止集群进程的时候,要先停HBase集群进程,再停止Zookeeper集群和Hadoop集群,否则HBase停止程序会一直卡住不动,这种情况就需要使用kill命令强制杀进程了。
hbase初次执行报错
Error: Could not find or load main class org.apache.hadoop.hbase.util.GetJavaProperty
问题原因是:因为 Hbase 没有将其自身的依赖包添加到 classpath 配置路径所以才会导致找不到自身主类的报错, 添加上就可以了然后保存退出 即可
vim /opt/module/hbase-2.4.17/bin/hbase #编辑hbase原文件,此处应是你自身安装Hbase的路径
在161行出修改:
CLASSPATH="${HBASE_CONF_DIR}"
CLASSPATH=${CLASSPATH}:$JAVA_HOME/lib/tools.jar:/opt/module/hbase-2.4.17/lib/*
#分隔符用":",将hbase自身的类文件引入class path
hbase shell
直接在命令行中输入hbase shell