【Hadoop VS Spark 】Hadoop VS Spark

         HadoopSpark都是Apache Software Foundation的開源項目,兩者都是大數據分析的旗艦產品。Hadoop已經領導大數據市場超過5年。根據我們最近的市場調查,Hadoop的安裝基數達到了50,000多個客戶,而Spark僅擁有10,000多個安裝。然而,Spark的受歡迎程度在2013年飆升,以便在一年內克服Hadoop。新安裝增長率(2016/2017)顯示趨勢仍在持續。Spark的表現優於Hadoop,分別爲47%和14---可忽略。

 

Hadoop MapReduceSpark之間的關鍵區別

    爲了使比較公平,我們將在這裏將SparkHadoop MapReduce進行對比,因爲它們都負責數據處理。實際上,它們之間的關鍵區別在於處理方法:Spark可以在內存中執行,而Hadoop MapReduce必須讀取和寫入磁盤。因此,處理速度顯著不同 Spark可能快100倍。但是,處理的數據量也不同:Hadoop MapReduce能夠處理比Spark大得多的數據集。

 

任務Hadoop MapReduce適用於:

  • 線性處理大量數據集。Hadoop MapReduce允許並行處理大量數據。它將大塊分解爲較小的塊,以便在不同的數據節點上單獨處理,並自動收集多個節點上的結果以返回單個結果。如果結果數據集大於可用RAM,則Hadoop MapReduce可能優於Spark
  • 經濟的解決方案,如果沒有預期的立即結果real-time result。如果處理速度不是很關鍵, MapReduce是一個很好的解決方案。例如,如果數據處理可以在夜間完成,考慮使用Hadoop MapReduce很有意義。 

 

任務Spark適用於:

  • 快速的數據處理。內存處理使SparkHadoop MapReduce更快 - RAM中的數據高達100倍,存儲中的數據高達10倍。
  • 迭代處理。 如果任務是一次又一次地處理數據--Spark會擊敗Hadoop MapReduceSpark的彈性分佈式數據集(RDD)在內存中啓用多個映射操作,而Hadoop MapReduce必須將臨時結果寫入磁盤。
  • 近實時處理。 如果企業需要near real time process,那麼他們應該選擇Spark及其內存處理。
  • 圖處理。Spark的計算模型適用於圖形處理中常見的迭代計算。Apache SparkGraphX - 用於圖形計算的API
  • 機器學習SparkMLlib - 一個內置的機器學習庫,而Hadoop需要第三方來提供它。MLlib具有開箱即用的算法,也可以在內存中運行。
  • 加入數據集。由於它的速度,Spark可以更快地創建所有組合,但是如果需要大量的重組和排序的非常大的數據集的連接,Hadoop可能會更好。

實際應用的例子

    分析了幾個實際應用的例子得出結論。由於快速甚至接近實時處理,Spark可能在以下所有應用中都優於MapReduce。如下:

  • 客戶細分。分析客戶行爲並識別表現出類似行爲模式的客戶羣將有助於企業瞭解客戶偏好並創建獨特的客戶體驗。
  • 風險管理。預測不同的可能情景可以幫助管理者通過選擇非風險選項做出正確的決策。
  • 實時欺詐檢測。在藉助機器學習算法對系統進行歷史數據訓練之後,它可以使用這些發現來實時識別或預測可能發出欺詐信號的異常現象。
  • 工業大數據分析。它還涉及檢測和預測異常,但在這種情況下,這些異常與機械故障有關。正確配置的系統從傳感器收集數據以檢測故障前狀況。

 

選擇哪個框架?

  • 大型數據集的線性處理Hadoop MapReduce的優勢。
  • Spark提供快速性能迭代處理, 實時分析,圖形處理,機器學習等。在許多情況下,Spark可能會勝過Hadoop MapReduce

    好消息是SparkHadoop生態系統完全兼容,並且可以與Hadoop分佈式文件系統,Apache Hive等一起順利運行。如下圖:

**** Spark使用MapReduce進行可選處理,使用YARN進行資源分配 ****

 

