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 星期三
修改部分错误,重新排版。

posted @ 2017-02-26 22:00  ning-wang  阅读(249)  评论(0)    收藏  举报