一、先介绍下环境,一共七部机器,均安装CentOS6.7 64位系统,hadoop版本为2.7.1,必须要注意和hbase的版本匹配,所以使用1.2.4,1、2号机器为namenode的主备用机
[hadoop@hadoop-node1 ~]$ jps
20853 DFSZKFailoverController
26365 Jps
20538 NameNode
[hadoop@hadoop-node2 ~]$ jps
8978 NameNode
9083 DFSZKFailoverController
29466 Jps
3,4号为yarn的主备用机
[hadoop@hadoop-node3 ~]$ jps
3905 ResourceManager
17060 Jps
[hadoop@hadoop-node0x04 bin]$ jps
15279 Jps
3883 ResourceManager
5、6、7号机为datanode,6、7号机运行JPS后和5号机一样
[hadoop@hadoop-node5 ~]$ jps
17101 QuorumPeerMain
5497 Jps
26076 DataNode
26210 NodeManager
25994 JournalNode
二、开始安装
下载hbase-1.2.4-bin.tar.gz
解压、释放
配置hbase集群,要修改3个文件(首先zk集群已经安装好了)
注意:要把hadoop的hdfs-site.xml和core-site.xml 放到hbase/conf下,这是因为hbase要使用hdfs客户端的API,要调用配置文件
修改hbase-env.sh
export JAVA_HOME=/usr/java/jdk1.7.0_79
//告诉hbase使用外部的zk
export HBASE_MANAGES_ZK=false
vim hbase-site.xml
<configuration>
<!-- 指定hbase在HDFS上存储的路径 -->
<property>
<name>hbase.rootdir</name>
<value>hdfs://ns1/hbase</value>
</property>
<!-- 指定hbase是分布式的 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- 指定zk的地址,多个用“,”分割 -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop-node5:2181,hadoop-node6:2181,hadoop-node7:2181</value>
</property>
</configuration>
vim regionservers
hadoop-node6
hadoop-node7
拷贝hbase到其他节点
scp -r hbase-1.2.4/hadoop-node3:/home/hadoop/
350 scp -r hbase-1.2.4/ hadoop-node4:/home/hadoop/
359 scp -r hbase-1.2.4/ hadoop-node0x05:/home/hadoop/
363 scp -r hbase-1.2.4/ hadoop-node0x05:/home/hadoop/
364 scp -r hbase-1.2.4/ hadoop-node0x06:/home/hadoop/
365 scp -r hbase-1.2.4/ hadoop-node0x07:/home/hadoop/
将配置好的HBase拷贝到每一个节点并同步时间。
启动所有的hbase
分别启动zk
./zkServer.sh start
启动hbase集群
start-dfs.sh
启动hbase,在主节点上运行:
start-hbase.sh
通过浏览器访问hbase管理页面
http://hadoop-node3:16010/master-status
为保证集群的可靠性,要启动多个HMaster
hbase-daemon.sh start master
测试,3、4号机运行jps后,应该有三个进程
16783 HMaster
19535 Jps
3905 ResourceManager
5、6、7号机运行jps应该有五个进程
$ jps
17101 QuorumPeerMain
5497 Jps
5314 HRegionServer
26076 DataNode
26210 NodeManager
25994 JournalNode
注意,同步时间也很重要,下面是由于没有同步时间造成的错误
ERROR [B.defaultRpcServer.handler=0,queue=0,port=16000] master.MasterRpcServices: Region server hadoop-
node7,16020,1488528679958 reported a fa
tal error:
ABORTING region server hadoop-node0x07,16020,1488528679958: Unhandled:
org.apache.hadoop.hbase.ClockOutOfSyncException: Server hadoop-node0x07,16020,1488528679958 has be
en rejected; Reported time is too far out of sync with master. Time difference of 30475ms > max allowed of 30000ms
at org.apache.hadoop.hbase.master.ServerManager.checkClockSkew(ServerManager.java:409)
at org.apache.hadoop.hbase.master.ServerManager.regionServerStartup(ServerManager.java:275)
at org.apache.hadoop.hbase.master.MasterRpcServices.regionServerStartup(MasterRpcServices.java:361)
at org.apache.hadoop.hbase.protobuf.generated.RegionServerStatusProtos$RegionServerStatusService
$2.callBlockingMethod(RegionServerStatusProtos.java:8615)
at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2180)
at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:112)
at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:133)
at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:108)
at java.lang.Thread.run(Thread.java:745)
Cause:
org.apache.hadoop.hbase.ClockOutOfSyncException: org.apache.hadoop.hbase.ClockOutOfSyncException: Server hadoop-
node0x07,16020,1488528679958 has been rejected; Reported
time is too far out of sync with master. Time difference of 30475ms > max allowed of 30000ms
at org.apache.hadoop.hbase.master.ServerManager.checkClockSkew(ServerManager.java:409)
at org.apache.hadoop.hbase.master.ServerManager.regionServerStartup(ServerManager.java:275)
at org.apache.hadoop.hbase.master.MasterRpcServices.regionServerStartup(MasterRpcServices.java:361)
at org.apache.hadoop.hbase.protobuf.generated.RegionServerStatusProtos$RegionServerStatusService
$2.callBlockingMethod(RegionServerStatusProtos.java:8615)
at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2180)
at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:112)
at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:133)
at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:108)
at java.lang.Thread.run(Thread.java:745)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
运行ntpdate后解决问题