文档首页/ MapReduce服务 MRS/ 组件操作指南(LTS版)/ 使用HDFS/ HDFS性能调优/ 配置HDFS客户端元数据缓存提高读取性能
更新时间:2025-07-14 GMT+08:00

配置HDFS客户端元数据缓存提高读取性能

操作场景

通过使用客户端缓存元数据块的位置,可以减少对NameNode的元数据查询次数,降低网络开销,提高客户端操作的响应速度,提高HDFS读取性能。

约束与限制

  • 本章节适用于MRS 3.x及后续版本。
  • 此功能仅用于读取不经常修改的文件。因为在服务器端由某些其他客户端完成的数据修改,对于高速缓存的客户端将是不可见的,这可能导致从缓存中拿到的元数据是过期的。

操作步骤

  1. 登录FusionInsight Manager。

    登录集群Manager具体操作,请参考访问MRS集群Manager

  2. 选择“集群 > 服务 > HDFS > 配置 > 全部配置”。
  3. 搜索以下参数名称,并根据需要修改参数值。

    表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

  4. 保存修改的配置。保存完成后请重新启动配置过期的服务或实例以使配置生效。

要在过期前完全清除客户端缓存,可调用DFSClient#clearLocatedBlockCache()

用法如下所示。

    FileSystem fs = FileSystem.get(conf);
    DistributedFileSystem dfs = (DistributedFileSystem) fs;
    DFSClient dfsClient = dfs.getClient();
    dfsClient.clearLocatedBlockCache();