我在CDH 5.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容量正在减少一个节点。
答案 0 :(得分:3)
GC pool' ConcurrentMarkSweep'有集合:count = 1 time = 12707ms
您正在使用CMS收集器遇到长时间的GC暂停。
要进一步调查,您应该通过@color-name
打开GC日志记录,如果您还在使用java 7,还要添加-Xloggc:<path to gc log file> -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintGCDetails
。
GCViewer可以帮助您查看日志。
一旦找到原因,您可以尝试调整CMS以避免这些暂停。对于初学者,有official CMS tuning guide。
答案 1 :(得分:0)
我们刚遇到一个运行CDH 5.3.2的非常类似的问题,我们无法在Hadoop集群上成功启动HDFS NameNode服务。
当时非常令人费解,因为我们没有观察到/ var / log / messages和/var/log/hadoop-hdfs/NAMENODE.log.out中除 <之外的任何明显的错误em> WARN org.apache.hadoop.util.JvmPauseMonitor:检测到JVM或主机中的暂停(例如GC)
在使用Cloudera支持后,我们能够确定我们遇到了一个没有被记录的OOM异常......作为一般的经验法则,请查看堆大小的配置。对于每100万个块,您应该至少有1GB的堆大小。
在我们的例子中,解决方案就像增加NameNode和Secondary NameNode服务的Java堆大小以及重新启动...一样简单,因为我们有1.5百万块,但只使用堆大小的默认1GB设置。在增加Java堆大小并重新启动HDFS服务之后,我们全面都是绿色的。
干杯!