栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

双Observer NameNode不能正常failover的问题

双Observer NameNode不能正常failover的问题

描述下现象:

节点角色:
node1: Active NN
node2: Standby NN
node3: Observer NN
node4: Observer NN

测试过程:

客户端读数据,能够直接找到node3这个Observer NN去读,接着我们把node3的namenode给kill掉,理论上讲客户端读数据的请求应该会failover到node4这个Observer NN上,但是测试中,发现node4的NN的rpcQueueTimeOps激增,说明rpc请求确实被failover到node4上了,但是只是入队了,并没有处理请求,审计日志也没有任何信息(证明确实没处理读请求)。

因此我们需要弄清楚这个问题的原因,并解决它。

解决过程:

对node4上的Observer NN抓火焰图:

发现了requeueCall操作比较多。因此看下requeueCall方法什么时机被调用,搜到源码中,是在Server#Handler#run方法中调用,问题的关键就在于if条件里面的与操作都是真,才会进入到if条件语句里执行requeue操作。在我的场景下,前两个条

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/707082.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号