HBase-0.94.4+CentOS6.X 集群配置

24 Jan 2013

平台环境

  • CentOS 6.X
  • Hadoop-1.0.4 集群平台
  • 三台机器
    • 192.168.1.111 node111 (NameNode, SecondaryNameNode, DataNode)
    • 192.168.1.112 node112 (DataNode)
    • 192.168.1.113 node113 (DataNode)

Step1 规划集群 hosts

在 /etc/hosts 中加入:

192.168.1.111 node111
192.168.1.112 node112
192.168.1.113 node113

以上操作需要在每台机器上执行

Step2 安装 HBase (master)

HBase 使用最新稳定版 0.94.4

# 官网 http://hbase.apache.org/ 下载 HBase 项目
$ wget http://apache.dataguru.cn/hbase/stable/hbase-0.94.4.tar.gz
# 自定义解压在 /home/hadoop/cluster/ 下
$ tar -xzvf hbase-0.94.4.tar.gz -C ~/cluster/
$ cd ~/cluster/hbase-0.94.4

在 ~/.bashrc 中加入环境变量:

export JAVA_HOME=/home/hadoop/jdk1.7.0_07
export HADOOP_HOME=/home/hadoop/cluster/hadoop-1.0.4
export HBASE_HOME=/home/hadoop/cluster/hbase-0.94.4
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HBASE_HOME/bin

Step3 配置集群

Step3-1 环境配置

在 $HBASE_HOME/conf/hbase-env.sh 中定义了 HBase 启动时需要的环境变量设置,需要配置 JAVA_HOME(JDK的路径)变量和 HBASE_CLASSPATH 变量:

1 # The java implementation to use.  Required.
2 export JAVA_HOME=/home/hadoop/jdk1.7.0_07
3 # Extra Java CLASSPATH elements.  Optional.
4 # 此处添加 Hadoop 的 conf 目录
5 export HBASE_CLASSPATH=/home/hadoop/cluster/hadoop-1.0.4/conf

设置允许 HBase 管理 Zookeeper:

# Tell HBase whether it should manage it's own instance of Zookeeper or not.
export HBASE_MANAGES_ZK=true

Step3-2 HBase 核心配置

HBase 包括一个默认配置文件($HBASE_HOME/src 目录下的 main/resources/hbase-default.xml),先好好看看并理解默认配置文件中的那些属性。虽然默认配置文件能让 HBase 核心程序顺利启动,但对于开发人员来说一般需要自己来设置一些常规配置以满足开发和业务的需求,所以我们需要对默认配置文件的值进行覆盖,具体方法如下:

Step3-2-1 hbase-site.xml 配置

$HBASE_HOME/conf/hbase-site.xml 是 Hadoop 的核心配置文件,对应并覆盖 hbase-default.xml 中的配置项。我们一般在这个文件中增加如下配置:

<configuration>  
	<property>   
		<!-- hbase 的根目录 -->  
		<name>hbase.rootdir</name>   
		<value>hdfs://node111:9000/hbase</value>
	</property> 
	<property>   
		<!-- 标记 hbase 是分布式的 -->  
		<name>hbase.cluster.distributed</name>   
		<value>true</value>
	</property>
	<property>   
		<!-- hbase 的 tmp 目录 -->  
		<name>hbase.tmp.dir</name>   
		<value>/home/hadoop/cluster/data/hbase-tmp</value>
	</property>
	<property>     
		<name>hbase.master</name>   
		<value>node111:60000</value>
	</property>
	<property>   
		<!-- zookeeper 运行的机器,要为奇数个,使得投票更公平 -->  
		<name>hbase.zookeeper.quorum</name>   
		<value>node111,node112,node113</value>
	</property>
	<property>   
		<!-- zookeeper 的数据目录,前提需要设置 hbase 的 tmp 目录 -->  
		<name>hbase.zookeeper.property.dataDir</name>   
		<value>${hbase.tmp.dir}/zookeeper</value>
	</property>
</configuration> 

Step3-3 主从配置

修改 $HBASE_HOME/conf/regionservers 文件,把 DataNode 添加进去

node112
node113

如果你对以上介绍的配置项做了正确的配置,那么你的 HBase 集群只差启动了,当然,在 $HBASE_HOME/conf 目录下还包括其它的一些配置文件,但那些都不是必须设置的,如果有兴趣你可以自己去了解了解。

值得注意的是 HBase 集群的所有机器的配置应该保持一致,一般我们在配置完 master 后,使用 scp 将配置文件同步到集群的其它服务器上。

Step4 启动 HBase

经过以上两个步骤,HBase 的安装和配置已经OK了,那么下面我们就来启动 HBase 集群:

$ start-hbase.sh

Step5 jps验证

在 master 节点:

$ jps
# 23481 HMaster
# 22925 TaskTracker
# 22496 DataNode
# 22345 NameNode
# 23322 HQuorumPeer
# 22660 SecondaryNameNode
# 26026 Jps
# 22772 JobTracker

在 slave 节点:

$ jps
# 12817 TaskTracker
# 12920 HQuorumPeer
# 15599 Jps
# 13098 HRegionServer
# 12694 DataNode

能看到如上信息,则证明 HBase 集群已经配置成功了,哦耶~

如果出现错误或 HBase 集群未正常启动,可以查看 $HBASE_HOME/logs/ 下的日志文件。

>>Hbase-0.94.4 on Hadoop-1.0.4-1安装向导

Fork me on GitHub