hbase 多网卡问题
背景
有一个hbase集群,部署在两台机器上,两台机器上有两个网卡,一个通外网一个通内网,现在我们远程连接使用外网连接hbase。hbase版本是1.1版本,hbase集群有一个active master,一个standby master,一个region server。
问题
连接不到hbase,一直超时重试
原因
集群中Hmaster绑定的ip是内网,导致连接不通,但是查看hbase-site.xml,不能找到修改绑定ip的配置,0.9的hbase是可以修改hbase.master配置,这个版本的hbase只能修改绑定的端口,至于ip如何确定,这个版本的hbase,是根据本机名的hostname的第一个匹配的ip进行绑定的。
解决
修改hbase集群master机器的/etc/hosts中的配置,将外网ip绑定到本机名放在第一个。启动之后还是有问题,是在重启的过程中,hbase的状态变为了下面的情况
hbase(main):001:0> status
ERROR: org.apache.hadoop.hbase.PleaseHoldException: Master is initializing
at org.apache.hadoop.hbase.master.HMaster.checkInitialized(HMaster.java:1889)
at org.apache.hadoop.hbase.master.MasterRpcServices.getClusterStatus(MasterRpcServices.java:695)
at org.apache.hadoop.hbase.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java:42406)
at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2033)
at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:107)
at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:130)
at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:107)
at java.lang.Thread.run(Thread.java:745)
解决办法:将zookeeper中的hbase目录删除rmr hbase,然后重启hbase集群