使用docker安裝hbase2.1.4

版本確定

hadoop

hbase與hadoop兼容表:https://hbase.apache.org/book.html#hadoop
據當前hadoop的版本2.7.7,確定hbase的版本爲2.1.x, 那麼可以使用最新版本2.1.4.

jdk

hbase與jdk兼容表:https://hbase.apache.org/book.html#basic.prerequisites
hbase2.1.4可以使用JDK8

zookeeper

ZooKeeper 3.4.x is required.

ssh

沒有版本要求

docker基礎配置

FROM ubuntu:16.04
COPY sources.list /etc/apt/
RUN apt update
RUN apt install -y vim tzdata
RUN rm /etc/localtime && ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone
ENV TZ="Asia/Shanghai"

WORKDIR /
COPY jdk1.8.0_171 /jdk1.8.0_171
ENV JAVA_HOME=/jdk1.8.0_171
ENV PATH=$PATH:/jdk1.8.0_171/bin
RUN ln -s /jdk1.8.0_171/bin/java /usr/bin/java

ssh 配置

因爲HMaster節點要啓動HRegionServer, 是通過ssh發送命令的方式, 所以HMaster節點要能使用ssh訪問所有的HRegionServer, 所以docker需要支持ssh.
由於主機肯定有ssh, 佔用了22端口, 而docker使用的網絡模式爲host, 所以docker中ssh的端口不能是22, 需要修改.
ssh不能在命令行上帶密碼登錄, 需要配置免密登錄模式, 所有container都使用一個用戶名和key, 並且把這個key放到本機的authorized_keys裏面, 那麼所有的container都可以互相登錄了.
ssh在訪問新主機時, 默認會提示是否授受新主機, 而hbase是非交互式訪問, 需要關閉這個提示.

創建ssh key

ssh key創建後就不應該變化 , 不能在打包的時候創建, 不然每次打包後, 所有的節點都需要重啓纔行, 所以手動創建key, 然後複製到鏡像中.

mkdir -p ssh-keys && ssh-keygen -t rsa -P '' -f ssh-keys/id_rsa -C "hbase" && cat ssh-keys/id_rsa.pub > ssh-keys/authorized_keys && chmod 0600 ssh-keys/authorized_keys

在Dockerfile中增加ssh配置

RUN apt install -y ssh
RUN sed -i "/StrictHostKeyChecking/d" /etc/ssh/ssh_config && echo "StrictHostKeyChecking no" >> /etc/ssh/ssh_config
RUN sed -i "/Port/d" /etc/ssh/sshd_config && echo "Port 5022" >> /etc/ssh/sshd_config
COPY ssh-keys /root/.ssh

#安裝hbase2.1.4
這個直接將目錄複製過來就可以了

WORKDIR /hbase
COPY hbase-2.1.4 .
ENV HBASE_HOME=/hbase

#修改hbase配置
按照慣例, 容器啓動時把配置文件映射出來, 使用指定的配置.
從hbase目錄下把conf目錄複製出來, 對其進行配置.
修改hbase-env.sh, 指定jdk目錄和ssh端口號, 使用外部zookeeper

export JAVA_HOME=/jdk1.8.0_171
export HBASE_SSH_OPTS="-p 5022"
export HBASE_MANAGES_ZK=false

修改hbase-site.xml, 使用分佈式模式, 指定hbase數據存放在hdfs中, 指定zookeeper地址

<configuration>
<property>
  <name>hbase.cluster.distributed</name>
  <value>true</value>
</property>
<property>
  <name>hbase.rootdir</name>
  <value>hdfs://192.168.1.26:9000/hbase</value>
</property>
  <property>
    <name>hbase.zookeeper.quorum</name>
    <value>192.168.1.22:15301,192.168.1.22:15302,192.168.1.22:15303</value>
  </property>
<!--指定各種端口號 -->
<property>
  <name>hbase.master.port</name>
  <value>30010</value>
</property>
<property>
  <name>hbase.master.info.port</name>
  <value>30020</value>
</property>

<property>
  <name>hbase.regionserver.port</name>
  <value>30030</value>
</property>
<property>
  <name>hbase.regionserver.info.port</name>
  <value>30040</value>
</property>
</configuration>

修改regionservers, 增加region server的地址列表

192.168.1.26

將config目錄整個複製到/home/mo/sjfx-hbase-data/目錄下, 以便後期使用.

啓動Region節點

region服務只要啓動ssh就可以了, 後續由master節點來管理

#/bin/sh
docker stop sjfxhbase-region
docker rm sjfxhbase-region
docker run -d --name sjfxhbase-region --net=host \
  -v /home/mo/sjfx-hbase-data/config:/hbase/conf  \
  -v /home/mo/sjfx-hbase-data/region-logs:/hbase/logs  \
  sjfxhbase:v1 sh -c "service ssh start && tail -f /dev/null"

啓動Master節點

#/bin/sh
docker stop sjfxhbase-master
docker rm sjfxhbase-master
docker run -d --name sjfxhbase-master --net=host \
  -v /home/mo/sjfx-hbase-data/config:/hbase/conf  \
  -v /home/mo/sjfx-hbase-data/master-logs:/hbase/logs  \
  sjfxhbase:v1 sh -c "/hbase/bin/start-hbase.sh && tail -f /dev/null"

Master節點啓動日誌發現錯誤:Failed construction RegionServer
解決方法參考文檔:https://blog.csdn.net/crazyman2010/article/details/88911912

測試

docker exec -it sjfxhbase-master sh -c "./bin/hbase shell"
2019-06-05 11:23:24,066 WARN  [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
HBase Shell
Use "help" to get list of supported commands.
Use "exit" to quit this interactive shell.
For Reference, please visit: http://hbase.apache.org/2.0/book.html#shell
Version 2.1.4, r5b7722f8551bca783adb36a920ca77e417ca99d1, Tue Mar 19 19:05:06 UTC 2019
Took 0.0063 seconds                                                                                                                                                                        
hbase(main):001:0>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章