Apache Spark vs Hadoop Mapreduce——你需要知道的
已發表: 2019-09-05大數據就像現代世界中無所不在的老大哥。 各行各業不斷增加的大數據用例進一步催生了眾多大數據技術,其中最流行的是Hadoop MapReduce和Apache Spark。 雖然 MapReduce 和 Spark 都是 Apache 軟件基金會開發的開源旗艦項目,但它們也是彼此最有力的競爭者。
在這篇文章中,首先,我們將討論 MapReduce 和 Spark 框架,然後我們將繼續討論它們之間的主要區別。
什麼是 Spark 和 MapReduce?
Spark是一個專為實現快速計算而設計的大數據框架。 它用作通用數據處理引擎,可以處理不同的工作負載,包括批處理、交互、迭代和流式處理。 Spark 的一個關鍵特性是速度——它執行內存計算以提高數據處理的速度。 因此,它在計算機節點集群上運行良好,並允許更快地處理大型數據集。
彈性分佈式數據集 (RDD) 是 Spark 的主要數據結構。 RDD 是一個不可變的分佈式對象集合,其中每個節點都被分成更小的塊,可以在集群的不同節點上計算。 這有利於集群內的獨立數據處理。
MapReduce是一個開源框架,設計用於在並行和分佈式環境中處理大量數據。 它只能以批處理模式處理數據。 Hadoop MapReduce 有兩個主要組件——HDFS 和 YARN。

MapReduce 編程由兩部分組成——Mapper 和 Reducer。 當 Mapper 處理數據排序任務時,Reducer 組合排序後的數據並將其轉換為更小的片段。
至於這兩個框架之間的根本區別,是它們與生俱來的數據處理方法。 MapReduce 通過在磁盤上讀寫來處理數據,而 Spark 可以在內存中進行。 因此,Spark 比 MapReduce 具有優勢——處理速度快。
但這是否意味著 Spark 比 MapReduce 更好? 不幸的是,辯論並不是那麼簡單。 為了更清楚地說明這個問題,我們將逐點分解它們之間的差異。
數據處理
Spark :正如我們前面提到的,Spark 更像是一個混合和通用的處理框架。 通過內存計算和處理優化,實時加速數據處理。 它非常適合流式工作負載、運行交互式查詢和 ML 算法。 但是,RDD 只允許 Spark 通過只在磁盤上寫入重要數據來臨時將數據存儲在磁盤上。 因此,它將進程加載到內存中並將其保留在緩存中。 這使得 Spark 非常佔用內存。
MapReduce :MapReduce 是 Hadoop 的原生批處理引擎。 它的組件(HDFS 和 YARN)能夠更順暢地處理批處理數據。 但是,由於數據處理髮生在幾個後續步驟中,因此該過程非常緩慢。 MapReduce 的一個優點是它允許永久存儲——它將數據存儲在磁盤上。 這使其適用於處理海量數據集。 一旦任務完成,MapReduce 就會終止其進程,因此它可以與其他服務同時運行。
便於使用
Spark :在易用性方面,Spark 佔據了桂冠。 它為 Scala(本機語言)、Java、Python 和 Spark SQL 提供了許多用戶友好的 API。 由於 Spark 允許在同一個集群中進行流式處理、批處理和機器學習,因此您可以根據需要輕鬆簡化數據處理基礎架構。 此外,Spark 包括一個交互式 REPL(讀取-評估-打印循環)模式,用於運行命令,為用戶提供及時反饋。
MapReduce :由於 Hadoop MapReduce 是用 Java 編寫的,因此學習語法需要時間。 因此,最初,許多人可能會發現編程非常具有挑戰性。 儘管 MapReduce 缺少交互模式,但 Pig 和 Hive 等工具使使用它更容易一些。 還有其他工具(例如,Xplenty)也可以運行 MapReduce 任務而無需任何編程。

容錯
Spark :Spark 採用 RDD 和不同的數據存儲模型通過減少網絡 I/O 來實現容錯。 如果 RDD 的分區丟失,RDD 將根據存儲在內存中的信息重建該分區。 因此,如果一個進程在中途崩潰,Spark 將不得不從頭開始處理。
MapReduce :與 Spark 不同,MapReduce 通過 Node Manager 和 ResourceManager 使用複制概念進行容錯。 在這裡,如果一個進程中途執行失敗,MapReduce 將從它停止的地方繼續,從而節省時間。
安全
Spark :由於Spark還處於起步階段,其安全係數還不是很發達。 它支持通過共享密鑰(密碼驗證)表進行驗證。 至於 Web UI,可以通過 javax servlet 過濾器進行保護。 Spark 的 YARN 和 HDFS 功能允許 Kerberos 身份驗證、HDFS 文件級權限以及節點之間的加密。
MapReduce :MapReduce 更加發達,因此它具有比 Spark 更好的安全功能。 它享有 Hadoop 的所有安全優勢,並且可以與 Hadoop 安全項目集成,包括 Knox Gateway 和 Sentry。 通過有效的第三方供應商,組織甚至可以使用 Active Directory Kerberos 和 LDAP 進行身份驗證。
成本
儘管 Spark 和 MapReduce 都是開源項目,但兩者都必須承擔一定的成本。 例如,Spark 需要大量 RAM 才能在內存中運行任務,而且 RAM 比硬盤更昂貴。 相反,Hadoop 是面向磁盤的——雖然您不需要購買昂貴的 RAM,但您必須在系統上進行更多投資,以便在多個系統之間分配磁盤 I/O。
因此,在成本方面,很大程度上取決於組織的要求。 如果一個組織需要處理大量的大數據,Hadoop 將是經濟高效的選擇,因為購買硬盤空間比購買大容量內存空間便宜得多。 此外,MapReduce 附帶大量 Hadoop 即服務產品和基於 Hadoop 的服務,允許您跳過硬件和人員配置要求。 與此相比,Spark-as-a-service 選擇屈指可數。

兼容性
就兼容性而言,Spark 和 MapReduce 彼此兼容。 Spark 可以與 Hadoop 支持的所有數據源和文件格式無縫集成。 此外,兩者都是可擴展的。 因此,Spark 對數據類型和數據源的兼容性與 Hadoop MapReduce 幾乎相同。
如您所見,Spark 和 MapReduce 都具有使它們彼此區分開來的獨特功能。 例如,Spark 提供了 MapReduce 所缺乏的實時分析,而 MapReduce 提供了 Spark 所缺乏的文件系統。 這兩個框架都以各自獨特的方式表現出色,並且都有其獨特的優勢和劣勢。 最終,Spark 與 MapReduce 之間的爭論都歸結為您的特定業務需求和您希望完成的任務類型。
如果您有興趣了解有關大數據的更多信息,請查看我們的 PG 大數據軟件開發專業文憑課程,該課程專為在職專業人士設計,提供 7 多個案例研究和項目,涵蓋 14 種編程語言和工具,實用的動手操作研討會,超過 400 小時的嚴格學習和頂級公司的就業幫助。
從世界頂級大學在線學習軟件開發課程。 獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。
