Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Datanode在JVM暂停时遇到问题_Java_Hadoop_Garbage Collection_Jvm_Cloudera Cdh - Fatal编程技术网

Java Datanode在JVM暂停时遇到问题

Java Datanode在JVM暂停时遇到问题,java,hadoop,garbage-collection,jvm,cloudera-cdh,Java,Hadoop,Garbage Collection,Jvm,Cloudera Cdh,我使用的是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 知道我为

我使用的是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容量偶尔会下降一个节点

GC池“ConcurrentMarkSweep”具有集合:计数=1次=12707ms

您正在使用CMS收集器经历长时间的GC暂停

为了进一步调查,您应该通过
-Xloggc:-XX:+printgcdatastamps-XX:+printgtimestamps-XX:+printgcdestamps-XX:+printgcdestamps-XX:+printgcdestamps
打开GC日志记录,如果您在java 7上,还可以添加
-XX:+printgcause

可以帮助可视化日志


找到原因后,可以尝试调整CMS以避免这些暂停。首先,我们在运行CDH 5.3.2时遇到了一个非常类似的问题,我们无法在Hadoop集群上成功启动HDFS NameNode服务

当时这非常令人费解,因为我们没有在/var/log/messages和/var/log/hadoop hdfs/NAMENODE.log.out中观察到任何明显的错误,而不是WARN org.apache.hadoop.util.JvmPauseMonitor:在JVM或主机(例如GC)中检测到暂停。

在与Cloudera支持部门合作后,我们能够确定我们遇到了一个未被记录的OOM异常。。。作为一般的经验法则,请查看堆大小的配置。。。对于每一百万个块,您应该至少有1GB的堆大小

在我们的例子中,解决方法非常简单,只需增加NameNode和次要NameNode服务的Java堆大小,然后重新启动。。。因为我们有150万块,但堆大小只使用默认的1GB设置。在增加Java堆大小并重新启动HDFS服务之后,我们全面实现了绿色

干杯