Hbase2.1.3分布式部署

我的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

Hbase2.1.3分布式部署_第1张图片

1.下载解压,配置环境变量

下面操作都在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

2.修改conf下的文件:hbase-env.sh,hbase-site.xml

首先将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版本就可以知道

Hbase2.1.3分布式部署_第2张图片

3.测试hbase

首先,开启Hadoop,zookeeper

在master1上执行: start-all.sh          开启Hadoop集群

在五台虚拟机上执行:zkServer.sh    开启zookeeper

开启hbase

在master1上执行: start-hbase.sh 

通过jps来查看状态

通过web来访问查看,

Hbase2.1.3分布式部署_第3张图片

关于部署碰到的问题:

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下的内容

Hbase2.1.3分布式部署_第4张图片

删除后,再重新启动hbase的master 

hbase-daemon.sh stop master
hbase-daemon.sh start master

再次通过网页查看就成功了。

 

 

 

你可能感兴趣的:(Hadoop)