OS: Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-32-generic x86_64)
Java: jdk1.7.0_75
Hadoop: hadoop-2.6.0
Hbase: hbase-1.0.0
集群机器:
IPHostNameMaterRegionServer10.4.20.30 master yes no
10.4.20.31 slave1 no yes
10.4.20.32 slave2 no yes
准备
假设你已经安装部署好了 Hadoop 集群和 Java,可以参考 Spark on YARN 集群部署手册 这篇文章。
下载解压
可以从官方下载地址下载 HBase 最新版本,推荐 stable 目录下的二进制版本。我下载的是 hbase-1.0.0-bin.tar.gz 。确保你下载的版本与你现存的 Hadoop 版本兼容()以及支持的JDK版本(HBase 1.0.x 已经不支持 JDK 6 了)。
解压缩
tar -zxvf hbase-1.0.0-bin.tar.gz
cd hbase-1.0.0
配置 HBase
编辑hbase-env.sh文件,修改 JAVA_HOME 为你的路径。
# The java implementation to use. Java 1.7+ required.
export JAVA_HOME=/home/spark/workspace/jdk1.7.0_75
编辑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。
配置regionservers,在regionservers文件中添加如下内容:
slave1
slave2
regionservers文件列出了所有运行hbase的机器(即HRegionServer)。此文件的配置和Hadoop中的slaves文件十分相似,每行指定一台机器的主机名。当HBase启动的时候,会将此文件中列出的所有机器启动。关闭时亦如此。我们的配置意为在 slave1, slave2, slave3 上都将启动 RegionServer。
将配置好的 hbase 文件分发给各个 slave
scp -r hbase-1.0.0 spark@slave1:~/workspace/
scp -r hbase-1.0.0 spark@slave2:~/workspace/
修改 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文件,添加以下两行,提高能打开的句柄数量和进程数量。注意将spark改成你运行 HBase 的用户名。
spark - nofile 32768
spark - nproc 32000
还需要在 /etc/pam.d/common-session 加上这一行:
session required pam_limits.so
否则在/etc/security/limits.conf上的配置不会生效。
最后还要注销(logout或者exit)后再登录,这些配置才能生效!使用ulimit -n -u命令查看最大文件和进程数量是否改变了。记得在每台安装 HBase 的机器上运行哦。
运行 HBase
在master上运行
cd ~/workspace/hbase-1.0.0
bin/start-hbase.sh
验证 HBase 成功安装
在 master 运行 jps 应该会有HMaster进程。在各个 slave 上运行jps 应该会有HQuorumPeer,HRegionServer两个进程。
在浏览器中输入 :16010 可以看到 HBase Web UI 。