多个NameNode的HDFS集群切换HA后,Spark应用变得很慢的处理办法

Spark客户端需要依次轮询到Active NameNode才能正确执行。
查看hdfs-site.xml配置,配置在hdfs-site.xml中的FailoverProxyProvider接口为ConfiguredFailoverProxyProvider。源码实现为:从hdfs-site.xml中查找所有的dfs.namenode.rpc-address键,依次遍历尝试,直到找到ActiveNameNode。

ConfiguredFailoverProxyProvider还有另外一个实现:org.apache.hadoop.hdfs.server.namenode.ha.RequestHedgingProxyProvider为升级版实现,同时并发发出请求,只要收到一个正确地响应,则认为是Active,并且马上取消掉其他请求。
我做了一个测试:
切换到第5个NameNode,执行hdfs dfs -ls /
ConfigBased: 10秒
RequestHedging: 1秒

可以发现,RequestHedging这种查找方式要比之前的方式更快。

posted @ 2022-05-15 09:55  斜杠代码日记  阅读(211)  评论(0编辑  收藏  举报