这篇文章主要介绍HBase-0.98.9如何搭建配置,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
其它不变,export HBASE_MANAGES_ZK=false,这表示不使用hbase自带的zookeeper,而使用外部的zookeeper(我使用的是跟hadoop集群配置的zookeeper)
<configuration> <property> <name>hbase.rootdir</name> <value>hdfs://master1:8020/hbase</value> <description>The directory shared by region servers.</description> </property> <property> <name>hbase.zookeeper.property.clientPort</name> <value>2181</value> <description>Property from ZooKeeper's config zoo.cfg. The port at which the clients will connect. </description> </property> <property> <name>zookeeper.session.timeout</name> <value>120000</value> </property> <property> <name>hbase.zookeeper.quorum</name> <value>master1,master2,slave1</value> </property> <property> <name>hbase.tmp.dir</name> <value>/root/hbasedata</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> </configuration>
master1 master2 slave1
hbase.zookeeper.property.clientPort:指定zk的连接端口
zookeeper.session.timeout:RegionServer与Zookeeper间的连接超时时间。当超时时间到后,ReigonServer会被Zookeeper从RS集群清单中移除,HMaster收到移除通知后,会对这台server负责的regions重新balance,让其他存活的RegionServer接管.
hbase.zookeeper.quorum:默认值是 localhost,列出zookeepr ensemble中的servers
在master1上执行
bin/start-hbase.sh
bin/stop-hbase.sh
如果web管理页面可以打开,说明Hmaster启动成功:http:master1:60010
在master1上执行
{HBASE_HOME}/bin/hbase shell
进入shell命令行,通过创建表等操作来检查不是不工作正常。
hbase(main):001:0> create 'scores','grade', 'course'
HBase集群需要依赖于一个Zookeeper ensemble。HBase集群中的所有节点以及要访问HBase的客户端都需要能够访问到该Zookeeper ensemble。HBase自带了Zookeeper,但为了方便其他应用程序使用Zookeeper,最好使用单独安装的Zookeeper ensemble。
此外,Zookeeper ensemble一般配置为奇数个节点,并且Hadoop集群、Zookeeper ensemble、HBase集群是三个互相独立的集群,并不需要部署在相同的物理节点上,他们之间是通过网络通信的。
需要注意的是,如果要禁止启动hbase自带的zookeeper,那么,不仅仅需要刚才的export HBASE_MANAGES_ZK=false配置,还需要hdfs-site.xml中的hbase.cluster.distributed为true,否则你在启动时会遇到Could not start ZK at requested port of 2181 错误,这是因为hbase尝试启动自带的zookeeper,而我们已经启动了自己安装的那个zookeeper,默认都使用2181端口,所以出错。
还有,有时候会遇到stop-hbase.sh执行很长时间未结束,很可能的原因是你之前把zookeeper关闭了.
最后,Hbase不需要mapreduce,所以只要start-dfs.sh启动hdfs,然后到zookeeper各节点上启动zookeeper,最后再hbase-start.sh启动hbase即可.
1. habse启动失败,查看日志发现报错:
zookeeper 启动失败 BindException: Address already in use
原因:zk在hbase启动之前就已经启动(因为我采用的是外部的zk集群)。解决方法是环境变量设置export HBASE_MANAGES_ZK=false,同时确保hbase-env.sh里也是相同设置。
2. 再次启动发现hmaster还是没有起起来,查看日志发现报错:
hbase java.lang.runtimeexception hmaster aborted,查找error那一行是failed on connection exception: java.net.ConnectException: master1 Connection refused
原因:master1节点跟hadoop集群连接失败,怀疑是hbase-site.xml配置有问题。其与hadoop连接配置为:
<name>hbase.rootdir</name>
<value>hdfs://master1:9000/hbase</value>
这里配置的9000,而集群fs.defaultfs 本来端口是8020:
修改之后,重新启动hvase,一切正常。。。
3. hbase内置hadoop jar包跟已有的集群版本不一样,需要进行替换以确保稳定性和一致性。
rm -rf /usr/hbase-0.98.21-hadoop2/lib/hadoop*.jar
find /usr/hadoop/share/hadoop -name "hadoop*jar" | xargs -i cp {} /usr/hbase-0.98.21-hadoop2/lib
替换之后重启发现hmaster又启动不起来了,查看日志发现:
Caused by: java.lang.ClassNotFoundException: com.amazonaws.auth.AWSCredentialsProvider
少了一个jar包。
解决方案:
需要将 hadoop-2.6.3/share/hadoop/tools/lib/aws-java-sdk-1.7.4.jar 拷贝到hbase/lib下
2015-07-01 04:39:34,480 WARN [MASTER_META_SERVER_OPERATIONS-master:60000-0] master.AssignmentManager: Can't move 1588230740, there is no destination server available. 2015-07-01 04:39:34,480 WARN [MASTER_META_SERVER_OPERATIONS-master:60000-0] master.AssignmentManager: Unable to determine a plan to assign {ENCODED => 1588230740, NAME => 'hbase:meta,,1', STARTKEY => '', ENDKEY => ''} 2015-07-01 04:39:35,480 WARN [MASTER_META_SERVER_OPERATIONS-master:60000-0] master.AssignmentManager: Can't move 1588230740, there is no destination server available. 2015-07-01 04:39:35,481 WARN [MASTER_META_SERVER_OPERATIONS-master:60000-0] master.AssignmentManager: Unable to determine a plan to assign {ENCODED => 1588230740, NAME => 'hbase:meta,,1', STARTKEY => '', ENDKEY => ''} 2015-07-01 04:39:36,379 ERROR [RpcServer.handler=6,port=60000] master.HMaster: Region server server2.corp.gs.com,60020,1435743503791 reported a fatal error: ABORTING region server server1.corp.gs.com,60020,1435743483790: org.apache.hadoop.hbase.YouAreDeadException: Server REPORT rejected; currently processing server1.corp.gs.com,60020,1435743483790 as dead server at org.apache.hadoop.hbase.master.ServerManager.checkIsDead(ServerManager.java:339) at org.apache.hadoop.hbase.master.ServerManager.regionServerReport(ServerManager.java:254) at org.apache.hadoop.hbase.master.HMaster.regionServerReport(HMaster.java:1343) at org.apache.hadoop.hbase.protobuf.generated.RegionServerStatusProtos$RegionServerStatusService$2.callBlockingMethod(RegionServerStatusProtos.java:5087) at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2175) at org.apache.hadoop.hbase.ipc.RpcServer$Handler.run(RpcServer.java:1879) Cause: org.apache.hadoop.hbase.YouAreDeadException: org.apache.hadoop.hbase.YouAreDeadException: Server REPORT rejected; currently processing server1.corp.gs.com,60020,1435743483790 as dead server
原因:极有可能是zk机器的hbase数据错误。
解决方案:
1. 停掉所有hbase的进程先
2. 删掉zk中的hbase数据
hbase zkcli或者bin/zkCli.sh进入zk命令行 ls / #可以看到hbase数据存在 rmr /hbase #删除hbase数据
3. 运行hdfs fsck /hbase 确保数据没有冲突
4. 重新启动start-hbase.sh
5. 如果还是只有主节点运行,则手动启动regionserver
./hbase-daemon.sh start regionserver
6. 运行 hbase hbck 监测数据是否一致。如果有问题再运行 hbase hbck -fix (or
-repair)
* 运行hbase hbck - repair 有时候会报错connection refuse,这是因为regionserver又挂掉了,要确保regionserver是运行状态
还有问题参考下这篇文章吧http://apache-hbase.679495.n3.nabble.com/Corrupted-META-td4072787.html。
解决方法:
log中可以发现可能是hbase.version文件消失了,如果只是测试hbase,可以直接把hdfs中的/hbase删掉。,然后重启就好了,但是以前的数据就丢失了。
bin/hadoop fs -ls /hbase
发现/hbase/hbase.version确实已经消失了,去/lost+found目录找确实能找到。
如果需要保留以前数据,可以按下面步骤:
bin/hadoop fs -mv /hbase /hbase.bk
重启HBase,这时就生成了/hbase/hbase.version文件,然后:
bin/hadoop fs -cp /hbase/hbase.version /hbase.bk/ bin/hadoop fs -rmr /hbase bin/hadoop fs -mv /hbase.bk /hbase
这样再次重启HBase,发现Hbase开始splitting hlogs,数据得以恢复。
原来是因为1.0版本之后的hbase的master web 默认是不运行的,所以需要自己配置默认端口。配置如下
在hbase-site.xml中加入一下内容即可
<property>
<name>hbase.master.info.port</name>
<value>60010</value>
</property>
同理可以配置regionserver web端口
以上是“HBase-0.98.9如何搭建配置”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。