2
如果數據集適合內存,Spark會表現最好,如果數據集不適合,它將使用磁盤,因此它與hadoop一樣快。我們假設我正在處理Tera/Peta字節的數據。與一個小羣集。顯然,沒有辦法使它適應記憶。 我的觀察是,在大數據時代,如果不是更多,大部分數據集都是千兆字節。具有大量數據的內存中處理引擎的好處是什麼?
那麼內存處理引擎的好處是什麼?
如果數據集適合內存,Spark會表現最好,如果數據集不適合,它將使用磁盤,因此它與hadoop一樣快。我們假設我正在處理Tera/Peta字節的數據。與一個小羣集。顯然,沒有辦法使它適應記憶。 我的觀察是,在大數據時代,如果不是更多,大部分數據集都是千兆字節。具有大量數據的內存中處理引擎的好處是什麼?
那麼內存處理引擎的好處是什麼?
我發現Spark相比Hadoop的MapReduce的優勢不僅僅是in-memory computation engine
甚至是磁盤輸入。至於我的關注,至少有兩大進步:
DAG execution engine
過的MapReduce的two phase execution
Thread level parallel execution
超過Process level parallel execution
要詳細一點:
你已經知道內存引擎的好處了。儘管如此,千兆內存並不多;我的桌面上有32G,我用過的一些機器有128G物理和更多。並非所有大數據都需要一次以PB計算*。 –
Spark不是「內存中的處理引擎」。這是一種常見的誤解,部分原因在於Spark早期如何提升。 Spark非常好地利用了內存,但它不需要將它在內存中處理的所有數據存儲爲快速。例如,Spark最近[打破了100TB的排序記錄](https://databricks.com/blog/2014/10/10/spark-petabyte-sort.html)。它所贏得的排序基準稱爲Daytona Gray,要求在開始時從磁盤讀取所有數據,並對數據進行排序,然後在最後寫回磁盤。沒有「內存中計算」快捷方式。 –
當您在數據集上進行迭代計算時(最常用機器學習完成),內存中處理會帶來最大優勢。在迭代時能夠將海量數據集的一部分保留在內存中比每次迭代讀取和寫入磁盤的中間結果要快得多。 –