下圖是Spark的架構圖:

  1. Spark Core  - Spark Core是大規模並行和分佈式數據處理的基礎引擎。此外,構建在覈心之上的其他庫允許流,SQL和機器學習的各種工作負載。它負責內存管理和故障恢復,調度,分發和監視羣集上的作業以及與存儲系統交互。
  2. 羣集管理  - 羣集管理器用於獲取用於執行作業的羣集資源。Spark核心運行在各種集羣管理器上,包括Hadoop YARN,Apache Mesos,Amazon EC2和Spark的內置集羣管理器。集羣管理器處理Spark應用程序之間的資源共享。另一方面,Spark可以訪問HDFS,Cassandra,HBase,Hive,Alluxio和任何Hadoop數據源中的數據
  3. Spark Streaming  - Spark Streaming是Spark的組件,用於處理實時流數據。
  4. Spark SQL:Spark SQL是Spark中的一個新模塊,它將關係處理與Spark的函數式編程API集成在一起。它支持通過SQL或Hive查詢語言查詢數據。Spark SQL的DataFrame和Dataset API爲結構化數據提供了更高級別的抽象。
  5. GraphX:GraphX是用於圖形和圖形並行計算的Spark API。因此,它使用彈性分佈式屬性圖擴展了Spark RDD。
  6. MLlib(機器學習):MLlib代表機器學習庫。Spark MLlib用於在Apache Spark中執行機器學習。

1Spark  vs  Hadoop:性能

Spark是一個快速框架,因爲它可以執行內存中處理,Disks可用於存儲和處理適合內存的數據。Spark內存處理可以提供近乎實時的分析。因此,它用於機器學習,安全分析,物聯網傳感器和信用卡處理系統。

另一方面,Hadoop最初設置爲從多個資源收集數據而不用擔心數據源或來源。甚至可以在分佈式環境中存儲和處理各種類型的數據。Hadoop的MapReduce使用批處理。它不是爲實時處理而構建的,YARN背後的主要思想是在分佈式環境中執行並行處理。

2Spark  vs  Hadoop:易於使用

Spark是一個用戶友好的框架,具有類似於SQL的Scala,Java,Python和Spark SQL等語言。SQL開發人員可以輕鬆學習SQL。爲開發人員提供了一個交互式shell,他們可以使用它來執行查詢並獲得即時反饋。

通過使用shell或使用Flume或Sqoop等工具,可以輕鬆地在Hadoop中獲取數據。YARN可以與Pig或Hive等多種工具集成。這裏Hive是一個數據倉庫組件,即使在分佈式環境中也可以使用類似SQL的接口來執行大型數據集的讀取,寫入和管理。有許多工具可以與Hadoop集成。

3Spark  vs  Hadoop:成本

Spark和Hadoop都是開源框架,因此用戶無需支付任何使用和安裝軟件的成本。在這裏,用戶必須支付的費用僅用於基礎設施。這些產品的設計使其即使在TCO較低的情況下也可以在任何商品硬件上使用和運行。

在Hadoop中,我們可能需要具有大量磁盤空間的更快磁盤,因爲此存儲和處理都是基於磁盤的。要分發磁盤I / O,Hadoop需要多個系統。

在Apache Spark中,我們可能需要大量內存,因爲它遵循內存處理,因此可以處理標準速度和磁盤數量。Spark可能需要大量RAM,並且會產生更多成本。

如果您將比較這兩種技術,那麼您會注意到Spark技術減少了所需系統的數量。需要更少的系統可能花費很多,並且這裏每單位成本降低。

4Spark  vs  Hadoop: 數據處理

主要有兩種類型的數據處理,一種是批處理,另一種是流處理。在這裏,當許多作業提交給YARN時,YARN是一個批處理框架。將作業提交給YARN時,將從羣集中讀取數據,然後在將結果寫回羣集後執行操作。然後讀取數據並執行更新和下一操作。

Spark還執行類似的操作,它使用in-memory處理並且正在優化步驟。可以將相同的數據可視化爲GraphX和集合。當RDD需要時,也可以連接和轉換圖形。

5Spark  vs Hadoop:容錯

Spark和Hadoop都提供容錯功能,但它們有不同的方法。HDFS和YARN分別在Hadoop和Spark系統中的DataNode和NodeManager的系統和從屬守護進程中分別具有NameNode和ResourceManager的主守護進程。

如果任何從屬守護程序失敗,主守護程序將重新計劃或重新分發所有進程內或掛起的操作。該方法是有效的,但可以增加單個故障或操作的完成時間。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章