2015-08-03 91 views
2

我在CDH 5.1.2上,我發現這個數據節點經常停頓時出現這個錯誤。我從日誌中看到這一點。Datanode在JVM暫停時遇到問題

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容量正在下降一個節點。

回答

3

GC池 'ConcurrentMarkSweep' 有收集(S):數= 1次= 12707ms

您遇到與CMS收集長GC暫停。

要進一步調查,您應該打開通過-Xloggc:<path to gc log file> -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintGCDetails GC日誌記錄,並且如果您在Java 7上還添加-XX:+PrintGCCause

GCViewer可以幫助可視化日誌。

一旦找到原因,您可以嘗試調整CMS以避免這些暫停。首先,有official CMS tuning guide

0

我們剛剛遇到了一個運行CDH 5.3.2的非常類似的問題,我們無法在Hadoop集羣上成功啓動HDFS NameNode服務。

當時,這是非常令人費解,因爲我們並沒有在/ var/log/messages中觀察到任何明顯的錯誤和/var/log/hadoop-hdfs/NAMENODE.log.out以外WARN組織。 apache.hadoop.util.JvmPauseMonitor:在JVM檢測暫停或主機(例如GC)

與Cloudera的支持工作後,我們能夠確定的是,我們正在運行成沒有被記錄的OOM異常。 ..作爲一般的經驗法則來看看你的堆大小的配置......每100萬塊你應該至少有1GB的堆大小。

在我們的案例中,解決方案與增加NameNode和Secondary NameNode服務的Java堆大小以及重新啓動...一樣簡單,因爲我們有150萬個塊,但僅對堆大小使用默認的1GB設置。在增加Java堆大小並重新啓動HDFS服務之後,我們全面綠化。

乾杯!