NameNode文件对象数大于内存规划

10 篇文章 0 订阅

问题背景与现象

上层组件访问HDFS缓慢,怀疑HDFS有性能问题。

可能原因

HDFS的存储的对象数超过NameNode配置的内存。

原因分析

  1. NameNode中文件对象需要占用一定的内存,消耗内存大小随文件对象的生成而线性递增。NameNode中,文件对象可以是文件、目录或者Block。在NameNode WebUI界面的Summary也可以看到文件系统对象(filesystem objects)的统计。
  1. 从Manager访问“Services > HDFS status > NameNode(Active) ”的Summary 页面查看HDFS的“Files and Directories ”以及“Block”的情况。

  1. 确认总对象数量是否超过NameNode内存配置值。NameNode内存配置参考值和文件对象数量关系如下

    文件数量

    (1文件对应1block)

    文件系统对象数量(filesystem objects=files+blocks

    参考值

    5,000,000

    10,000,000

    -Xms6G -Xmx6G -XX:NewSize=512M -XX:MaxNewSize=512M

    10,000,000

    20,000,000

    -Xms12G -Xmx12G -XX:NewSize=1G -XX:MaxNewSize=1G

    25,000,000

    50,000,000

    -Xms32G -Xmx32G -XX:NewSize=3G -XX:MaxNewSize=3G

    50,000,000

    100,000,000

    -Xms64G -Xmx64G -XX:NewSize=6G -XX:MaxNewSize=6G

    100,000,000

    200,000,000

    -Xms96G -Xmx96G -XX:NewSize=9G -XX:MaxNewSize=9G

    150,000,000

    300,000,000

    -Xms164G -Xmx164G -XX:NewSize=12G -XX:MaxNewSize=12G

     说明:
    • 文件系统对象数量 filesystem objects=files+blocks ;因此文件对象数量一般是文件数一倍以上。
    • 如果修改NameNode的GC_OPTS,参考如上表格只修改GC_OPTS的前四位。

解决办法

  1. 确认并调整NameNode内存:

     

    如果内存配置不合理,需要参考表格调整NameNode服务端的GC_OPTS的前4位,并重启NameNode生效(重启NameNode过程中,HDFS服务不可用,需中断业务)。

     

  2. 调整内存需同时调整监控转告警阈值。

     

    以适应当前NameNode内存对应的文件上限。(“调整告警阈值”步骤不会重启组件,因此不会影响业务)。

    说明:

    “调整告警阈值”步骤不会重启组件,因此不会影响业务。

     

  3. 如果无法增加内存,可以删除集群中无用文件,减少集群中的文件对象数量。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值