在Hadoop上安装HBase
Hbase快速安装
1.准备工作
1.1 确保已经正确安装hadoop
详情可以参考我的一篇基于集群资源管理Mesos的hadoop安装教程
1.2 我的配置说明
1.3 基本说明
我的所有程序均在hadoop用户下进行(除非必须要用root才切换),所有的安装解压均在hadoop主目录。
有任何问题,都以官方文档为准:http://hbase.apache.org
2.下载并且解压
2.1 选择适合自己的Hbase版本
官方文档给出的对照关系如下
我的hadoop是0.20.205的所以我选择了hbase-0.92.x的版本
2.2 下载解压
wget http://mirror.bjtu.edu.cn/apache/hbase/hbase-0.92.2/hbase-0.92.2.tar.gz tar -zxvf hbase-0.92.2.tar.gz
3.配置
3.1 方便使用,先添加环境变量
在root下执行 vi /etc/profile export HBASE_HOME=/home/hadoop/hbase-0.92.2 export path=$PATH:/home/hadoop/hbase-0.92.2/bin 保存后 source /etc/profile
3.2 配置$HBASE_HOME/conf/hbase-env.sh
我仅修改了JAVA_HOME其他根据需要可自己设定。意思里面都有 export JAVA_HOME=/usr/java/jdk1.6.0_43
export HBASE_MANAGES_ZK=true (这句要自己加,表示使用hbase自带的zookeeper)
3.3 配置 $HBASE_HOME/conf/hbase-site.xml
拷贝hbase的模板到conf下 cp -f $HBASE_HOME/src/packages/conf-pseudo/hbase-site.xml $HBASE_HOME/conf
添加如下内容
<property> <name>hbase.rootdir</name> <value>hdfs://mastersrv:54310/hbase</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.zookeeper.property.clientPort</name> <value>2181</value> </property> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>hbase.zookeeper.quorum</name> <value>slavesrv1,slavesrv2,slavesrv3</value> </property> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/home/hadoop/hbase-zoo-dataDir</value> </property> <property> <name>hbase.master.port</name> <value>60000</value> </property>
所有属性的含义可见中文官方文档 2.3.1.1 hbase默认配置
http://abloz.com/hbase/book.html
注意:hbase.rootdir 的值要和hdfs-site.xml里面相同。(后面的hbase无妨,它自己会建的)
3.4 配置hadoop节点上的 hdfs-site.xml
引用:http://www.cnblogs.com/hanyuanbo/archive/2012/07/28/2612886.html
vi $HADOOP_HOME/conf/hdfs-site.xml <property> <name>dfs.datanode.max.xcievers</name> <value>4096</value> </property> 该参数限制了datanode所允许同时执行的发送和接受任务的数量,缺省为256,hadoop-defaults.xml中通常不设置这个参数。这个限制看来实际有些偏小,高负载下,DFSClient 在put数据的时候会报 could not read from stream 的 Exception。
官方说法:
An Hadoop HDFS datanode has an upper bound on the number of files that it will serve at any one time. The upper bound parameter is called xcievers
(yes, this is misspelled).
Not having this configuration in place makes for strange looking failures. Eventually you'll see a complain in the datanode logs complaining about the xcievers exceeded, but on the run up to this one manifestation is complaint about missing blocks. For example: 10/12/08 20:10:31 INFO hdfs.DFSClient: Could not obtain block blk_XXXXXXXXXXXXXXXXXXXXXX_YYYYYYYY from any node: java.io.IOException: No live nodes contain current block. Will get new block locations from namenode and retry...
3.5 $HBASE_HOME/conf/regionservers
vi regionservers
slavesrv1
slavesrv2
slavesrv3
3.6 将 hadoop-core-0.20.205.0.jar拷贝到hbase中
这步可能不是必须的,因为怕发生版本之间承接的问题,所以我就直接先做了这个处理。 cp $HADOOP_HOME/hadoop-core-0.20.205.0.jar $HBASE_HOME/lib 将原来的jar移到其他地方去 mv $HBASE_HOME/lib/hadoop-core-1.0.3.jar ~/myfile
4.将配置好的目录全部传送到其他节点
scp -r ~/hbase-0.92.2 hadoop@slavesrv1:~/
scp -r ~/hbase-0.92.2 hadoop@slavesrv2:~/
scp -r ~/hbase-0.92.2 hadoop@slavesrv3:~/
5.同步系统时间(系统时间不同步会出错哦)
在所有机器上执行以下操作
安装NTP服务 yum install ntp 在root下启动服务 service ntpd start 在各台机器上用date快速查看下。应该是一样的了。(同步可能花些时间,最长不超过5分钟)
6.启动完成安装
6.1 首先确保hadoop至少已经执行了 start-dfs.sh 并且运行正常
jps命令查看主节点有 NameNode SecondaryNameNode 从节点上有 DataNode
6.2 开启hbase
start-hbase.sh
成功启动后会有如下进程
mastersrv:
slavesrvX:
6.3 查看浏览器管理界面
zookeeper的情况
http://192.168.4.100:60010/zk.jsp
master的情况
http://192.168.4.100:60010/master-status
下图看看regionServer是否都正常开启
查看regionServer的情况
http://192.168.4.101:60030/rs-status
http://192.168.4.102:60030/rs-status
http://192.168.4.103:60030/rs-status
总结:基本顺利,碰到2次问题,比较快的解决了,按照这样的方式装下来肯定没问题。