![]() |
VOOZH | about |
Spark: 這是一個開源的大數據框架。它提供了一個更快和更通用的數據處理引擎。Spark基本上是為快速計算而設計的。它還涵蓋了廣泛的工作負載,例如批處理,交互式,疊代和流式處理。
Hadoop MapReduce: 它也是一個用於編寫應用程式的開源框架。它還處理存儲在HDFS中的結構化和非結構化數據。Hadoop MapReduce的設計方式是處理大量商品硬體上的大量數據。MapReduce可以批處理模式處理數據。
Spark: Apache Spark非常適合批處理和流處理,這意味著它是一個混合處理框架。Spark通過內存計算和處理優化加快了批處理速度。這對於流式工作負載,交互式查詢和機器學習來說是一個很好的選擇。Spark還可以使用Hadoop及其模塊。其實時數據處理能力使Spark成為大數據分析的首選。
其彈性分布式數據集(RDD)允許Spark透明地將數據存儲在內存中,並僅將重要或需要的數據發送到磁碟。結果,在磁碟讀寫上花費了很多時間。
Hadoop:Apache Hadoop提供批處理。Hadoop開發了大量的新算法和組件堆棧,以提高對大規模批處理的訪問。
MapReduce是Hadoop的本地批處理引擎。Hadoop現代版本中的幾個組件或層(如YARN,HDFS等)允許輕鬆處理批處理數據。由於MapReduce是關於永久存儲的,它將數據存儲在磁碟上,這意味著它可以處理大型數據集。MapReduce具有可擴展性,並且已經證明了它可以處理數以萬計的節點。但是,由於MapReduce以各種連續的步驟運行,Hadoop的數據處理速度很慢。
Spark: 它可以處理實時數據,即來自實時事件流的數據,以每秒百萬個事件的速度,如Twitter和Facebook數據。Spark的優勢在於它能夠有效地處理直播流。
Hadoop MapReduce: MapReduce在實時數據處理方面失敗了,因為它被設計成對大量的數據執行批處理。
Spark:Spark比Hadoop更易於使用,因為它提供了用於Scala(其母語),Java,Python和Spark SQL的用戶友好的API。由於Spark提供了在同一集群中執行流,批處理和機器學習的方法,因此用戶可以輕鬆簡化數據處理的基礎架構。交互式REPL (Read-Eval-Print Loop)允許Spark用戶獲得命令的即時反饋。
Hadoop:另一方面,Hadoop是用Java編寫的,很難編程,並且需要抽象。儘管Hadoop MapReduce沒有交互模式,但Pig和Hive這樣的工具使得採用者更容易使用它。
Spark:Spark帶有一個名為GraphX的圖形計算庫,使事情變得簡單。內存計算與內置圖形支持相結合,使算法的性能遠遠優於傳統的MapReduce程序。Netty和Akka使Spark能夠將消息分發給執行者。
Hadoop:大多數處理算法,比如PageRank,對相同的數據執行多次疊代。MapReduce從磁碟讀取數據,並在特定的疊代之後將結果發送到HDFS,然後再次從HDFS中讀取數據以用於下一次疊代。這樣的過程會增加延遲,並使圖形處理變得緩慢。
為了評估特定節點的分數,消息傳遞需要包含數十個相鄰節點。這些計算需要來自鄰居的消息,但MapReduce沒有任何機制。儘管Pregel和GraphLab等快速且可擴展的工具可用於高效的圖形處理算法,但它們不適用於複雜的多級算法。
Spark: Spark通過最小化網絡I / O來使用RDD和各種數據存儲模型來實現容錯。在發生RDD分區丟失的情況下,RDD通過已有的信息重建該分區。所以,Spark並不使用複製概念來進行容錯。
Hadoop: Hadoop通過複製實現容錯。MapReduce使用TaskTracker和JobTracker進行容錯。但是,TaskTracker和JobTracker已分別由Node Manager和ResourceManager / ApplicationMaster在第二版MapReduce中替換。
Spark:Spark的安全性目前還處於起步階段,僅通過共享密碼(密碼認證)提供認證支持。但是,組織可以在HDFS上運行Spark,以利用HDFS ACL和文件級權限。
Hadoop MapReduce:Hadoop MapReduce比Spark有更好的安全特性。Hadoop支持Kerberos身份驗證,這是一個很好的安全功能,但難以管理。Hadoop MapReduce還可以與Hadoop安全項目(如Knox Gateway和Sentry)集成。第三方供應商還允許組織使用Active Directory Kerberos和LDAP進行身份驗證。Hadoop的分布式文件系統與訪問控制列表(ACL)和傳統的文件權限模型兼容。
Hadoop和Spark都是開源項目,因此免費。但是,Spark使用大量RAM來運行內存中的所有內容,RAM比硬碟更貴。Hadoop是磁碟綁定的,因此可以節省購買昂貴的RAM的成本,但是需要更多的系統在多個系統上分配磁碟I / O。
就成本而言,組織需要考慮他們的要求。如果要處理大量的大數據,Hadoop將會更便宜,因為硬碟空間的速度遠遠低於內存空間。
Hadoop和Spark都是相互兼容的。Spark可以集成Hadoop支持的所有數據源和文件格式。所以,說Spark與數據類型和數據源的兼容性與Hadoop MapReduce相似是沒有錯的。
Hadoop和Spark都是可擴展的。有人可能會認為Spark是比Hadoop更好的選擇。然而,對於那些需要商品系統控制下的大數據集的企業來說,MapReduce是一個不錯的選擇。這兩個框架在自己的意義上都很好。Hadoop有自己的Spark缺少的文件系統,而Spark提供了一種Hadoop不具備的實時分析的方法。
因此,Apache Spark與Hadoop MapReduce之間的差異表明Apache Spark比MapReduce 更高級的集群計算引擎。Spark可以處理任何類型的需求(例如批處理,交互式,疊代,流式處理,圖表),而MapReduce則可以處理批處理。