写在前面:搭Hbase条件要求挺高,要确认zookeeper搭好没问题+Hadoop HA搭好没问题,以及时间必须同步。至于其他小坑都不提了,就简单写个总结。
1: 确认JDK版本和Hadoop版本
http://hbase.apache.org/1.2/book.html#basic.prerequisites
jdk: 除了8以外都有issue,这里就用jdk8
hadoop:
hbase2.1.x后的版本支持hadoop3.1.1+ ,那用Hadoop 3.3.0没问题
2:准备工作
Zookeeper :https://blog.csdn.net/l1682686/article/details/107998554
Hadoop -HA:https://blog.csdn.net/l1682686/article/details/107997323
3:HBase 下载
http://mirrors.hust.edu.cn/apache/hbase/stable/hbase-2.2.4-bin.tar.gz
这里用的2.2.4版本,下载,解压。
4:修改配置文件
hbase/conf/hbase-env.sh
懒了,直接用GHOME修改不香吗 cd来cd去的 还要想想vim怎么退出
添加以下内容:
export JAVA_HOME=/home/hadoop/app/jdk
export HBASE_OPTS="$HBASE_OPTS -XX:+UseConcMarkSweepGC"
(GC相关,可不加)
export HBASE_MANAGES_ZK=false
(关闭自带的zkserver)
conf/hbase-site.xml
<configuration>
<property>
<!-- 指定 hbase 在 HDFS 上存储的路径 -->
<name>hbase.rootdir</name>
<value>hdfs://cluster1/hbase</value>
</property>
<property>
<!-- 指定 hbase 是分布式的 -->
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<!-- 指定 zk 的地址,多个用“,”分割 -->
<name>hbase.zookeeper.quorum</name>
<value>master:2181,worker1:2181,worker2:2181</value>
</property>
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>
</configuration>
修改regionservers:
(就是各台虚拟机的hostname)
在conf/ 下新增一个backup-masters文件:
5:分发Hbase & 配置环境变量
分发Hbase到其他虚拟机上:
scp -r hbase/ hadoop@worker1:$PWD
scp -r hbase/ hadoop@worker2:$PWD
配置环境变量:
在每台机器上,
vim ~/.bashrc
6:启动HBase集群
先启动Zookeeper集群:
zkServer.sh start
zkServer.sh status
再启动hdfs:
start-dfs.sh
再起个yarn:
start-yarn.sh
检查节点状态:
都没什么问题的话,就启动HBase。
start-hbase.sh
检查HBase启动状态:
master:
worker2:
worker1:
可以看到,在每台机器上都起了HRegionServer。而在master和设置的back-master节点worker1上启动了HMaster。
可以在浏览器看到:
全文完。
踩坑记录1:
HMaster没启起来,看日志报
master.HMaster: Failed to become active master
解决方法:
在配置文件 hbase-site.xml中添加:
hbase.unsafe.stream.capability.enforce
false
踩坑记录2:
HRegionServer没起起来,进去看报错
Caused by: java.net.BindException: Address already in use
解决方法:
执行 bin/start-hbase.sh 后,在hmaster 节点上执行 bin/local-regionservers.sh
start 1(2,3,4…) 启动regionserver1,2,3,4表示偏移量 默认端口是 16020 加上偏移量之后启用16021端口,解决端口冲突