在Ubuntu 14.04上的zookeeper+HBase集群配置

环境介绍

  • 系统:Ubuntu14.04 64位
  • zookeeper版本:zookeeper-3.4.8
  • hbase版本:hbase-1.2.2
  • 集群环境:
角色 hostname IP
master master 192.168.1.112
slave1 slave1 192.168.1.123
slave2 slave2 192.168.1.121

同步集群时间

注:必须得同步时间,不然会有节点启动不起来

master端配置

  • 先确保时区正确,中国是在东八区(CST),如果时区不正确需要先设置好时区

    • sudo tzselect
    • 选择 Asia => China => Beijing
    • sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  • 安装 ntp
    sudo apt-get install ntp

  • 修改 /etc/ntp.conf
    注释掉原来所有的 server 开头的项,添加:

    server 127.127.1.0
  • 重启 ntp 服务
    sudo service ntp restart

slave端配置

注:在slave1和slave2中都要配置

  • 安装ntp
    sudo apt-get install ntp

  • 修改 /etc/ntp.conf
    注释掉所有的以 server 开头的项,添加:

    server master prefer
  • 重启 ntp 服务
    sudo service ntp restart

  • 查看时间偏移
    ntpq -p
    其中的 offset 是 本机 和 master 之间的时间差,单位为 ms

  • 强制同步时间
    sudo ntpdate -u master
    一段时间后,slave 就会和 master保持同步了
    你可以再次查看时间偏移
    ntpq -p

zookeeper配置

  • 配置环境变量

    
    #for zookeeper
    
    export ZOOKEEPER_HOME=/opt/zookeeper-3.4.8
    export PATH=$ZOOKEEPER_HOME/bin:$PATH
  • 使环境变量生效
    source /etc/profile

  • 解压zookeeper-3.4.8.tar.gz 到 /opt 目录下
    sudo tar -zxf zookeeper-3.4.8.tar.gz -C /opt

  • 赋予权限
    sudo chown -R wlw:wlw /opt/zookeeper-3.4.8
    第一个wlw是你的用户名
    第二个wlw是你的组名

  • 进入zookeeper-3.4.8目录,在里面创建data和logs文件夹
    cd /op/zookeeper-3.4.8
    mkdir data
    mkdir logs

  • 复制配置文件
    cd conf/
    cp zoo_sample.cfg zoo.cfg

  • 修改配置文件zoo.cfg
    vim zoo.cfg

    clientPort=2181 #客户端连接端口
    tickTime=2000
    initLimit=5
    syncLimit=2
    dataDir=/opt/zookeeper-3.4.8/data #数据目录
    dataLogDir=/opt/zookeeper-3.4.8/logs #日志目录
    server.0=master:2888:3888
    server.1=slave1:2888:3888
    server.2=slave2:2888:3888

    注:

    • tickTime:Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳

    • initLimit:Zookeeper的Leader 接受客户端(Follower)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 5个心跳的时间长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒

    • syncLimit:表示 Leader 与 Follower 之间发送消息时请求和应答时间长度,最长不能超过多少个tickTime 的时间长度,总的时间长度就是 2*2000=4 秒

    • server.A=B:C:D:其中A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。

  • 在dataDir目录下创建myid文件
    cd /opt/zookeeper-3.4.8/data
    touch myid
    master机器的内容为0,slave1机器的内容为1,slave2机器的内容为2,若有更多依此类推

  • 在master节点上将配置好的zookeeper分发给各个slave,建议先打包再分发
    cd /opt
    sudo tar -zcf ./zookeeper-3.4.8.tar.gz ./zookeeper-3.4.8
    scp ./zookeeper-3.4.8.tar.gz wlw@slave1:/home/wlw

  • 在slave(slave1和slave2)节点上执行
    sudo tar -zxf ~/zookeeper-3.4.8.tar.gz -C /opt/
    sudo chown -R wlw:wlw /opt/zookeeper-3.4.8

    注:再次提醒别忘了更改 /opt/zookeeper-3.4.8/data/myid

启动zookeeper

  • 启动
    cd /opt/zookeeper-3.4.8
    ./bin/zkServer.sh start

    注:需要在master和slave机上都启动

  • 查看状态
    ./bin/zkServer.sh status
    显示为leader或者follower
    在 master 和slave节点上运行 jps 应该会有QuorumPeerMain进程

  • 停止
    ./bin/zkServer.sh stop


