美文网首页
使用docker安装hbase2.1.4

使用docker安装hbase2.1.4

作者: 阿亚2011 | 来源:发表于2019-06-05 11:30 被阅读0次

    版本确定

    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>
    

    相关文章

      网友评论

          本文标题:使用docker安装hbase2.1.4

          本文链接:https://www.haomeiwen.com/subject/fwglxctx.html