illustation

hbase配置

安装环境

  • 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
2
3
4
5
6
tar -xzvf hbase-2.3.3-bin.tar.gz
cd hbase-2.3.3/
# 修改三个配置文件
vim conf/hbase-site.xml
vim conf/regionservers
vim conf/hbase-env.sh

参考官网手册

hbase-site.xml:

hbase.rootdir的端口和hadoop中core-site.xml里fs.defaultFS的端口一致,有的版本是8020

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>slave1,slave2,slave3</value>
</property>
</configuration>

regionsevers:

1
2
3
slave1
slave2
slave3

hbase-env.sh:

1
2
export HBASE_MANAGES_ZK=true  # 这里采用hbase内置的zookeeper
export JAVA_HOME=/home/hjy/software/java/jdk1.8.0_201 # 自己的jdk路径

复制hadoop配置

官网上提供了三中方式,其中最简单的还是第二种,

将hadoop中hdfs-site.xml复制到conf下

1
cp ../hadoop-3.1.4/etc/hadoop/hdfs-site.xml conf/

配置环境变量

所有节点都要配置

打开/etc/profile~/.bashrc,添加:

1
2
export HBASE_HOME=/home/hjy/software/hbase-2.3.3/
export PATH=$PATH:$HBASE_HOME/bin

source ~/.bashrc 刷新配置

拷贝hbase到其它节点

1
2
3
scp -r ../hbase-2.3.3/ slave1:/home/hjy/software/
scp -r ../hbase-2.3.3/ slave2:/home/hjy/software/
scp -r ../hbase-2.3.3/ slave3:/home/hjy/software/

启动hbase

1
2
start-dfs.sh		# 启动hadoop
start-hbase.sh # 启动hbase

使用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
2
3
4
5
6
7
2020-11-24 19:52:59,806 WARN  [regionserver/slave1:16020] regionserver.HRegionServer: Unable to connect to master. Retrying. Error was:
java.net.UnknownHostException: can not resolve hjy-thinkpad-t470p,16000,1606218112070
at org.apache.hadoop.hbase.ipc.AbstractRpcClient.createAddr(AbstractRpcClient.java:430)
at org.apache.hadoop.hbase.ipc.AbstractRpcClient.createBlockingRpcChannel(AbstractRpcClient.java:508)
at org.apache.hadoop.hbase.regionserver.HRegionServer.createRegionServerStatusStub(HRegionServer.java:2689)
at org.apache.hadoop.hbase.regionserver.HRegionServer.reportForDuty(HRegionServer.java:2737)
at org.apache.hadoop.hbase.regionserver.HRegionServer.run(HRegionServer.java:987)

由于slave虚拟机无法解析master的hostname,所以无法链接master所产生的问题

我的主机master的hostname(hjy-ThinkPad-T470p)和hosts中设置的域名(master)并不相同,而三个slave的hostname和域名都叫slave

下面是我的hosts文件

1
2
3
4
5
6
7
8
127.0.0.1   localhost
# 127.0.1.1 hjy-ThinkPad-T470p # hostname

# hadoop
10.177.82.86 master hjy-ThinkPad-T470p
10.177.82.88 slave1
10.177.82.89 slave2
10.177.82.90 slave3