HBase配置相对比较简单,下面的教程也是基于我上面2篇Hadoop配置的环境下继续往下添加HBase的分布式配置,这次我的HBase安装目录放在跟Hadoop同一目录下面,节点信息跟我前一篇Hadoop完全分布式配置完全一样,不清楚的话可以参考我那篇文章。
HBase根目录:/usr/mywind/hbase
HBase的版本:0.98.8-hadoop2
有图有真相:
完整配置步骤:hadoop-env.sh→hbase-env.sh → hbase-site.xml → regionservers
当然,配置之前的惯例是把bin目录加到系统环境变量里面,方便命令的使用。然后,详细的步骤如下:
1. 配置hadoop-env.sh,把HBase环境变量告诉Hadoop。
1 |
|
1 |
|
2. 配置hbase-env.sh,把Java环境变量告诉HBase,并配置ZooKpeer是否托管。
1 2 |
|
3. 配置hbase-site.xml,引用管网的话“假如你第一次配置,那么<configuration></configuration>之间是没有任何内容的”。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
这里要特别注意的是hbase.rootdir里面的HDFS地址是要跟Hadoop 的core-site.xml里面的fs.defaultFS 的HDFS的IP地址或者域名、端口必须一致。其次是hbase.zookeeper.property.dataDir,其中a01513是我的操作系统用户名,根据你自己的情况改吧,或者放到其他目录也是可以的。hbase.cluster.distributed 是启用分布式模式,这里必须为true哦。hbase.zookeeper.quorum是配置集群IP地址集或者域名集,逗号分隔。hbase.master配置HBase的主节点端口,web端口是60010,通过web UI你可以确认你是否访问成功了。如下图表示成功了:
4. 最后配置regionservers,这个最简单了,把里面的内容改成下面的就可以了:
1 2 3 |
|
有图有真相,让你模仿起来更有信心:
配置完成后启动HBase就可以了:
1 |
|
关于Shell命令、API文档,参考官网吧。
(1)可能还需要将hadoop的核心jar复制到Hbase的lib下
(2)将hadoop的hdfs-site.xml文件复制到Hbase的conf文件下。
配置中可能遇到的问题:
1. WARN [Thread-12] hdfs.DFSClient: DataStreamer Exception
org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /hbase/.tmp/hbase.version could only be replicated to 0 nodes instead of minReplication (=1). There are 0 datanode(s) running and no node(s) are excluded in this operation.
问题定位:datanode
问题原因:datanode没有启动
解决办法:启动datanode(start-dfs.sh)
2. 执行sh start-hbase.sh时报错,命令兼容性原因还是什么,忘记了,总之,不能使用 sh start-hbase.sh ,要用bash start-hbase.sh。