datanode在jvm暂停时遇到问题

toiithl6  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(891)

我使用的是cdh5.1.2,我看到了一个datanode经常暂停的错误。我从日志上看到的。

WARN org.apache.hadoop.util.JvmPauseMonitor: Detected pause in JVM or host machine (eg GC): pause of approximately 12428ms
GC pool 'ConcurrentMarkSweep' had collection(s): count=1 time=12707ms

你知道我为什么看到这个吗?hdfs容量偶尔会下降一个节点。

332nm8kg

332nm8kg1#

gc池“concurrentmarksweep”有个集合:计数=1时间=12707ms
cms收集器的gc暂停时间过长。
要进一步调查,您应该通过打开gc日志记录 -Xloggc:<path to gc log file> -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintGCDetails 如果您使用的是Java7,还可以添加 -XX:+PrintGCCause .
gcviewer可以帮助可视化日志。
一旦你找到了原因,你可以尝试调整cms以避免这些暂停。对于初学者,有官方的cms调优指南。

csga3l58

csga3l582#

我们在运行cdh5.3.2时遇到了一个非常类似的问题,我们无法在hadoop集群上成功启动hdfsnamenode服务。
当时这非常令人费解,因为我们在/var/log/messages和/var/log/hadoop hdfs/namenode.log.out中没有观察到任何明显的错误,而不是warn org.apache.hadoop.util.jvmpausemonitor:在jvm或主机(例如gc)中检测到暂停
在与cloudera支持部门合作后,我们能够确定遇到了一个未被记录的oom异常。。。一般的经验法则是看一下堆大小的配置。。。对于每一百万个块,应该至少有1gb的堆大小。
在我们的例子中,解决方法非常简单,只需增加namenode和secondary namenode服务的java堆大小,然后重新启动。。。因为我们有150万块,但堆大小只使用默认的1gb设置。在增加java堆大小并重新启动hdfs服务之后,我们的总体情况是绿色的。
干杯!

相关问题