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
-
下载、解压
下载地址: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 -
配置环境变量
使配置环境生效# vim /etc/profile
//追加
export HBASE_HOME=/usr/cloud/hbase
export PATH=$PATH:$HBASE_HOME/bin$ source /etc/profile
-
配置
HBase
配置文件hbase-env.sh
$ vim hbase-env.sh
# The java implementation to use. Java 1.7+ required.
export JAVA_HOME=/usr/java/ -
配置
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
实例。 -
配置
regionservers
$ vim regionservers
slave1
slave2regionservers
文件列出了所有运行hbase
的机器(即HRegionServer
)。此文件的配置和Hadoop
中的slaves
文件十分相似,每行指定一台机器的主机名。当HBase
启动的时候,会将此文件中列出的所有机器启动。关闭时亦如此。我们的配置意为在slave1, slave2
上都将启动RegionServer
。 -
分发配置好的
HBase
文件到所有slave
节点$ scp -r hbase hadoop@slave1:/home/hadoop/
$ scp -r hbase hadoop@slave2:/home/hadoop/
0x04 修改ulimit
限制
-
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 -
还需要在
/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
-
在
master
上运行$ cd /usr/cloud/hbase/bin/
$ start-hbase.sh 验证HBase安装成功
在master
运行jps
应该会有HMaster
进程。在各个slave
上运行jps
应该会有HQuorumPeer
,HRegionServer
两个进程。
在浏览器中输入http://master:16010
可以看到HBase Web UI
。
0x06 常见错误
-
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日, 星期一