HBase配置

  • 配置环境变量

    
    #for hbase 
    
    export HBASE_HOME=/opt/hbase-1.2.2
    export PATH=$HBASE_HOME/bin:$PATH
  • 使环境变量生效
    source /etc/profile

  • 解压hbase-1.2.2.tar.gz 到 /opt 目录下
    sudo tar -zxf hbase-1.2.2.tar.gz -C /opt

  • 赋予权限
    sudo chown -R wlw:wlw /opt/hbase-1.2.2

  • 进入hbase-1.2.2目录,在里面创建pids文件夹
    cd /op/hbase-1.2.2
    mkdir pids
    注:这一步很重要,否则在停止HBase时会因为找不到进程id而出错

  • 在conf/ 中添加hadoop的core-site.xml和hdfs-site.xml文件,添加zookeeper的zoo.cfg文件

  • 修改conf/hbase-site.xml

    <configuration>
      <property>
        <name>hbase.rootdirname>
        <value>hdfs://master:9000/hbasevalue>
      property>
      <property>
        <name>hbase.cluster.distributedname>
        <value>truevalue>
      property>   
      <property>
        <name>hbase.zookeeper.quorumname>
        <value>master,slave1,slave2value>
      property>
      <property>
        <name>hbase.master.info.bindAddressname>
        <value>mastervalue>
        <description>HBase Master Web UI的绑定地址,默认0.0.0.0description>
      property>
      <property>
        <name>hbase.master.info.portname>
        <value>16010value>
        <description>HBase Master Web UI端口,-1表示不运行Web UIdescription>
      property>
      
      <property>
        <name>hbase.regionserver.portname>
        <value>16020value>
        <description>The port the HBase RegionServer binds to.description>
      property>
      <property>
        <name>hbase.regionserver.info.portname>
        <value>16030value>
        <description>The port for the HBase RegionServer web UIdescription>
      property>
      
      <property>
        <name>hbase.regionserver.info.bindAddressname>
        <value>mastervalue>
        <description>The address for the HBase RegionServer web UIdescription>
      property>
    configuration>

    注:hbase.regionserver.info.bindAddress这一项需要根据当前主机的hostname来配置。在slave1机器上value值则为slave1

  • 修改conf/hbase-env.sh

        export JAVA_HOME=/opt/jdk1.7.0_75
        export HBASE_HOME=/opt/hbase-1.2.2
        # 禁用hbase自带的zookeeper
        export HBASE_MANAGES_ZK=false
        export HBASE_CLASSPATH=/opt/hadoop-2.7.2/etc/hadoop
        # 存放进程id,很重要
        export HBASE_PID_DIR=/opt/hbase-1.2.2/pids
  • 修改conf/regionservers
    相当于hadoop中的slaves文件

    slave1
    slave2
  • 在master节点上将配置好的hbase分发给各个slave,建议先打包再分发
    cd /opt
    sudo tar -zcf ./hbase-1.2.2.tar.gz ./hbase-1.2.2
    scp ./hbase-1.2.2.tar.gz wlw@slave1:/home/wlw

  • 在slave(slave1和slave2)节点上执行
    sudo tar -zxf ~/hbase-1.2.2.tar.gz -C /opt/
    sudo chown -R wlw:wlw /opt/hbase-1.2.2

  • 再次提醒
    修改conf/hbase-site.xml中的
    hbase.regionserver.info.bindAddress,这一项需要根据当前主机的hostname来配置。在slave1机器上value值则为slave1

修改 ulimit 限制

HBase 会在同一时间打开大量的文件句柄和进程,超过 Linux 的默认限制,导致可能会出现错误

  • 修改/etc/security/limits.conf文件,添加:

    wlw  -       nofile  32768
    wlw  -       nproc   32000

    注:将wlw改成你运行 HBase 的用户名

  • 还需要修改 /etc/pam.d/common-session,让/etc/security/limits.conf上的配置生效,添加:

    session required pam_limits.so
  • 注销(logout)后再登录,这些配置才能生效
    注:记得在master和slave上都修改

运行 HBase

  • 在master上运行
    cd /opt/hbase-1.2.2
    ./bin/start-hbase.sh

  • 在master上启动thrift 服务线程池
    ./bin/hbase thrift start -threadpool
    或者
    在master和slave上分别手动启动thrift服务
    ./bin/hbase-daemon.sh start thrift

  • 验证 HBase 是否成功安装
    在 master 节点上运行 jps 应该会有HMaster和ThriftServer进程
    在各个 slave 节点上运行jps 应该会有HRegionServer和ThriftServer进程


最终启动的顺序为:

zookeeper -> hadoop -> hbase

在master上运行jps会有进程:

Jps
QuorumPeerMain
HMaster
ResourceManager
SecondaryNameNode
NameNode

在slave上运行jps会有进程:

Jps
DataNode
QuorumPeerMain
NodeManager
HRegionServer

最后可以通过web ui来查看HBase的情况,http://master:16010

关闭则为逆序

你可能感兴趣的:(在Ubuntu 14.04上的zookeeper+HBase集群配置)