Hbase 1.2.0 高可用 集群安装

Zookeeper 正常部署

Zookeeper 集群的正常部署并启动

解压 & 配置环境变量

[root@master src]# tar -zxvf zookeeper-3.4.5.tar.gz
[root@master src]# pwd
/usr/local/src

# 追加到环境变量
[root@master zookeeper]# vi ~/.bash_profile 
    # zookeeper
    export ZK_HOME=/usr/local/src/zookeeper-3.4.5
    export PATH=$PATH:$ZK_HOME/bin:

[root@master src]# source ~/.bash_profile

修改 zoo.cfg 文件

进入到 ZooKeeper 的 conf/ 目录下

# 拷贝 zoo_sample.cfg 并重命名为 zoo.cfg
[root@master conf]# cp zoo_sample.cfg zoo.cfg

打开 zoo.cfg 文件

# 第一处修改这个路径需要自己创建好
# example sakes.
dataDir=/usr/local/src/zookeeper-3.4.5/DataZk

# 在最后添加,指定myid集群主机及端口,机器数必须为奇数
server.1=192.168.176.48:2888:3888
server.2=192.168.176.49:2888:3888
server.3=192.168.176.50:2888:3888

修改 myid

添加 Zookeeper 用于识别当前机器的 ID

# 进入 创建的 DataZk 目录
[root@master DataZk]# echo 1 > myid
[root@master DataZk]# cat myid
1

# myid文件中为 1 ,即表示当前机器为在 zoo.cfg 中指定的 server.1

分发配置

[root@master src]scp -r /usr/local/src/zookeeper-3.4.5/ root@slave1:/usr/local/src/
[root@master src]scp -r /usr/local/src/zookeeper-3.4.5/ root@slave2:/usr/local/src/

修改其他机器的myid文件

# 在 slave1 上
root@slave1 src]# echo 2 > /usr/local/src/zookeeper/DataZk/myid

# 在 slave2 上
root@slave2 src]# echo 3 > /usr/local/src/zookeeper/DataZk/myid

启动 Zookeeper 集群

在 Zookeeper 的 bin/ 目录下启动

# 分别在 master、slave1、slave2 执行 ./zkServer.sh start
[root@master bin]# ./zkServer.sh start
JMX enabled by default
Using config: /usr/local/src/zookeeper/zookeeper-3.4.5/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

查看状态 只有其中一个是 leader ,其他的都是 follower

# master 查看状态
[root@master bin]# ./zkServer.sh status
JMX enabled by default
Using config: /usr/local/src/zookeeper/zookeeper-3.4.5/bin/../conf/zoo.cfg
Mode: leader

# slave1 查看状态
[root@slave1 bin]# ./zkServer.sh status
JMX enabled by default
Using config: /usr/local/src/zookeeper/zookeeper-3.4.5/bin/../conf/zoo.cfg
Mode: follower

# slave2 查看状态
[root@slave2 bin]# zkServer.sh status
JMX enabled by default
Using config: /usr/local/src/zookeeper/zookeeper-3.4.5/bin/../conf/zoo.cfg
Mode: follower

Hadoop 正常部署

Hadoop 集群的正常部署并启动

Hbase 安装配置

解压 & 配置环境

[root@node1 src]# tar -zxvf hbase-1.2.0-bin.tar.gz -C /usr/local/src
[root@node1 soft]# vim /etc/profile
    追加上
    # Hbase
    export HBASE_HOME=/usr/local/src/hbase-1.2.0
    export PATH=$PATH:$HBASE_HOME/bin:

[root@node1 hbase-1.2.0]# source /etc/profile

修改配置文件

hbase-env.sh 修改

# 第一处
# The java implementation to use.  Java 1.7+ required.
export JAVA_HOME=/usr/local/src/jdk1.8.0_221

# 第二处 改为 false,禁用 HBase 自带的 Zookeeper。
# Tell HBase whether it should manage it's own instance of Zookeeper or not.
export HBASE_MANAGES_ZK=false

hbase-site.xml 修改

<!-- HBase 数据存储的位置 -->
<property>
    <name>hbase.rootdir</name>
    <value>hdfs://node1:9000/HBase</value>
</property>
<!-- true 开启集群模式 --> 
<property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
</property>
 <!-- 0.98 后的新变动,之前版本没有.port,默认端口为 60000 -->
<property>
    <name>hbase.master.port</name>
    <value>16000</value>
</property>
<!-- zookeeper 地址 -->
<property>
    <name>hbase.zookeeper.quorum</name>
    <value>node1,node2,node3</value>
</property>
<!-- ZooKeeper的zoo.conf中的配置。 快照的存储位置 -->
<property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/usr/local/src/zookeeper-3.4.5/dataDir</value>
</property>

regionservers 修改

指定运行 regionservers 进程的机器。

修改 conf/ 下的 regionservers 文件,删除 原本的localhost , 加上其他节点名称。

node1
node2
node2

软连接 hadoop 配置文件到 HBase

# hadoop 的 core-site.xml & hdfs-site.xml 文件

[root@node1 conf]# ln -s /usr/local/src/hadoop-2.6.0/etc/hadoop/core-site.xml /usr/local/src/hbase-1.2.0/conf/core-site.xml
[root@node1 conf]# ln -s /usr/local/src/hadoop-2.6.0/etc/hadoop/hdfs-site.xml /usr/local/src/hbase-1.2.0/conf/hdfs-site.xml

分发配置

# 分发配置
[root@node1 conf]# for i in {2..3};do scp -r /usr/local/src/hbase-1.2.0 root@node${i}:/usr/local/src/;done

# 分发环境变量
[root@node1 conf]# for i in {2..3};do scp  root@node${i}:/etc/profile;done

# 记得去 其他机器 source /etc/profile

启动

一步一步的启动

# 首先启动 Master
[root@node1 conf] hbase-daemon.sh start master

# 然后每台机器启动 regionserver
[root@node1 conf] hbase-daemon.sh start regionserver

提示:如果集群之间的节点时间不同步,会导致 regionserver 无法启动,抛出

  • 方案一:同步时间服务
// 同步为北京时间
[root@node1 conf] yum install ntpdate
[root@node1 conf] ntpdate -u ntp.api.bz
[root@node1 conf] ntpdate ntp1.aliyun.com

// 查看时间
[root@node1 conf] date
  • 方案二:属性 hbase.master.maxclockskew 设置更大的值
<property>
    <name>hbase.master.maxclockskew</name>
    <value>180000</value>
    <description>Time difference of regionserver from
master</description>
</property>

一键启动 & 关闭

# 启动
[root@node1 conf] start-hbase.sh

# 关闭
[root@node1 conf] start-hbase.sh
stopping hbase...............

验证

Hbase WEB UI 界面:http://192.168.176.84:16010

mark

启动备用节点

Hbase 在设计之初就考虑到了高可用,所以 能非常方便的使用

只需要在 任意一台机器再启动一个 master,那这台机器就自动变成 Hbase备用Master

# 在 node2 启动一个 master
[root@node2 conf]# hbase-daemon.sh start master

mark

发表评论 / Comment

用心评论~