2017-02-16 54 views

回答

2

你的問題有點寬泛,但仍然會嘗試回答它。

Hadoop對任何算法都執行磁盤讀/寫操作,這是因爲Hadoop執行了面向磁盤的處理,並且是基於此原則構建的。這也是spark開發的原因之一,將計算從磁盤移動到內存,以便減少面向磁盤計算的延遲開銷。

現在,每次MapReduce迭代的從/到磁盤的讀/寫操作都有助於系統的健壯性和可靠性。考慮一個最簡單的例子,工作節點有2個容器,這意味着兩個單獨的JVM將運行在同一臺機器上他們將訪問該節點上可用的相同數據源。因此,如果Hadoop不會在每次更改時在磁盤上讀/寫數據,那麼第二個容器在訪問數據時可能會因更改而未更新,並且可能導致損壞和噪聲輸出。 這是Hadoop爲每個迭代映射縮減算法讀取和寫入磁盤的原因之一。

希望這個答案您的查詢。

+0

嗯,你提到Hadoop是否面向磁盤處理,爲什麼開發人員用這種方式設計?只是爲了更好的魯棒性? –

+0

健壯性是成本效益,靈活性等諸多因素之一。此外,hadoop被設計用於在大型數據集上進行處理,並且爲了實現Doug像大桌面這樣的想法,其中分佈式計算被用於面向磁盤的計算以處理非常大的數據集,並且他們決定採用大表格,因爲這樣他們能夠處理非常大量的數據,而這在以前是不可能的,並且一開始這就是目標。一旦開發人員能夠做到這一點,那麼他們就決定用內存計算來加快速度。 –

+0

所以,除了健壯性,Hadoop MapReduce是這樣做的,因爲那時某些應用程序在面向磁盤的計算的幫助下進行分佈式計算?我的觀點是爲什麼基於內存的處理框架(如Spark)是在面向磁盤的Hadoop MapReduce之後創建的?那是因爲Hadoop當時主要解決分佈式存儲問題,而Spark如果沒有適當的分佈式文件系統就無法顯示其優勢? –