使用当前活动缓存提升客户端与NameNode的连接性能
操作场景
HDFS部署在具有多个NameNode实例的HA(High Availability)模式中,HDFS客户端需要依次连接到每个NameNode,以确定当前活动的NameNode是什么,并将其用于客户端操作。
一旦识别出来,当前活动的NameNode的详细信息就可以被缓存并共享给在客户端机器中运行的所有客户端。这样,每个新客户端可以首先尝试从缓存加载活动的Name Node的详细信息,并将RPC调用保存到备用的NameNode。在异常情况下有很多优势,例如当备用的NameNode连接长时间不响应时。
当发生故障,将另一个NameNode切换为活动状态时,缓存的详细信息将被更新为当前活动的NameNode的信息。
操作步骤
设置参数的路径如下:
在FusionInsight Manager页面中,选择“集群 > 服务 > HDFS > 配置”,选择“全部配置”,并在搜索框中输入参数名称。
参数 |
描述 |
默认值 |
---|---|---|
dfs.client.failover.proxy.provider.[nameservice ID] |
用已通过的协议创建namenode代理的Client Failover proxy provider类。配置成org.apache.hadoop.hdfs.server.namenode.ha.BlackListingFailoverProxyProvider,可在HDFS客户端使用NameNode黑名单特性。配置成org.apache.hadoop.hdfs.server.namenode.ha.ObserverReadProxyProvider,可使用从NameNode支持读的特性。 |
org.apache.hadoop.hdfs.server.namenode.ha.AdaptiveFailoverProxyProvider |
dfs.client.failover.activeinfo.share.flag |
启用缓存并将当前活动的NameNode的详细信息共享给其他客户端。若要启用缓存,需将其设置为“true”。 |
false |
dfs.client.failover.activeinfo.share.path |
指定将在机器中的所有客户端创建的共享文件的本地目录。如果要为不同用户共享缓存,该文件夹应具有必需的权限(如在给定目录中创建,读写缓存文件)。 |
/tmp |
dfs.client.failover.activeinfo.share.io.timeout.sec |
控制超时的可选配置。用于在读取或写入缓存文件时获取锁定。如果在该时间内无法获取缓存文件上的锁定,则放弃尝试读取或更新缓存。单位为秒。 |
5 |
由HDFS客户端创建的缓存文件必须由其他客户端重新使用。因此,这些文件永远不会从本地系统中删除。若禁用该功能,可能需要进行手动清理。