一、目标
在伪分布式发布的hadoop主机上,安装配置hbase,并验证可用性
二、准备
1) 环境说明:
主机: linux虚拟机centos6.5
hadoop: hadoop2.6.4伪分布式发布
hbase: 准备安装的版本为 1.0.3
下载地址:http://mirrors.cnnic.cn/apache/hbase/
2) hbase版本说明:
hbase与hadoop有对应关系,以下对应关系是从网上收集前人的成果,网址为:http://www.chinahadoop.cn/group/5/thread/1027
hadoop与HBase版本对应关系:
Hbase Hadoop
0.92.0 1.0.0
0.92.1 1.0.0
0.92.2 1.0.3
0.94.0 1.0.2
0.94.1 1.0.3
0.94.2 1.0.3
0.94.3 1.0.4
0.94.4 1.0.4
0.94.5 1.0.4
0.94.9 1.2.0
0.95.0 1.2.0
hadoop1.2+hbase0.95.0+hive0.11.0 会产生hbase+hive的不兼容,创建hive+hbase的关联表就会报pair对异常。
hadoop1.2+hbase0.94.9+hive0.10.0 没问题,解决了上个版本的不兼容问题。
三、安装Hbase
1、 解压hbase-1.1.0.1-bin.tar.gz
将gz文件用gzip解压,用tar将tar格式解压
[hadoop@master soft]$ ls -ltr total 101420 -rw-rw-r-- 1 hadoop hadoop 103847513 Jun 20 2016 hbase-1.0.3-bin.tar.gz [hadoop@master soft]$ [hadoop@master soft]$ [hadoop@master soft]$ [hadoop@master soft]$ gzip -d hbase-1.0.3-bin.tar.gz [hadoop@master soft]$ [hadoop@master soft]$ ls -ltr total 390916 -rw-rw-r-- 1 hadoop hadoop 400291840 Jun 20 2016 hbase-1.0.3-bin.tar [hadoop@master soft]$ [hadoop@master soft]$ tar -vxf hbase-1.0.3-bin.tar
2、 将hbase添加到环境变量中
切换到root用户
vi /etc/profile 在最后面添加如下代码:
export HBASE_HOME=/opt/hadoop/hbase-1.0.3
export PATH=$HBASE_HOME/bin:$PATH
使其生效: [root@master opt]# source /etc/profile
切换到hadoop用户,使用set命令可以查看已经生效。
3、修改配置文件
1) 进入到/opt/hadoop/hbase-1.0.3/conf 目录,修改hbase-env.sh
找到下面项目,修改如下
export JAVA_HOME=/usr/java/jdk1.7.0_80 export HBASE_CLASSPATH=/opt/hadoop/hbase-1.0.3/conf export HBASE_MANAGES_ZK=true
说明:伪分布式部署,由自己管理一致性,在完全分布式下, HBASE_MANAGES_ZK 是zookeeper管理,配置为false
2) 修改hbase-site.xml
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
说明:
<value>hdfs://master:9000/hbase</value>
此属性中的master是本机的hostname。要根据自己的hadoop的配置信息进行相应的修改
2、运行HBase
启动HBase:
<span style="font-size:14px;">[hadoop@master bin]$ start-hbase.sh localhost: starting zookeeper, logging to /opt/hadoop/hbase-1.0.3/bin/../logs/hbase-hadoop-zookeeper-master.out starting master, logging to /opt/hadoop/hbase-1.0.3/logs/hbase-hadoop-master-master.out starting regionserver, logging to /opt/hadoop/hbase-1.0.3/logs/hbase-hadoop-1-regionserver-master.out [hadoop@master bin]$ [hadoop@master bin]$ [hadoop@master bin]$ </span>
检查进程:
[hadoop@master bin]$ jps 14914 NameNode 24756 Jps 24406 HRegionServer 15195 SecondaryNameNode 15445 NodeManager 15009 DataNode 24223 HQuorumPeer 24283 HMaster 15348 ResourceManager
比hadoop之前的内容,多了 HRegionServer,HQuorumPeer,HMaster
验证hbase: 执行hbase shell
[hadoop@master bin]$ hbase shell SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/opt/hadoop/hbase-1.0.3/lib/slf4j-log4j12-1.7.7.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/opt/hadoop/hadoop-2.6.4/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory] HBase Shell; enter 'help<RETURN>' for list of supported commands. Type "exit<RETURN>" to leave the HBase Shell Version 1.0.3, rf1e1312f9790a7c40f6a4b5a1bab2ea1dd559890, Tue Jan 19 19:26:53 PST 2016 hbase(main):001:0> hbase(main):002:0* hbase(main):003:0* hbase(main):004:0* quit [hadoop@master bin]$
上述过程是本机验证,网上有人遇到hbase和hadoop不匹配报错,附上解决办法:
替换Hbase中的jar包
需 要用{HADOOP_HOME}下的hadoop-0.20.2-core.jar 替换掉{HBASE_HOME}/lib目录下的hadoop-core-0.20-append-r1056497.jar 。如果不替换jar文件Hbase启动时会因为hadoop和Hbase的客户端协议不一致而导致HMaster启动异常。报错如下:
localhost: Exception in thread "main" org.apache.hadoop.ipc.RPC$VersionMismatch: Protocol org.apache.hadoop.hdfs.protocol.ClientProtocol version mismatch. (client = 42, server = 41)
所以如果遇到以上错误,就通过替换jar包解决。