写这篇之前已经搭建好一个hadoop集群,集群中有三台服务器,能正常运行。具体见第一篇博文。
1.官网下载与hadoop对应的HBASE,我下载的是Hbase-1.4.0-bin.tar.gz,master节点服务器中新建目录/home/hbase,将下载的文件上传至新建的目录下。
2.进入新建的目录中,解压下载的文件,
[root@master hadoop]# cd /home/hbase
[root@master hbase]# tar xfzhbase-1.4.0-bin.tar.gz
[root@master hbase]# cd hbase-1.4.0
3.修改配置文件,注意这里先在master节点的服务器上操作,配置完后,利用scp命令将文件夹分发给集群中其他节点,这样可以省去每个节点上配置一遍。
配置JAVA_HOME。
[root@master conf]# vi hbase-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_131
配置使用HBASE自带的ZooKeeper,文件中已有该配置,只是被注释掉了,找到该行去掉注释符号即可。
[root@master conf]# vi hbase-env.sh
export HBASE_MANAGES_ZK=true
修改配置文件hbase-site.xml,作如下配置:
[root@master conf]# vi hbase-site.xml
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.master</name>
<value>master:60000</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,slave1,slave2</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/hbase/zookeeper</value>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>/home/hbase/tmp</value>
</property>
<property>
<name>hbase.master.info.port</name>
<value>60010</value>
</property>
</configuration>
配置regionservers文件
[root@master conf]# vi regionservers
master
slave1
slave2
4.将/home/hbase文件夹发送给两个slave节点,能够正确执行发送的前提是已经配置好ssh免密登录以及hosts文件等。
[root@master home]# scp -r /home/hbaseroot@slave1:/home/hbase/
[root@master home]# scp -r /home/hbaseroot@slave2:/home/hbase/
5.在集群中每个节点进行如下配置:
[root@slave2 ~]# vi ~/.bashrc
export HBASE_HOME=/home/hbase/hbase-1.4.0
export PATH=$PATH:$HBASE_HOME/bin
[root@slave2 ~]# source ~/.bashrc
6.使用jps查看进程,发现slave1节点和slave2节点没有HregionServer,网上查到的解决办法是将集群时间统一,在每个节点使用如下命令同步时间
[root@master conf]# date -s "2018-1-1011:26:00"
这是一种偷懒的解决办法,应该用ntp统一集群时间,以后想起来在做这一部分吧,^_^
7.启动Hbase
[root@master conf]# start-hbase.sh
在master节点使用jps命令查看进程
[root@master conf]# jps
23633 HRegionServer
23446 HMaster
28407 SecondaryNameNode
23304 HQuorumPeer
28186 NameNode
23978 Jps
28619 ResourceManager
7693 JobHistoryServer
看到有HMaster、HRegionServer、HQuorumPeer
在slave1节点使用jps命令查看进程
[root@slave1 conf]# jps
20304 HRegionServer
6804 DataNode
20522 Jps
20142 HQuorumPeer
6927 NodeManager
看到有HRegionServer、HQuorumPeer
8.通过网页查看hbase状态
master节点修改配置文件,加入以下内容
[root@master conf]# vi hbase-site.xml
<property>
<name>hbase.master.info.port</name>
<value>16010</value>
</property>
slave1节点和slave2节点修改配置文件,加入以下内容
[root@slave1 conf]# vi hbase-site.xml
<property>
<name>hbase.master.info.port</name>
<value>16030</value>
</property>
浏览器输入网址:http://master:16010/,即可打开master-status网页
输入http://slave1:16030/ ,即可打开rs-status网页
如果打不开可以将master或slave1替换为服务器的ip地址试试,若还是打不开,可能是版本问题或者其他配置的原因。
在eclipse中将Java程序打成jar包在hadoop上运行时报错:
Exception in thread"main" java.lang.NoClassDefFoundError:org/apache/hadoop/hbase/HBaseConfiguration
网上查到的解决办法是:在hadoop-env.sh文件中添加
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/home/hbase/hbase-1.4.0/lib/*
并执行命令:source hadoop-env.sh
成功解决