温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

HBase-0.98.9如何搭建配置

发布时间:2021-11-18 17:02:41 来源:亿速云 阅读:142 作者:小新 栏目:云计算

这篇文章主要介绍HBase-0.98.9如何搭建配置,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

一     配置

1.1      hbase-env.sh

其它不变,export HBASE_MANAGES_ZK=false,这表示不使用hbase自带的zookeeper,而使用外部的zookeeper(我使用的是跟hadoop集群配置的zookeeper)

1.2      hbase-site.xml

<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>

HBase-0.98.9如何搭建配置

1.3      regionservers

master1
master2
slave1

1.4      一些配置参数的解释

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

2     启动/关闭

在master1上执行

bin/start-hbase.sh

bin/stop-hbase.sh

3     测试

如果web管理页面可以打开,说明Hmaster启动成功:http:master1:60010

在master1上执行

{HBASE_HOME}/bin/hbase shell

进入shell命令行,通过创建表等操作来检查不是不工作正常。

hbase(main):001:0> create 'scores','grade', 'course'

4     注意事项

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:HBase-0.98.9如何搭建配置

修改之后,重新启动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下

4.经过上面几次折腾之后发现重启hbase之后,只有hMaster能启动,其他节点起不了。日志错误如下。手动启动regionserver后,发现hmaster又是变成阻塞状态,在shell控制台无法进行表操作。

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。

5. 重启hbase之后Hmaster启动不了,报错org.apache.hadoop.hbase.util.FileSystemVersionException: File system needs to be upgraded. You have version null and I want version 8。

解决方法:

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,数据得以恢复。

6. hbase升级到1.1.6之后,发现web端口60010打不开了。

原来是因为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如何搭建配置”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI