HBase集群安装部署

时间:2022-10-27 14:53:06

0x01 软件环境

OS: CentOS6.5 x64
java: jdk1.8.0_111
hadoop: hadoop-2.5.2
hbase: hbase-0.98.24

0x02 集群概况

IP hostname
192.168.1.10 master
192.168.1.11 slave1
192.168.1.12 slave2

0x03 安装HBase

  1. 下载、解压
    下载地址:http://www.apache.org/dyn/closer.cgi/hbase/
    软件版本:hbase-0.98.24-hadoop2-bin.tar.gz
    兼容列表:http://hbase.apache.org/book.html#hadoop
    确保你下载的版本与你现存的Hadoop版本兼容兼容列表以及支持的JDK版本(HBase 1.0.x 已经不支持JDK 6了)。
    解压

    $ tar -zxvf hbase-0.98.24-bin.tar.gz
    $ mv hbase-0.98.24 /usr/cloud/hbase
    # chown hadoop:hadoop hbase
  2. 配置环境变量

    # vim /etc/profile
    //追加
    export HBASE_HOME=/usr/cloud/hbase
    export PATH=$PATH:$HBASE_HOME/bin
    使配置环境生效
    $ source /etc/profile
  3. 配置HBase配置文件hbase-env.sh

    $ vim hbase-env.sh
    # The java implementation to use. Java 1.7+ required.
    export JAVA_HOME=/usr/java/
  4. 配置hbase-site.xml

    $ vim conf/hbase-site.xml
    <configuration>
    <property>
    <name>hbase.rootdir</name>
    <value>hdfs://master:9000/hbase</value>
    </property>
    <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
    </property>
    <property>
    <name>hbase.zookeeper.quorum</name>
    <value>master,slave1,slave2</value>
    </property>
    <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/home/spark/workspace/zookeeper/data</value>
    </property>
    </configuration>
    其中第一个属性指定本机的hbase的存储目录,必须与Hadoop集群的core-site.xml文件配置保持一致;第二个属性指定hbase的运行模式,true代表全分布模式;第三个属性指定Zookeeper管理的机器,一般为奇数个;第四个属性是数据存放的路径。这里我使用的默认的HBase自带的 Zookeeper。使用独立的ZooKeeper时需要修改HBASE_MANAGES_ZK值为false,为不使用默认ZooKeeper实例。
  5. 配置regionservers

    $ vim regionservers
    slave1
    slave2
    regionservers文件列出了所有运行hbase的机器(即HRegionServer)。此文件的配置和Hadoop中的slaves文件十分相似,每行指定一台机器的主机名。当HBase启动的时候,会将此文件中列出的所有机器启动。关闭时亦如此。我们的配置意为在slave1, slave2上都将启动 RegionServer
  6. 分发配置好的HBase文件到所有slave节点

    $ scp -r hbase hadoop@slave1:/home/hadoop/
    $ scp -r hbase hadoop@slave2:/home/hadoop/

0x04 修改ulimit限制

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

    2010-04-06 03:04:37,542 INFO org.apache.hadoop.hdfs.DFSClient: Exception increateBlockOutputStream java.io.EOFException
    2010-04-06 03:04:37,542 INFO org.apache.hadoop.hdfs.DFSClient: Abandoning block blk_-6935524980745310745_1391901

    所以编辑/etc/security/limits.conf文件,添加以下两行,提高能打开的句柄数量和进程数量。注意将hadoop改成你运行 HBase 的用户名。

    # /etc/security/limits.conf
    hadoop - nofile 32768
    hadoop - nproc 32000
  2. 还需要在 /etc/pam.d/common-session 加上这一行:

    # vim /etc/pam.d/common-session
    session required pam_limits.so

    否则在/etc/security/limits.conf上的配置不会生效。
    最后还要注销(logout或者exit)后再登录,这些配置才能生效!使用ulimit -n -u命令查看最大文件和进程数量是否改变了。记得在每台安装 HBase 的机器上运行哦。

0x05 运行HBase

  1. master上运行

    $ cd /usr/cloud/hbase/bin/
    $ start-hbase.sh
  2. 验证HBase安装成功
    master 运行 jps 应该会有HMaster进程。在各个 slave 上运行jps应该会有HQuorumPeer,HRegionServer两个进程。
    在浏览器中输入 http://master:16010 可以看到 HBase Web UI

0x06 常见错误

  1. HBase停止节点报错“pid不存在
    修改配置文件hbase-env.sh

    $ vim /usr/cloud/hbase/conf/hbase-env.sh
    export HBASE_PID_DIR=/usr/cloud/hadoop/pids
    export HBASE_MANAGES_ZK=false

    但是上述方法并没有解决我的问题,后来我发现是我的zookeeper没有启动成功,HBASE_PID_DIR无需更改配置,只需要修改export HBASE_MANAGES_ZK=false,不使用默认的zookeeper即可。
    参考链接:
    http://wuchong.me/blog/2015/04/05/hbase-cluster-deploy/
    https://hexo2hexo.github.io/HBase%E5%AE%89%E8%A3%85%E9%85%8D%E7%BD%AE/
    2017年1月23日, 星期一