zoukankan      html  css  js  c++  java
  • HBase集群安装部署

    0x01 软件环境

    OS: CentOS-6.5-x86_64 
    JDK: jdk-8u111-linux-x64 
    Hadoop: hadoop-2.6.5
    Zookeeper: zookeeper-3.4.6
    Hbase: hbase-0.98.24

    0x02 集群概况

    IP hostname
    192.168.1.10 master
    192.168.1.11 slave1
    192.168.1.12 slave2

    0x03 安装配置

    3.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 /home/hadoop/cloud/
    $ ln -s /home/hadoop/cloud/hbase-0.98.24 /home/hadoop/cloud/hbase
    

    3.2 配置环境变量

    # vim /etc/profile
    //追加
    export HBASE_HOME=/usr/cloud/hbase
    export PATH=$PATH:$HBASE_HOME/bin
    

    使配置环境生效

    # source /etc/profile
    # su hadoop
    $ source /etc/profile
    

    3.3 配置hbase-env.sh

    $ vim hbase-env.sh
    # The java implementation to use.  Java 1.7+ required.
    export JAVA_HOME=/home/hadoop/cloud/java
    

    3.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/hadoop/cloud/zookeeper/data</value>
      </property>
    </configuration>
    
    • 第一个属性指定本机的hbase的存储目录,必须与Hadoop集群的core-site.xml文件配置保持一致;
    • 第二个属性指定hbase的运行模式,true代表全分布模式;
    • 第三个属性指定Zookeeper管理的机器,一般为奇数个
    • 第四个属性是数据存放的路径。这里我使用的默认的HBase自带的 Zookeeper
      使用独立的ZooKeeper时需要修改HBASE_MANAGES_ZK值为false,为不使用默认ZooKeeper实例。

    3.5 配置regionservers

    $ vim regionservers
    
    slave1
    slave2
    

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

    3.6 分发文件到所有slave节点

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

    注意:在所有slave几点建立软链并配置环境变量。

    0x04 修改ulimit限制

    4.1 修改limits.conf

    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 的用户名。

    # vim /etc/security/limits.conf
    
    hadoop - nofile 32768
    hadoop - nproc 32000
    

    4.2 配置common-session

    还需要在 /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

    5.1 在master启动hbase

    $ cd /usr/cloud/hbase/bin/
    $ start-hbase.sh
    

    5.2 验证HBase安装成功

    jps查看进程

    master节点

    3024 SecondaryNameNode
    3170 ResourceManager
    4099 QuorumPeerMain
    8040 Jps
    2841 NameNode
    3468 Master
    7901 HMaster
    

    slave节点

    3264 QuorumPeerMain
    1410 NodeManager
    1333 DataNode
    3754 HRegionServer
    1596 Worker
    3807 Jps
    

    master 运行 jps 应该会有HMaster进程;在各个 slave 上运行jps应该会有HRegionServer进程。

    在浏览器中输入 http://master:16010 可以看到 HBase Web UI

    0x06 常见错误

    6.1 停止hbase时,pid不存在

    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即可。

    6.2 shell命令行"退格键"删除不了

    在HBase的shell命令行界面输入错误项按"退格键"删除,却怎么也删除不了:
    SecureCRT:正确的做法是:Terminal Emulation Mapped Keys, 点 Map a key,按下 Backspace,Function 选择 Send String,右侧输入 177 即 ASCII 码为 0x7F 的键码,就能直接用 Backspace 删除了。

    6.3 multbind警告

    hbase/lib 目录下还有个 slf4j-log4j12-XXX.jar,在机器有装hadoop时,由于classpath中会有hadoop中的这个jar包,会有冲突,直接删除掉。

    $ cd ~/cloud/hbase/lib
    $ rm -f slf4j-log4j12-*jar
    

    0x07 参考链接

    2017年1月23日, 星期一
    update: 2017-10-18 22:19:17 星期三
    修改部分错误,重新排版。

  • 相关阅读:
    对生产稳定的一些思考
    tsar指标解释
    tsar采集nginx指标
    Nginx如何处理一个连接
    Java : 如何更优雅的设计异常
    MySql的索引实现
    IntelliJ Idea 常用配置
    ICSharpCode.SharpZipLib.dll 压缩、解压Zip文件 附源码
    Java BigDecimal使用
    社交系统中用户好友关系数据库设计
  • 原文地址:https://www.cnblogs.com/ning-wang/p/6446075.html
Copyright © 2011-2022 走看看