Docker创建的集群下使用ansible部署hbase

基于安装好的hadoop和zookeeper集群部署hbase
Docker创建的集群下使用ansible部署hadoop
Docker创建的集群下使用ansible部署zookeeper

OShostnameIP
Centos7cluster-master172.18.0.2
Centos7cluster-slave1172.18.0.3
Centos7cluster-slave1172.18.0.4
Centos7cluster-slave1172.18.0.5

在cluster-master上制作hbase安装包

下载

创建~/install/hbase目录,并将软件包现在到这个目录,依然使用国内镜像下载。

[root@cluster-master hbase]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/stable/hbase-1.2.6-bin.tar.gz

修改配置

解压hbase-1.2.6-bin.tar.gz,从中提取配置文件
hbase-env.sh
hbase-site.xml
regionservers
保存在~/install/hbase/conf目录下

hbase-env.sh

添加log文件和pid文件路径,并禁用自带zookeeper

export HBASE_LOG_DIR=${HBASE_HOME}/logs
export HBASE_PID_DIR=/var/hbase/pids
export HBASE_MANAGES_ZK=false

hbase-site.xml

<configuration>
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://cluster-master:9000/hbase</value>
    </property>
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>cluster-master,cluster-slave1,cluster-slave2,cluster-slave3</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <property>
        <name>hbase.zookeeper.property.dataDir</name>
        <value>/home/zookeeper/data</value>
    </property>
    <property>
        <name>hbase.tmp.dir</name>
        <value>/home/hbase/data/tmp</value>
    </property>
</configuration>

hbase.zookeeper.property.dataDir项填写zookeeper的data路径
hbase.tmp.dir项定义hbase的tmp目录

regionservers

配置了3个regionserver

[root@cluster-master conf]# cat regionservers
cluster-slave1
cluster-slave2
cluster-slave3

设置环境变量

将hbase的环境变量添加到~/.bashrc中,并拷贝.bashrc到~/install/hbase下,文件名改为bashrc

# hbase
export HBASE_HOME=/opt/hbase
export PATH=$HBASE_HOME/bin:$PATH

创建ansible-playbook

需要将软件包和修改后的hbase配置文件以及环境变量文件分发到slave主机,并使环境变量生效;此外还需要创建配置文件中涉及的路径,yaml内容保存到~/install/hbase/install-hbase.yaml中。

---
- hosts: cluster
  tasks:
    - name: unarchive hbase
      unarchive: src=./hbase-1.2.6-bin.tar.gz dest=/opt

    - name: create link
      file: src=/opt/hbase-1.2.6 dest=/opt/hbase state=link

    - name: create dir
      file: path={{ item }} state=directory
      with_items:
      - /home/hbase/data/tmp
      - /var/hbase/pids
      - /opt/hbase/logs

    - name: copy bashrc
      copy: src=./bashrc dest=~/.bashrc
      notify: exec source

    - name: copy config file
      copy: src=./conf dest=/opt/hbase

  handlers:
    - name: exec source
      shell: source ~/.bashrc

部署hbase

使用ansible-playbook执行install-hbase.yaml完成hbase的部署工作。

[root@cluster-master hbase]# ansible-playbook install-hbase.yaml

启动

在cluster-master上进行启动集群

[root@cluster-master bin]# ./start-hbase.sh
[root@cluster-master bin]# jps
19842 HMaster
19018 ResourceManager
20604 Jps
11293 QuorumPeerMain
6462 SecondaryNameNode
6270 NameNode

总结

对部署hadoop和zookeeper的部署方式进行了改进,将部署文件单独存放,并将部署动作全部放在yaml中,使部署更加便捷.

相关推荐