更新时间:2022-12-14 GMT+08:00

配置NameNode blacklist

配置场景

在现有的缺省DFSclient failover proxy provider中,一旦某进程中的一个NameNode发生故障,在同一进程中的所有HDFS client实例都会尝试再次连接NameNode,导致应用长时间等待超时。

当位于同一JVM进程中的客户端对无法访问的NameNode进行连接时,会对系统造成负担。为了避免这种负担,MRS集群搭载了NameNode blacklist功能。

在新的Blacklisting DFSClient failover provider中,故障的NameNode将被记录至一个列表中。DFSClient会利用这些信息,防止客户端再次连接这些NameNode。该功能被称为NameNode blacklisting。

例如,如下集群配置:

namenode:nn1、nn2

dfs.client.failover.connection.retries:20

单JVM中的进程:10个客户端

在上述集群中,如果当前处于active状态的nn1无法访问,client1将会对nn1进行20次重新连接,之后发生故障转移,client1将会连接至nn2。与此相同,client2至client10也会在对nn1进行20次重新连接后连接至nn2。这样会延长NameNode的整体故障恢复时间。

针对该情况,当client1试图连接当前处于active状态的nn1,但其已经发生故障时,nn1将会被添加至blacklist。这样其余client就不会连接已被添加至blacklist的nn1,而是会选择连接nn2。

若在任一时刻,所有NameNode都被添加至blacklist,则其内容会被清空,client会按照初始的NameNode list重新尝试连接。若再次出现任何故障,NameNode仍会被添加至blacklist。

图1 NameNode blacklisting状态图

配置描述

请参考修改集群服务配置参数,进入HDFS的“全部配置”页面,在搜索框中输入参数名称。

表1 NameNode blacklisting的相关参数

参数

描述

默认值

dfs.client.failover.proxy.provider.[nameservice ID]

利用已通过的协议创建namenode代理的Client Failover proxy provider类。

将参数值设置为“org.apache.hadoop.hdfs.server.namenode.ha.BlackListingFailoverProxyProvider”

可使用从NameNode支持读的特性。

org.apache.hadoop.hdfs.server.namenode.ha.AdaptiveFailoverProxyProvider