更新时间:2025-07-12 GMT+08:00
配置HDFS客户端元数据缓存提高读取性能
操作场景
通过使用客户端缓存元数据块的位置,可以减少对NameNode的元数据查询次数,降低网络开销,提高客户端操作的响应速度,提高HDFS读取性能。
约束与限制
- 本章节适用于MRS 3.x及后续版本。
- 此功能仅用于读取不经常修改的文件。因为在服务器端由某些其他客户端完成的数据修改,对于高速缓存的客户端将是不可见的,这可能导致从缓存中拿到的元数据是过期的。
操作步骤
- 登录FusionInsight Manager。
登录集群Manager具体操作,请参考访问MRS集群Manager。
- 选择“集群 > 服务 > HDFS > 配置 > 全部配置”。
- 搜索以下参数名称,并根据需要修改参数值。
表1 参数配置 参数
描述
默认值
dfs.client.metadata.cache.enabled
是否开启块位置元数据的客户端缓存。
- true:开启
- false:关闭
false
dfs.client.metadata.cache.pattern
需要缓存的文件路径的正则表达式模式。只有这些文件的块位置元数据被缓存,直到这些元数据过期。
此配置仅在参数“dfs.client.metadata.cache.enabled”设置为“true”时有效。
示例:“/test.*”表示读取其路径是以“/test”开头的所有文件。
- 为确保一致性,配置特定模式以仅缓存其他客户端不经常修改的文件。
- 正则表达式模式将仅验证URI的path部分,而不验证在Fully Qualified路径情况下的schema和authority。
-
dfs.client.metadata.cache.expiry.sec
缓存元数据的持续时间。缓存条目在该持续时间过期后失效。即使在缓存过程中经常使用的元数据也会发生失效。
配置值可采用时间后缀s/m/h表示,分别表示秒,分钟和小时。
若将该参数配置为“0s”,将禁用缓存功能。
60s
dfs.client.metadata.cache.max.entries
缓存一次最多可保存的非过期数据条目。
取值范围:0~65536
65536
- 保存修改的配置。保存完成后请重新启动配置过期的服务或实例以使配置生效。

要在过期前完全清除客户端缓存,可调用DFSClient#clearLocatedBlockCache()。
用法如下所示。
FileSystem fs = FileSystem.get(conf); DistributedFileSystem dfs = (DistributedFileSystem) fs; DFSClient dfsClient = dfs.getClient(); dfsClient.clearLocatedBlockCache();
父主题: HDFS性能调优