我一直在閱讀關於Hadoop Map/Reduce的一些文章,而一般的主題似乎是:Hadoop Jobs是I/O密集型的(例如:使用Map/Reduce排序)。爲什麼Hadoop被認爲是I/O密集型的?
什麼使得這些工作I/O密集型(鑑於Hadoop推動計算到數據的事實)? 示例:爲什麼在Hadoop I/O密集型中排序?
我的直覺:似乎在映射階段之後,中間對被髮送給reducer。這是否導致了巨大的I/O?
我一直在閱讀關於Hadoop Map/Reduce的一些文章,而一般的主題似乎是:Hadoop Jobs是I/O密集型的(例如:使用Map/Reduce排序)。爲什麼Hadoop被認爲是I/O密集型的?
什麼使得這些工作I/O密集型(鑑於Hadoop推動計算到數據的事實)? 示例:爲什麼在Hadoop I/O密集型中排序?
我的直覺:似乎在映射階段之後,中間對被髮送給reducer。這是否導致了巨大的I/O?
Hadoop用於對大量數據執行計算。您的工作可能受到IO(資源密集型,稱爲I/O密集型),CPU和網絡資源的限制。在使用Hadoop的經典案例中,您正在對大量輸入數據執行本地計算,同時返回相對較小的結果集,這使得您的任務比CPU和網絡密集型更具IO密集度,但它非常依賴於作業本身。以下是一些示例:
您可以參考this guide爲集羣 的初始調整,爲什麼排序是IO密集型的?首先,您從磁盤讀取數據。接下來,在排序映射器生成的數據量與讀取的數據量相同時,意味着它很可能不適合內存,並且應該傳播到磁盤。然後它被轉移到reducer並再次溢出到磁盤。然後它被減速器處理並再次沖刷到磁盤。而排序所需的CPU相對較小,特別是如果排序關鍵字是數字並且可以從輸入數據輕鬆解析。
是的,數據寫入磁盤。 – 2014-09-03 20:21:00
有計算密集的情況嗎?傳統的排序算法在一般意義上需要大量的計算。 – 2014-09-03 20:24:59
是的,當你沒有從磁盤讀取(很多)的東西;-) – 2014-09-03 20:25:58