HDFS too many open files,fd limit的問題(二)

問題本身是明確的:由於操作HDFS的進程,打開了過多的本地文件,導致fd limit達到上限,進而其他需要打開文件(廣義的文件的概念)的進程報錯。


需要注意的是,這個錯誤影響到了多個進程,並且這些進程間好像沒有繼承關係(parent-child)?所以,從HDFS進程的錯誤日誌,無法確定是進程層面的limit到了,還是系統層面的limit到了。


解決這個問題,必須同時確保三個層面的配置是正確的。


一是進程層面,就是/etc/security/limits.conf文件,以及/etc/security/limits.d目錄下面的獨立於具體程序的各個配置文件,調整其中的nofile配置項。
二是系統層面,/proc/sys/fs/file-max文件,關於是否需要調整這個文件的內容,參考/proc/sys/fs/file-nr文件的內容。程序運行過程中,各個進程的總和超過系統的限制,還是會報錯。
三是程序層面,/etc/security/limits.d目錄下,和具體程序緊耦合的配置文件,比如hdfs.conf等等。


務必檢查和調整這三個層面。


除了調整fd limit外,引起這個問題的原因,也就是job的map tasks數量,也需要控制。這方面具體的方法我也不清楚。參考之前的郵件。


參考:
1、http://blog.csdn.net/sdn_prc/article/details/28661661,我很早之前寫的,也許有些小錯誤
2、man 5 proc,查找file-max和file-nr
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章