我的Hadoop版本为2.7.6,jdk为1.8版本的,都和Hbase2.1.3兼容,部署在Cento7上,我将在五台虚拟机上测试部署 ( master1,master2, slave1,slave2,slave3 )
具体可以查看官网的给的表:http://hbase.apache.org/book.html#java, http://hbase.apache.org/book.html#hadoop
下面操作都在master1上操作,操作完成后再通过scp 传到其他几台虚拟机上
# 使用wget下载
wget https://www-us.apache.org/dist/hbase/2.1.3/hbase-2.1.3-bin.tar.gz
tar -zxvf hbase-2.1.3-bin.tar.gz # 解压
vim /etc/profile # 编辑文件,添加下面内容(Hbase的路径)
export HBASE_HOME=/usr/local/hbase # hbase路径
export PATH=$PATH:$HBASE_HOME/bin
配置hbase之前,我的Hadoop和zookeeper都已经配置好了。参考下面两篇博客
https://blog.csdn.net/rongDang/article/details/88098476
https://blog.csdn.net/rongDang/article/details/87867442
在 /etc/profile 添加完hbase的路径后,要使环境变量生效,source /etc/profile
首先将Hadoop中的两个文件: hdfs-site.xml和core-site.xml 文件复制到 hbase的conf 目录下。这样是告诉hbase,HDFS文件目录在哪,这两个文件中包含HDFS的目录信息
# 该操作在hbase的conf目录下执行
cp /usr/local/hadoop/etc/hadoop/hdfs-site.xml ./
cp /usr/local/hadoop/etc/hadoop/core-site.xml ./
修改hbase-env.sh文件
# 指定jdk的路径
export JAVA_HOME=/usr/local/jdk
# 不使用hbase自带的zookeeper
export HBASE_MANAGES_ZK=false
修改hbase-site.xml文件
hbase.rootdir
hdfs://master1:9000/hbase
hbase.cluster.distributed
true
hbase.zookeeper.quorum
master1,master2,slave1,slave2,slave3
hbase.zookeeper.property.dataDir
/usr/local/hbase/data
hbase.tmp.dir
/usr/local/hbase/tmp
zookeeper.znode.parent
/hbase
hbase.zookeeper.property.clientPort
2181
我的hbase-site.xml是这样设置的,因为是第一次部署出了很多问题,所以在百度上查了很多的内容,病急乱投医,site文件就改了这么多,捣鼓着,就配置好了
修改regionservers文件
这个文件和Hadoop中的slaves文件类似,改文件中写你要做为RegionServer的主机名,或主机地址,这里我将master2,slave1,slave2,slave3作为region服务器。
master2
slave1
slave2
slave3
上面操作都完成后,将hbase文件夹传到其他四台虚拟机上,同理,其他四台虚拟机也要修改 /etc/profile 文件。
scp -r /usr/local/hbase root@master2:/usr/local/
关于环境变量有没有配置好,通过 hbase version 查看hbase版本就可以知道
首先,开启Hadoop,zookeeper
在master1上执行: start-all.sh 开启Hadoop集群
在五台虚拟机上执行:zkServer.sh 开启zookeeper
开启hbase
在master1上执行: start-hbase.sh
通过jps来查看状态
通过web来访问查看,
关于部署碰到的问题:
web访问时报 InvalidProtocolBufferException 错误:参考https://www.cndba.cn/dave/article/3325
查看hbase下logs中的日志文件,对应内容如下:
2019-03-18 22:15:00,556 INFO [main] master.HMaster: hbase.rootdir=hdfs://master1:9000/hbase, hbase.cluster.distributed=true
2019-03-18 22:15:00,655 INFO [master/master1:16000:becomeActiveMaster] master.HMaster: Adding backup master ZNode /hbase/backup-masters/master1,16000,1552961693744
2019-03-18 22:15:01,003 INFO [master/master1:16000:becomeActiveMaster] master.ActiveMasterManager: Another master is the active master, null; waiting to become the next active master
master.ActiveMasterManager: Another master is the active master, null; waiting to become the next active master
这里的null值是导致异常的主要原因。
因为Hbase的信息是存储在Zookeeper中的,之前测试的结果可能对这里产生了影响,所以连上Zookeeper,把/hbase目录删除了。
zkCli.sh # 进入zookeeper
get /hbase
rmr /hbase # 递归删除hbase下的内容
删除后,再重新启动hbase的master
hbase-daemon.sh stop master
hbase-daemon.sh start master
再次通过网页查看就成功了。