HBase集群搭建
写在开头:在部署hbase集群之前,先把hadoop集群部署好。然后把zookeeper集群部署好。然后部署hbase,注意hbase相关的配置文件。
1.上传hbase安装包
2.解压
3.配置hbase集群,要修改3个文件(首先zk集群已经安装好了)
//注意:要把hadoop的hdfs-site.xml和core-site.xml放到hbase/conf下 这是由于在配置<name>hbase.rootdir</name>时使用了抽象的路径,需要解析。 //另一种办法为:在$HBASE_HOME/conf/hbase-site.xml文件中进行配置,相对麻烦。
3.1修改hbase-env.sh
export JAVA_HOME=/usr/java/jdk1.7.0_55 //告诉hbase使用外部的zk,集群模式 export HBASE_MANAGES_ZK=false
3.2修改hbase-site.xml
<configuration> <!-- 指定hbase在HDFS上存储的路径 --> <!-- ns1表示nameservice的抽象--> <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>hadoop04:2181,hadoop05:2181,hadoop06:2181</value> </property> </configuration>
3.3修改regionservers,配置Hbase小弟位置
hadoop03
hadoop04
hadoop05
hadoop06
3.4拷贝hbase到其他节点---拷贝前,最好把“/docs”文档删除
scp -r /hadoop/hbase-0.96.2-hadoop2/ hadoop02:/hadoop/ scp -r /hadoop/hbase-0.96.2-hadoop2/ hadoop03:/hadoop/ scp -r /hadoop/hbase-0.96.2-hadoop2/ hadoop04:/hadoop/ scp -r /hadoop/hbase-0.96.2-hadoop2/ hadoop05:/hadoop/ scp -r /hadoop/hbase-0.96.2-hadoop2/ hadoop06:/hadoop/
4.将配置好的HBase拷贝到每一个节点并同步时间。
//根据错误日志,可得到slave2和maste机器时间差太多,导致启动失败,解决方法:同步集群的时间。
2015-07-17 09:28:19,392 INFO [regionserver60020] regionserver.HRegionServer: STOPPED: Unhandled: org.apache.hadoop.hbase.ClockOutOfSyncException: Server slave2,60020,1405560498057 has been rejected; Reported time is too far out of sync with master. Time difference of 28804194ms > max allowed of 30000ms at org.apache.hadoop.hbase.master.ServerManager.checkClockSkew(ServerManager.java:314) at org.apache.hadoop.hbase.master.ServerManager.regionServerStartup(ServerManager.java:215) at org.apache.hadoop.hbase.master.HMaster.regionServerStartup(HMaster.java:1292) at org.apache.hadoop.hbase.protobuf.generated.RegionServerStatusProtos$RegionServerStatusService$2.callBlockingMethod(RegionServerStatusProtos.java:5085) at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2185) at org.apache.hadoop.hbase.ipc.RpcServer$Handler.run(RpcServer.java:1889)
5.启动所有的hbase
//1.启动zk ./zkServer.sh start //2.启动hdfs集群 start-dfs.sh //3.启动hbase,在主节点上运行: start-hbase.sh
6.通过浏览器访问hbase管理页面
192.168.8.101:60010
7.为保证集群的可靠性,要在hadoop02节点上启动standby的HMaster
hbase-daemon.sh start master
同步集群时间(使用NTP)
1.修改选定的服务器(任意机器均可)的时区和本地时间
//设置时区命令: tzselect ,然后一步步的选择
#date -s '2014-11-21 12:48:30' +'%T' #2014-11-21 12:48:30为将要设定的时间,%T代表是24小时制
2. 将修改后的时间写入硬件时钟,确保重启有效
#hwclock -w
3. 配置NTP服务器(默认安装)
vim /etc/ntp.conf //在后面加上: server 127.127.1.0 Fudge 127.127.1.0 stratum 10 //关闭防火墙: #service iptables stop //重新启动服务: #service ntpd stop #service ntpd start
4.其他机器同步
等待大概五分钟,再到其他机上同步该机器时间(先确保时区一样,否则同步以后时间也是有时区差的)
ntpdate 服务器IP地址(第一步选定的主机IP)
//Date查看时间是否同步完成
5.根据需要,这里可以让分机器定时自动同步时间
5.1.crontab -e 编辑内容: * */12 * * * /usr/sbin/ntpdate 服务器IP(每12个小时更新一次)
5.2.保存退出即可,可以到/var/spool/mail/下查看记录