> CentOS > CentOS教程 >

CentOS6.5下安装Hbase

环境:CentOS6.5  Hadoop2.7.2  HBase1.2.1

1.安装好 Hadoop 集群,并启动 

 

 
  1. [grid@hadoop4 ~]$ sh hadoop-2.7.2/sbin/start-dfs.sh   
  2. [grid@hadoop4 ~]$ sh hadoop-2.7.2/sbin/start-yarn.sh   

 

查看 hadoop 版本: 

 

  1. [grid@hadoop4 ~]$ hadoop-2.7.2/bin/hadoop version   
  2. Hadoop 2.7.2  

 



2.查看 hbase 官方文档(http://hbase.apache.org/book.html#basic.prerequisites),找到与 hadoop 版本对应的 hbase 并下载 
[grid@hadoop4 ~]$ wget http://mirrors.cnnic.cn/apache/hbase/hbase-1.2.1/hbase-1.2.1-bin.tar.gz 

3.解压 

 

  1. [grid@hadoop4 ~]$ tar -zxf hbase-1.2.1-bin.tar.gz   

 


4.进入 hbase 的 lib 目录,查看 hadoop jar 包的版本 
 
  1. [grid@hadoop4 ~]$ cd hbase-1.2.1/lib/   
  2. [grid@hadoop4 lib]$ find -name 'hadoop*jar'   
  3. ./hadoop-common-2.5.1.jar   
  4. ./hadoop-mapreduce-client-common-2.5.1.jar   
  5. ./hadoop-annotations-2.5.1.jar   
  6. ./hadoop-yarn-server-common-2.5.1.jar   
  7. ./hadoop-hdfs-2.5.1.jar   
  8. ./hadoop-client-2.5.1.jar   
  9. ./hadoop-mapreduce-client-shuffle-2.5.1.jar   
  10. ./hadoop-yarn-common-2.5.1.jar   
  11. ./hadoop-yarn-server-nodemanager-2.5.1.jar   
  12. ./hadoop-yarn-client-2.5.1.jar   
  13. ./hadoop-mapreduce-client-core-2.5.1.jar   
  14. ./hadoop-auth-2.5.1.jar   
  15. ./hadoop-mapreduce-client-app-2.5.1.jar   
  16. ./hadoop-yarn-api-2.5.1.jar   
  17. ./hadoop-mapreduce-client-jobclient-2.5.1.jar   


发现与 hadoop 集群的版本号不一致,需要用 hadoop 目录下的 jar 替换 hbase/lib 目录下的 jar 文件。 

编写脚本来完成替换,如下所示: 

 

  1. [grid@hadoop4 lib]$ pwd  
  2. /home/grid/hbase-1.0.0/lib  
  3. [grid@hadoop4 lib]$ vim f.sh  
  4. find-name "hadoop*jar"| sed's/2.5.1/2.7.2/g' | sed's/\.\///g' > f.log  
  5. rm./hadoop*jar  
  6. cat./f.log | whileread Line  
  7. do  
  8. find/home/grid/hadoop-2.7.2 -name "$Line"| xargs-i cp{} ./  
  9. done  
  10. rm./f.log  
  11. [grid@hadoop4 lib]$ chmodu+x f.sh  
  12. [grid@hadoop4 lib]$ ./f.sh  
  13. [grid@hadoop4 lib]$ find-name 'hadoop*jar'  
  14. ./hadoop-yarn-api-2.7.2.jar  
  15. ./hadoop-mapreduce-client-app-2.7.2.jar  
  16. ./hadoop-common-2.5.2.jar  
  17. ./hadoop-mapreduce-client-jobclient-2.7.2.jar  
  18. ./hadoop-mapreduce-client-core-2.7.2.jar  
  19. ./hadoop-yarn-server-nodemanager-2.7.2.jar  
  20. ./hadoop-hdfs-2.7.2.jar  
  21. ./hadoop-yarn-common-2.7.2.jar  
  22. ./hadoop-mapreduce-client-shuffle-2.7.2.jar  
  23. ./hadoop-auth-2.7.2.jar  
  24. ./hadoop-mapreduce-client-common-2.7.2.jar  
  25. ./hadoop-yarn-client-2.7.2.jar  
  26. ./hadoop-annotations-2.7.2.jar  
  27. ./hadoop-yarn-server-common-2.7.2.jar  

 

 

OK,jar 包替换成功;hbase/lib 目录下还有个 slf4j-log4j12-XXX.jar,在机器有装hadoop时,由于classpath中会有hadoop中的这个jar包,会有冲突,直接删除掉

 

  1. [grid@hadoop4 lib]$ rm`find-name 'slf4j-log4j12-*jar'`  

 

5.修改配置文件

5.1. 
 
  1. [grid@hadoop4 hbase-1.2.1]$ vi conf/hbase-env.sh   
  2. export JAVA_HOME=/usr/java/jdk1.7.0_72   
  3. export HBASE_CLASSPATH=/home/grid/hadoop-2.7.2/etc/hadoop   
  4. export HBASE_MANAGES_ZK=true   

第一个参数指定了JDK路径;第二个参数指定了 hadoop 的配置文件路径;第三个参数设置使用 hbase 默认自带的 Zookeeper 

5.2. 

[grid@hadoop4 hbase-1.2.1]$ vim conf/hbase-site.xml 

 

  1. <property>  
  2. <name>hbase.rootdir</name>  
  3. <value>hdfs://localhost:9000/hbase</value>  
  4. </property>  
  5. <property>  
  6. <name>hbase.cluster.distributed</name>  
  7. <value>true</value>  
  8. </property>  
  9. <property>  
  10. <name>hbase.tmp.dir</name>  
  11. <value>/home/grid/hbase-1.2.1/tmp</value>  
  12. </property>  
  13. <property>  
  14. <name>hbase.zookeeper.quorum</name>  
  15. <value>hadoop4,hadoop5,hadoop6</value>  
  16. </property>  
  17. <property>  
  18. <name>hbase.zookeeper.property.dataDir</name>  
  19. <value>/home/grid/hbase-1.2.1/zookeeper</value>  
  20. </property>  

 

上述中的hbase.rootdir的value为hadoop中的etc目录下的hadoop目录下的core-site.xml中的dfs的value加/hbase

创建目录

 
  1. [grid@hadoop4 hbase-1.2.1]$ mkdir tmp   
  2. [grid@hadoop4 hbase-1.2.1]$ mkdir zookeeper   


5.3. 
 
  1. [grid@hadoop4 hbase-1.2.1]$ vim conf/regionservers   
  2. hadoop4   
  3. hadoop5   
  4. hadoop6   



6.设置环境变量 
 
  1. [grid@hadoop4 ~]$ vi .bash_profile   
  2. export HBASE_HOME=/home/grid/hbase-1.2.1  
  3. export PATH=$PATH:$HBASE_HOME/bin   
  4. [grid@hadoop4 ~]$ source .bash_profile   



7.分发 hbase 到其它机器,并在其上设置环境变量 
[grid@hadoop4 ~]$ scp -r hbase-1.2.1grid@hadoop5:~ 
[grid@hadoop4 ~]$ scp -r hbase-1.2.1 grid@hadoop6:~ 

8.启动 hbase (在启动hbase之前hadoop必须先启动)
 
  1. [grid@hadoop4 ~]$ sh start-hbase.sh   
  2. [grid@hadoop4 ~]$ jps   
  3. 2388 ResourceManager   
  4. 3692 Jps   
  5. 2055 NameNode   
  6. 3375 HQuorumPeer   
  7. 2210 SecondaryNameNode   
  8. 3431 HMaster   
  9. [grid@hadoop5 ~]$ jps   
  10. 2795 Jps   
  11. 2580 HQuorumPeer   
  12. 2656 HRegionServer   
  13. 2100 NodeManager   
  14. 1983 DataNode   
  15. [grid@hadoop6 ~]$ jps   
  16. 2566 HQuorumPeer   
  17. 1984 DataNode   
  18. 2101 NodeManager   
  19. 2803 Jps   
  20. 2639 HRegionServer   


$stop-all.sh          //停止hbase
如果在操作Hbase的过程中发生错误,可以通过hbase安装主目录下的logs子目录查看错误原因。

jps查看发现 Master 机上 HRegionServer 服务未启动,查看日志显示因16020端口被占用导致 HRegionServer 启动失败,查证发现占用16020端口的是 HMaster 进程,查看官方文档后解决:[grid@hadoop4 ~]$ sh local-regionservers.sh start 2 
官方文档截图: 


 

9.shell 
 

10.Web管理界面 


(责任编辑:IT)