1 Hbase集群需要依赖Hadoop集群和zookeeper集群 ,首先需要确保上述两项安装成功。(hbase对hadoop的版本有要求,具体匹配信息可以参考hbase官方文档,本文使用hadoop0.20.2 + hbase0.90.5)
2 下载 hbase0.90.5.tar.gz 解压
tar -xvf hbase0.90.5.tar.gz
ln -s hbase0.90.5 hbase //别名
3 初始化,为了方便以后升级,我将hbase的配置文件独立出来放在一个目录下/hadoop/hbase-config ,要让hbase在启动时知道我已经移动了初始化文件,可以通过设置系统变量
export HBASE_CONF_DIR=/hadoop/hbase-config 来实现,这个内容可以放在hosts文件 也可以放在.bashrc文件中。
3.1 hbase-env.sh 添加
export JAVA_HOME=/usr/lib/jvm/openjdk1.6/ (jdk路径)
export HBASE_MANAGES_ZK=false (是否需要hbase管理zookeeper集群,也可以自己管理,如果托管,hbase启动会重启zookeeper集群,这个建议设置成false,因为在实验阶段经常要重启hbase,有时候zookeeper停止不了,会出先启动异常。)
export HBASE_PID_DIR=/hadoop/hbase/tmp (hbase的一个存放pid的位置,这个随意设置都可以)
3.2 hbase-site.xml hbase初始化配置文件,这个比较重要,需要添加如下内容:
注: hadoop的跟目录,这个需要和hadoop集群相关,取hadoop的namenode和端口
<property>
<name>hbase.rootdir</name>
<value>hdfs://Paas1:9000/hbase</value>
</property>
注: 是否是集群标志
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
注: 指定一个hbase的master 。
<property>
<name>hbase.master</name>
<value>Paas1:60000</value>
</property>
注:zookeeper集群的节点,这个只能用主机名,不能用别名。
<property>
<name>hbase.zookeeper.quorum</name>
<value>Paas1,Pass2,Paas3</value>
</property>
注:zookeeper失效时间 。
<property>
<name>zookeeper.session.timeout</name>
<value>60000</value>
</property>
注:zookeeper端口号 。
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
4 hbase启动
在bin目录下运行:./start-hbase.sh
5 hbase测试:
用命令#hbase shell 可以到hbase shell控制台 。
hbase还自带一个web控制台,地址是: http:masterIp:60010
只有在web控制台能正常启动了才算安装成功。
备注: hbase启动过程中常常回报出 hostname unkonwn异常,这个是应为在hosts文件中没有对应的主机名。常因为设置了主机别名做regionserver,但是zookeeper只能使用主机名,而造成了错误配置。
6重启
http://serviceIp:60030/regionserver.jsp
http://serviceIp:60010/zk.jsp
问题记录:
1、启动Hbase之前尽量关闭Hadoop的HDFS的安全模式,未关闭可能会造成Hbase在HDFS上创建文件不成功,日志记录中也会出现如下记录:
2012-04-10 21:37:01,999 INFO org.apache.hadoop.hbase.util.FSUtils: Waiting for dfs to exit safe mode...
2012-04-10 21:37:12,003 INFO org.apache.hadoop.hbase.util.FSUtils: Waiting for dfs to exit safe mode...
2012-04-10 21:37:22,006 INFO org.apache.hadoop.hbase.util.FSUtils: Waiting for dfs to exit safe mode...
2012-04-10 21:37:32,011 INFO org.apache.hadoop.hbase.util.FSUtils: Waiting for dfs to exit safe mode...
2012-04-10 21:37:42,014 INFO org.apache.hadoop.hbase.util.FSUtils: Waiting for dfs to exit safe mode...
2012-04-10 21:37:52,019 INFO org.apache.hadoop.hbase.util.FSUtils: Waiting for dfs to exit safe mode...
2012-04-10 21:38:02,022 INFO org.apache.hadoop.hbase.util.FSUtils: Waiting for dfs to exit safe mode...
2012-04-10 21:38:12,029 INFO org.apache.hadoop.hbase.util.FSUtils: Waiting for dfs to exit safe mode...
2012-04-10 21:38:22,032 INFO org.apache.hadoop.hbase.util.FSUtils: Waiting for dfs to exit safe mode...
2012-04-10 21:38:32,036 INFO org.apache.hadoop.hbase.util.FSUtils: Waiting for dfs to exit safe mode...
解决方法:使用 hadoop dfsadmin -safemode leave 命令使Hadoop退出安全模式。