基于安装好的hadoop和zookeeper集群部署hbase
Docker创建的集群下使用ansible部署hadoop
Docker创建的集群下使用ansible部署zookeeper
OS | hostname | IP |
---|---|---|
Centos7 | cluster-master | 172.18.0.2 |
Centos7 | cluster-slave1 | 172.18.0.3 |
Centos7 | cluster-slave1 | 172.18.0.4 |
Centos7 | cluster-slave1 | 172.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中,使部署更加便捷.