安装

这里使用3台机器。

192.168.1.103
192.168.1.104
192.168.1.105

  1. hbase 依赖于hadoop和zookeeper,所以这2个组件需要提前安装。

  2. 下载hbase

https://archive.apache.org/dist/hbase/

这里使用的版本是 2.4.0

https://archive.apache.org/dist/hbase/2.4.0/

下载文件

  1. 解压文件
1
tar -zxvf hbase-2.4.0-bin.tar.gz -C  /usr/local/software/hbase
  1. 3台机器上都做此种操作,或将文件同步到其他机器上。

  2. 配置环境变量

1
sudo vim /etc/profile.d/my_env.sh

1
source /etc/profile

三台机器都需要执行此操作。

  1. 修改habse配置文件

找到HBAE_HOME/conf目录下的配置文件 hbase-env.sh。

1
2
3
# Tell HBase whether it should manage it's own instance of ZooKeeper or not.
export HBASE_MANAGES_ZK=false

将此值给为false,因为hbase内部也用一个zk实例,修改成不用它内部的实例而使用外部的zk。

找到HBAE_HOME/conf目录下的配置文件 hbase-site.xml

集群模式改成分布式

添加zk 配置和 hadoop的配置,其中hadoop1 hadoop2 hadoop3 是写到host文件中的。

注意:配置的hdfs为 hdfs的namenode地址。

完整配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>

<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop1,hadoop2,hadoop3:2181</value>
<description>The directory shared by RegionServers.
</description>
</property>


<property>
<name>hbase.rootdir</name>
<value>hdfs://hadoop1:9820/hbase</value>
<description>The directory shared by RegionServers.
</description>
</property>

<property>
<name>hbase.tmp.dir</name>
<value>./tmp</value>
</property>
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>


编辑 conf/regionservers 文件

此文件中维护集群的各个节点host信息。

1
vim conf/regionservers 

将内部的默认的localhost 换成3个集群的host

1
2
3
hadoop1
hadoop2
hadoop3

注意:所有修改的配置3台节点都要同步。可以使用xync 命令或scp 命令同步,或编写同步脚本同步。

  1. 配置backup master 服务。

上面的配置只是完成了 master 和region 的正常启动的配置,但是如果master挂了,服务将不可用,hbase支持再配置一个 backup master 当master挂了后,可以将backhup master切换成mater

在conf 下创建一个backup master 配置文件

1
2
3
touch backup-masters
echo hadoop3 > backup-masters
xsync backup-masters
  1. 启动服务

服务启动和关闭的相关脚本都放在bin 目录文件下。

开启集群服务

1
./start-hbase.sh

会有一个日志相关的错误,有2个sl4j的绑定。

首先关闭集群,处理下这个错误,需要将 client-facing-thirdparty/slf4j-log4j12-1.7.30.jar 这个日志实现禁用掉。

1
./stop-hbase.sh

注意:这个启动和关闭集群脚本会自动启动各个节点的服务

进入目录 ${hbase_home}/lib/client-facing-thirdparty

执行命令

1
mv slf4j-log4j12-1.7.30.jar slf4j-log4j12-1.7.30.jar.bak

同步3个机器

1
xsync slf4j-log4j12-1.7.30.jar.bak

再次执行启动命令,将看不到这个日志的警告信息。

使用jps 可以观察节点得分布情况。

hmaser 在某一个节点上,regionServer 每个节点一个服务。

注意: start-hbase.sh 和 stop-hbase.sh 这2个脚本是管理整个集群的服务的。
如果要单节点运行,那么需要运行 hbase-daemon.sh start master hbase-daemon.sh start regionserver 来指定启动master 或region服务。

  1. 查询web页面。

默认端口号是16010

可通过浏览器访问那么也表示服务启动成功。