Linux
管理 Hadoop 集群中的可用文件描述符
我目前為我的雇主負責一個快速增長的 Hadoop 集群,目前建構在 0.21.0 版本之上,CentOS 作為每個工作節點和主節點的作業系統。我已經解決了大多數標準配置問題(負載平衡、HDFS 的 IO 規劃、確保有足夠的磁碟空間可用於溢出操作等),但沒有找到關於文件描述符數量管理的好的文件每個任務跟踪器、數據節點、映射器或減速器都需要。
到目前為止,我閱讀的文件(跨 Hadoop 和 HBase)模糊地指出溢出操作在嘗試寫入磁碟時會同時消耗大量描述符。當然,該文件沒有提供所述描述符的範圍或預期壽命的細分。給出的唯一建議是提高系統限制,這似乎是一種解決方法,但作為長期規劃的策略是虛假的。
我不知道 Hadoop 對其所需文件描述符的數量做出了什麼假設。因此,在正常作業的生命週期內(即不依賴於 MultipleOutputs),根據配置計算每個映射器、reducer、任務跟踪器和數據節點所需的文件描述符總數將非常有用。
目前是否存在這樣的計算,如果存在,我可以合理估計我的限制應該與定義的任意數量的工作相關嗎?
(為了增加其他遇到此問題的人發現此問題的可能性,當可用描述符池已用盡時,Hadoop 將愉快地拋出 java.io.EOFException 和 java.io.IOException(指向錯誤的文件描述符)。這我花了幾個小時來追踪,因為這些異常中包含的消息非常通用。)
這是 Hadoop 生態系統中問題的主要來源,AFAIK 對此類資源的全面規劃沒有一個好的答案。總的來說,它不是一個企業級質量的 Hadoop 發行版,它不會支持您對系統應用的值得稱讚的勤奮程度。
但是,我很確定在接下來的幾個月中會有一個。