安装环境
- Ubuntu 18.04 LTS(主机+3台虚拟机)
- hadoop-3.1.4
- java: openjdk 11.0.9.1
- 节点: master,slave1,slave2,slave3
下载hbase
下载hbase前要注意版本的对应关系
在官网有版本对应表
hbase和jdk的对应关系:(亲测openjdk11不能用)
hbase和hadoop的对应关系
我这里选择hbase-2.3
安装并配置hbase
修改配置文件
我安装在~/software
目录下
1 | tar -xzvf hbase-2.3.3-bin.tar.gz |
参考官网手册
hbase-site.xml:
hbase.rootdir的端口和hadoop中core-site.xml里fs.defaultFS的端口一致,有的版本是8020
1 | <configuration> |
regionsevers:
1 | slave1 |
hbase-env.sh:
1 | export HBASE_MANAGES_ZK=true # 这里采用hbase内置的zookeeper |
复制hadoop配置
官网上提供了三种方式,其中最简单的还是第二种,
将hadoop中hdfs-site.xml复制到conf下
1 | cp ../hadoop-3.1.4/etc/hadoop/hdfs-site.xml conf/ |
配置环境变量
所有节点都要配置
打开/etc/profile
或~/.bashrc
,添加:
1 | export HBASE_HOME=/home/loli/software/hbase-2.3.3/ |
source ~/.bashrc
刷新配置
拷贝hbase到其它节点
1 | scp -r ../hbase-2.3.3/ slave1:/home/loli/software/ |
启动hbase
1 | start-dfs.sh # 启动hadoop |
使用jps
查看是否启动成功,master节点会有HMaster
,其它节点(在regionsevers中的)会有HRegionServer
最后,浏览器上打开http://master:16010/master-status
查看节点状态
配置成功!
配置过程中的错误
在启动hadoop的时候打开master:9870,livenodes显示3个,点进去只看到一个
三个虚拟机复制镜像后,没有改主机名,所以只识别出了一个
在/etc/hostname
下,分别改为slave1,slave2,slave3
/usr/local/hadoop/libexec/hadoop-functions.sh: 行 2360: HADOOP_ORG.APACHE.HADOOP.HBASE.UTIL.GETJAVAPROPERTY_USER:无效的变量名
在hbase-env.sh
中添加一行
1 | export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP="true" |
参考这篇博客
Hbase region in transition且region severs一个也没有
网上查了一下,很多原因导致这个错误,我最后是通过查日志解决的,master的日志没出现问题,在slave的日志中查到:
1 | 2020-11-24 19:52:59,806 WARN [regionserver/slave1:16020] regionserver.HRegionServer: Unable to connect to master. Retrying. Error was: |
由于slave虚拟机无法解析master的hostname,所以无法链接master所产生的问题
我的主机master的hostname(loli-ThinkPad-T470p)和hosts中设置的域名(master)并不相同,而三个slave的hostname和域名都叫slave
下面是我的hosts文件
1 | 127.0.0.1 localhost |