Docker實戰之安裝配置HBase-1.2.2完全分散式叢集
阿新 • • 發佈:2018-11-05
環境配置
VM:VMware Workstation
OS:Ubuntu 14.04 LTS
HBASE:hbase-1.2.2
HBase叢集規劃
172.17.0.5 hmaster
172.17.0.6 regionserver1
172.17.0.7 regionserver2
192.168.162.129 zkhost1
基於Dockerfile構建HBase基礎映象
建立Dockerfile檔案,內容如下 :
FROM ubuntu:14.04 MAINTAINER Rain <> ENV REFRESHED_AT 2016-09-15 RUN apt-get update RUN apt-get install -y openssh-server openssh-client ADD jdk-7u80-linux-x64.tar.gz /usr/local/ ENV JAVA_HOME /usr/local/jdk1.7.0_80 ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar ENV PATH $PATH:$JAVA_HOME/bin RUN addgroup hadoop RUN useradd -m hadoop -g hadoop -p qazwsx ADD hbase-1.2.2-bin.tar.gz /usr/local/ RUN chown -R hadoop:hadoop /usr/local/hbase-1.2.2 RUN cd /usr/local && ln -s ./hbase-1.2.2 hbase ENV HBASE_HOME /usr/local/hbase ENV PATH ${HBASE_HOME}/bin:$PATH RUN cd /etc/sudoers.d && sudo touch nopasswdsudo && echo "hadoop ALL=(ALL) NOPASSWD : ALL" >> nopasswdsudo RUN mkdir /var/run/sshd USER hadoop RUN ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa RUN cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys EXPOSE 22
構建基礎映象:
$ sudo docker build -t="rain:hbase-base" .
從映象啟動容器:
$ sudo docker run -t -i rain:hbase-base /bin/bash
基於Dockerfile構建HBase主映象
建立Dockerfile檔案,內容如下 :
構建HBase Master映象:FROM rain:hbase-base MAINTAINER Rain <> ENV REFRESHED_AT 2016-09-15 ADD hbase-env.sh $HBASE_HOME/conf/ ADD hbase-site.xml $HBASE_HOME/conf/ ADD regionservers $HBASE_HOME/conf/ RUN sudo chown -R hadoop:hadoop $HBASE_HOME/conf RUN sudo mkdir -p /opt/hadoop/data/zookeeper RUN sudo chown -R hadoop:hadoop /opt/hadoop WORKDIR /home/hadoop COPY bootstrap.sh /home/hadoop/ RUN sudo chown -R hadoop:hadoop /home/hadoop RUN sudo chmod 766 /home/hadoop/bootstrap.sh ENTRYPOINT ["/home/hadoop/bootstrap.sh"] #EXPOSE 16000 16010 16020 16030
</pre><pre name="code" class="plain">$ sudo docker build -t="rain:hmaster" .
啟動容器:
$ sudo docker run -t -i --name hmaster -h hmaster -d -P -p 16010:16010 rain:hmaster
建立Dockerfile檔案,內容同HBase Master映象。
編輯bootstrap.sh用於啟動ssh:
#!/bin/bash
sudo /usr/sbin/sshd -D
構建HBase Region Server映象:
$ sudo docker build -t="rain:regionserver" .
啟動容器:
$ sudo docker run -t -i --name regionserver1 -h regionserver1 -d rain:regionserver
$ sudo docker run -t -i --name regionserver2 -h regionserver2 -d rain:regionserver
與HBase Master和Region Servers互動
操作命令如下:
$ sudo docker exec -it hmaster /bin/bash
$ sudo docker exec -it regionserver1 /bin/bash
$ sudo docker exec -it regionserver2 /bin/bash
配置Host編寫指令碼:
[email protected]:~$ vi run_hosts.sh
內容如下:
#!/bin/bash
echo 172.17.0.2 hadoop-master >> /etc/hosts
echo 172.17.0.5 hmaster >> /etc/hosts
echo 172.17.0.6 regionserver1 >> /etc/hosts
echo 172.17.0.7 regionserver2 >> /etc/hosts
echo 192.168.162.129 zkhost1 >> /etc/hosts
執行指令碼:
[email protected]:~$ chmod +x run_hosts.sh
[email protected]:~$ sudo ./run_hosts.sh
複製指令碼到其它兩個Region Server節點,並執行指令碼:
[email protected]:~$ scp run_hosts.sh regionserver1:/home/hadoop/
[email protected]:~$ scp run_hosts.sh regionserver1:/home/hadoop/
HBase叢集操作:
$ bin/start-hbase.sh
節點啟動成功後,可以在相應節點上看到下面程序:
[email protected]:/usr/local/hbase$ jps
715 HMaster
992 Jps
[email protected]:~$ jps
247 HRegionServer
423 Jps
[email protected]:~$ jps
264 HRegionServer
486 Jps
通過宿主機訪問WEB控制檯:
http://宿主機IP:16010
介面效果圖:
HBase配置檔案:
hbase-env.sh:
編輯內如下:
export JAVA_HOME=/usr/local/jdk1.7.0_80
export HBASE_MANAGES_ZK=false
hbase-site.xml:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
-->
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://hadoop-master:8020/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>zkhost1</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/opt/hadoop/data/zookeeper</value>
</property>
</configuration>
regionservers:
hregionserver1
hregionserver2
------------------------結束-------------------