gpt4 book ai didi

Hadoop DataNode 内存消耗和 GC 行为

转载 作者:可可西里 更新时间:2023-11-01 16:55:29 28 4
gpt4 key购买 nike

最近,我们的集群 (CDH 5.3.1) 遇到了问题,这体现在 NameNode 和 DataNode 中,GC 周期从 30 秒到几分钟不等。

JVM 设置仍然是默认设置,但鉴于我们的集群同时增长到 3400 万个 block ,这种行为是可以解释的。

对于 NN,对堆大小的简单调整和对 GC 设置的其他小调整(例如新生代大小、幸存者比率)再次让我们获得了可预测的短 GC 暂停。

然而,对于 DN,我们仍然遭受周期性的长时间 GC 暂停。我观察到异常长的 GC 暂停每 6 小时发生一次(Full GC)。现在我假设 Cloudera 将 blockreport 间隔 dfs.blockreport.intervalMsec 的默认值设置为 6 小时促成了这种模式。

我想了解的是,如果有建议我可以如何解决这个问题,我需要找到既能满足正常操作内存分配(似乎大部分都很好)又能满足快速分配的 GC 设置我每 6 小时看一次,持续几分钟。

DN 服务器有 256G 内存和 20 个物理内核

这是 Java 热点 jdk1.7.0_67。

我当前的次优设置是:

-server 
-Xmn5g
-Xms12884901888
-Xmx12884901888
-XX:SurvivorRatio=3
-XX:+UseParNewGC
-XX:+UseConcMarkSweepGC
-XX:+CMSConcurrentMTEnabled
-XX:CMSInitiatingOccupancyFraction=60
-XX:+CMSParallelRemarkEnabled
-XX:+UseCMSInitiatingOccupancyOnly
-XX:+ScavengeBeforeFullGC
-XX:+CMSScavengeBeforeRemark
-XX:MaxTenuringThreshold=15

我也很想知道除了调整 JVM 之外,是否还有一种方法可以影响 blockreport 不那么激进?

有关时间范围的问题,请参阅 gc 日志: http://hastebin.com/zafabohowi

最佳答案

好的,通过GCViewer运行日志似乎有一个事件的爆发(例如从 17:09 开始)填满了老一代,直到它导致一些失败(在 17:15)。

简单地尝试增加堆大小以给它更多的喘息空间,直到任务完成。

除了并发模式故障之外,似乎还有一些相对较长的停顿,请尝试应用 these options看看他们是否可以缩短几毫秒。

关于Hadoop DataNode 内存消耗和 GC 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30508303/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com