软件环境
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
集群机器:
IP | HostName | Mater | RegionServer |
---|---|---|---|
10.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 了)。
解压缩1
2tar -zxvf hbase-1.0.0-bin.tar.gz
cd hbase-1.0.0
编辑hbase-env.sh
文件,修改 JAVA_HOME 为你的路径。1
2# The java implementation to use. Java 1.7+ required.
export JAVA_HOME=/home/spark/workspace/jdk1.7.0_75
编辑conf/hbase-site.xml
文件:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18<configuration>
<property>
<name>hbase.rootdirname>
<value>hdfs://master:9000/hbasevalue>
property>
<property>
<name>hbase.cluster.distributedname>
<value>truevalue>
property>
<property>
<name>hbase.zookeeper.quorumname>
<value>master,slave1,slave2value>
property>
<property>
<name>hbase.zookeeper.property.dataDirname>
<value>/home/spark/workspace/zookeeper/datavalue>
property>
configuration>
其中第一个属性指定本机的hbase的存储目录,必须与Hadoop集群的core-site.xml
文件配置保持一致;第二个属性指定hbase的运行模式,true代表全分布模式;第三个属性指定 Zookeeper 管理的机器,一般为奇数个;第四个属性是数据存放的路径。这里我使用的默认的 HBase 自带的 Zookeeper。
配置regionservers,在regionservers文件中添加如下内容:1
2slave1
slave2
regionservers
文件列出了所有运行hbase的机器(即HRegionServer)。此文件的配置和Hadoop中的slaves文件十分相似,每行指定一台机器的主机名。当HBase启动的时候,会将此文件中列出的所有机器启动。关闭时亦如此。我们的配置意为在 slave1, slave2, slave3 上都将启动 RegionServer。
将配置好的 hbase 文件分发给各个 slave1
2scp -r hbase-1.0.0 spark@slave1:~/workspace/
scp -r hbase-1.0.0 spark@slave2:~/workspace/
HBase 会在同一时间打开大量的文件句柄和进程,超过 Linux 的默认限制,导致可能会出现如下错误。1
22010-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 的用户名。
1 | spark - nofile 32768 |
还需要在 /etc/pam.d/common-session
加上这一行:1
session required pam_limits.so
否则在/etc/security/limits.conf
上的配置不会生效。
最后还要注销(logout
或者exit
)后再登录,这些配置才能生效!使用ulimit -n -u
命令查看最大文件和进程数量是否改变了。记得在每台安装 HBase 的机器上运行哦。
在master上运行1
2cd ~/workspace/hbase-1.0.0
bin/start-hbase.sh
在 master 运行 jps
应该会有HMaster
进程。在各个 slave 上运行jps
应该会有HQuorumPeer
,HRegionServer
两个进程。
在浏览器中输入 http://master:16010 可以看到 HBase Web UI 。