k8s环境 hbase服务异常排查-regionserver重复注册问题
一个regionserver 注册了两次,主机名和ip 各一次,引起hbase(phoenix)服务异常。先说下基础环境,zk,hbase部署在k8s,hdfs物理部署。beh-manager(简称manager)管理所有组件。manager死活连不上hbase服务,仔细查看报错,发现域名对应的ip地址有问题,已经不是当前了,log显示为192.168.217.27,实际已经变为192.1...
一个regionserver 注册了两次,主机名和ip 各一次,引起hbase(phoenix)服务异常。
先说下基础环境,zk,hbase部署在k8s,hdfs物理部署。beh-manager(简称manager)管理所有组件。
manager死活连不上hbase服务,仔细查看报错,发现域名对应的ip地址有问题,已经不是当前了,log显示为192.168.217.27,实际已经变为192.168.199.199.
com.google.protobuf.ServiceException: org.apache.hadoop.net.ConnectTimeoutException: 10000 millis timeout while waiting for channel to be ready for connect. ch : java.nio.channels.SocketChannel[connection-pending remote=manager-hbase-hmaster-1.manager-hbase.manager.svc.cluster.local/192.168.217.27:60000]
at org.apache.hadoop.hbase.ipc.AbstractRpcClient.callBlockingMethod(AbstractRpcClient.java:239)
at org.apache.hadoop.hbase.ipc.AbstractRpcClient$BlockingRpcChannelImplementation.callBlockingMethod(AbstractRpcClient.java:331)
at org.apache.hadoop.hbase.protobuf.generated.MasterProtos$MasterService$BlockingStub.isMasterRunning(MasterProtos.java:58383)
at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation$MasterServiceState.isMasterRunning(ConnectionManager.java:1584)
at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.isKeepAliveMasterConnectedAndRunning(ConnectionManager.java:2238)
at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.getKeepAliveMasterService(ConnectionManager.java:1855)
at org.apache.hadoop.hbase.client.MasterCallable.prepare(MasterCallable.java:38)
at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:124)
at org.apache.hadoop.hbase.client.HBaseAdmin.executeCallable(HBaseAdmin.java:4131)
at org.apache.hadoop.hbase.client.HBaseAdmin.executeCallable(HBaseAdmin.java:4124)
at org.apache.hadoop.hbase.client.HBaseAdmin.getClusterStatus(HBaseAdmin.java:2808)
at com.bonc.manager.rest.modules.function.dao.FunctionHbaseDao.getHbaseStatus(FunctionHbaseDao.java:97)
at
phoenix服务也有问题,错误现象跟之前遇到过的很像,SYSTEM.CATALOG PENDING_OPEN。
参考之前的解决思路,使用assign强行指定region,失败。
hbase(main):003:0> assign 'f887b1b747d984631fa21825fda0700f'
ERROR: 10000 millis timeout while waiting for channel to be ready for connect. ch : java.nio.channels.SocketChannel[connection-pending remote=/192.168.68.22:60020]
仔细查看各个容器对应的ip,未发现192.168.68.22,也无法ping通。但是60010页面确实存在该node,而且还有两个region。这里比较奇怪的就是一个regionserver 注册了两次,主机名和ip 各一次。
重启regionsever1,应该就是68.22,但现在ip已变成68.28.
60010查看
删除regionserver2验证,原ip 192.168.119.193,ip变为192.168.119.196;主机名也变为ip。
后查看regionserver日志,发现报错“Master passed us a different hostname to use”,
google发现问题相关解释,原因可能出在dns解析。
https://issues.apache.org/jira/browse/HBASE-14958
将hbase服务重置,还是存在ip,主机同时存在的问题,实际只有两个regionserver。68.3为regionserver1,再次使用assign命令成功。
连接测试失败,查看具体region状态,也没有部署成功。
再次执行assign貌似成功了,成功分配。
高兴地太早,出现大量not deployed,开始修复之旅。
最终判定为hbase自身注册机制问题,引发原因为容器环境没有给master配置所有节点的host主机映射。
下面这篇文章说的比较清楚了,https://blog.csdn.net/bryce123phy/article/details/83182942。
最终修改方案为手动通过hostalias 更新master的hosts文件解决。
但该解决方案需要根据对应环境进行修改,比较麻烦。
其他:
40.1环境 yarn服务突然挂了,nm死活连不上rm,最后发现rm双standby,
强行通过命令切换一个rm变为active后正常。
更多推荐
所有评论(0)