當前位置:
首頁 > 知識 > 如果Hadoop進入寒冬期,下一個崛起的會是Spark嗎?

如果Hadoop進入寒冬期,下一個崛起的會是Spark嗎?

Hadoop在大數據領域享有多年壟斷權,隨著該領域開始出現新生力量,其統治地位正在逐漸下滑。年初的調查中,Hadoop被列為2018年大數據領域的「漸凍」趨勢之一,Gartner的調查也揭示了Hadoop使用量的下滑,不少人將Hadoop稱作「倒下的大象」,比如Lucidworks首席執行官Will Hayes。

如果Hadoop進入寒冬期,率先崛起的會是呼聲最高的Spark嗎?

如果Hadoop進入寒冬期,下一個崛起的會是Spark嗎?

筆者曾經看過一個非常有趣的比喻,Hadoop是第一家大型包工隊,可以組織一大堆人合作(HDFS)搬磚蓋房(用MapReduce),但是速度比較慢。

Spark是另一家包工隊,雖然成立得晚一些,但是他們搬磚很快很靈活,可以實時交互地蓋房子,比Hadoop快得多。

Hadoop開始升級,指定調度專家YARN調度工人。Spark從多個倉庫搬磚(HDFS,Cassandra,S3,HBase),還允許不同專家如YARN/ MESOS對人員和任務進行調度。

當然,他們兩家並不是水火不容。Spark經常和Hadoop團隊合作,這讓問題變得更加複雜。不管怎麼說,Spark和Hadoop都是兩個獨立的包工隊,都有著各自的優缺點和特定的業務用例。

所以,最後,哪一家會勝出呢?

本文將從這兩大系統的體系結構,性能,成本,安全性和機器學習能力等方面進行比較。

Hadoop是什麼?

現在恐怕沒有人會問「Hadoop是什麼?」這個問題了,因為它實在是太火了!Hadoop在2006年開始成為雅虎項目,隨後晉陞為頂級Apache開源項目。它是一種通用的分散式系統基礎架構,具有多個組件:Hadoop分散式文件系統(HDFS),它將文件以Hadoop本機格式存儲並在集群中並行化; YARN,協調應用程序運行時的調度程序; MapReduce,這是實際並行處理數據的演算法。Hadoop使用Java編程語言構建,其上的應用程序也可以使用其他語言編寫。通過一個Thrift客戶端,用戶可以編寫MapReduce或者Python代碼。

如果Hadoop進入寒冬期,下一個崛起的會是Spark嗎?

除了這些基本組件外,Hadoop還包括Sqoop,它將關係數據移入HDFS; Hive,一種類似SQL的介面,允許用戶在HDFS上運行查詢; Mahout,機器學習。除了將HDFS用於文件存儲之外,Hadoop現在還可以配置使用S3 buckets或Azure blob作為輸入。

它可以通過Apache發行版開源,也可以通過Cloudera(規模和範圍最大的Hadoop供應商),MapR或HortonWorks等廠商提供。

Spark是什麼?

Spark是一個較新的項目,最初於2012年誕生在加州大學伯克利分校的AMPLab。它也是一個頂級Apache項目,專註於在集群中並行處理數據,最大的區別在於它在內存中運行。

類似於Hadoop讀取和寫入文件到HDFS的概念,Spark使用RDD(彈性分散式數據集)處理RAM中的數據。Spark以獨立模式運行,Hadoop集群可用作數據源,也可與Mesos一起運行。在後一種情況下,Mesos主站將取代Spark主站或YARN以進行調度。

如果Hadoop進入寒冬期,下一個崛起的會是Spark嗎?

Spark是圍繞Spark Core構建的,Spark Core是驅動調度,優化和RDD抽象的引擎,並將Spark連接到正確的文件系統(HDFS,S3,RDBM或Elasticsearch)。Spark Core上還運行了幾個庫,包括Spark SQL,允許用戶在分散式數據集上運行類似SQL的命令,用於機器學習的MLLib,用於解決圖形問題的GraphX以及允許輸入連續流式日誌數據的Streaming。

Spark有幾個API。原始界面是用Scala編寫的,並且由於大量數據科學家的使用,還添加了Python和R介面。Java是編寫Spark作業的另一種選擇。

Databricks是由Spark創始人Matei Zaharia創立的公司,現在負責Spark開發並為客戶提供Spark分銷。

性能對比——Spark更優!

Spark在內存中運行速度比Hadoop快100倍,在磁碟上運行速度快10倍。眾所周知,Spark在數量只有十分之一的機器上,對100TB數據進行排序的速度比Hadoop MapReduce快3倍。此外,Spark在機器學習應用中的速度同樣更快,例如Naive Bayes和k-means。

如果Hadoop進入寒冬期,下一個崛起的會是Spark嗎?

由處理速度衡量的Spark性能之所以比Hadoop更優,原因如下:

1、每次運行MapReduce任務時,Spark都不會受到輸入輸出的限制。事實證明,應用程序的速度要快得多。

2、Spark的DAG可以在各個步驟之間進行優化。Hadoop在MapReduce步驟之間沒有任何周期性連接,這意味著在該級別不會發生性能調整。

但是,如果Spark與其他共享服務在YARN上運行,則性能可能會降低並導致RAM開銷內存泄漏。出於這個原因,如果用戶有批處理的訴求,Hadoop被認為是更高效的系統。

架構對比——Spark更先進!

  • Hadoop

首先,所有傳入HDFS的文件都被分割成塊。根據配置的塊大小和複製因子,每個塊在集群中被複制指定的次數。該信息被傳遞給NameNode,它跟蹤集群中的所有內容。NameNode將這些文件分配給多個數據節點,然後將這些文件寫入其中。在2012年被實施的高可用性允許NameNode故障轉移到備份節點上,以跟蹤集群中的所有文件。

MapReduce演算法位於HDFS之上,由JobTracker組成。一旦應用程序以其中一種語言編寫,Hadoop接受JobTracker,然後分配工作(可包括計算單詞和清理日誌文件等內容,以及在Hive倉庫數據集之上運行HiveQL查詢)到偵聽其他節點的TaskTracker。

YARN分配JobTracker加速並監控它們的資源,以提高效率。然後將所有來自MapReduce階段的結果匯總並寫入HDFS中的磁碟之上。

  • Spark

Spark的計算過程在內存中執行並在內存中存儲,直到用戶保存為止。除此之外,Spark處理工作的方式基本與Hadoop類似。最初,Spark從HDFS,S3或其他文件存儲系統讀取到名為SparkContext的程序執行入口。除此之外,Spark創建了一個名為RDD(彈性分散式數據集)的結構,它表示一組可並行操作元素的不可變集合。

隨著RDD和相關操作的創建,Spark還創建了一個DAG(有向無環圖),以便可視化DAG中的操作順序和操作之間的關係。每個DAG都有確定的階段和步驟。

用戶可以在RDD上執行轉換,中間操作或最終步驟。給定轉換的結果進入DAG,不會保留到磁碟,但每一步操作都會將內存中的所有數據保留到磁碟。

Spark RDD頂部的一個新抽象是DataFrames,它是在Spark 2.0中作為RDD配套介面開發的。這兩者非常相似,但DataFrames將數據組織成命名列,類似於Python的pandas或R包。這使得它們比RDD更方便,RDD沒有類似的一系列列級標題引用。SparkSQL還允許用戶像存儲關係數據的SQL表一樣查詢DataFrame。

機器學習能力——Spark底子更好!

Hadoop使用Mahout來處理數據。Mahout包括集群,分類和基於批處理的協作過濾,所有這些都在MapReduce之上運行。目前正在逐步推出支持Scala和DSL語言的Samsara(類似R的矢量數學環境),允許用戶進行內存和代數操作,並允許用戶自己編寫演算法。

如果Hadoop進入寒冬期,下一個崛起的會是Spark嗎?

Spark有一個機器學習庫叫MLLib,充分利用了Spark快速內存計算,迭代效率高的優勢開發機器學習應用程序。它可用於Java,Scala,Python或R,包括分類和回歸,以及通過超參數調整構建機器學習管道的能力。

容錯和安全性——各有所長!

Hadoop具有高度容錯性,因為它旨在跨多個節點複製數據。每個文件都被分割成塊,並在許多機器上複製無數次,以確保如果單台機器停機,可以從其他塊重建文件。

Spark的容錯主要是通過RDD操作來實現。最初,靜態數據存儲在HDFS中,通過Hadoop的體系結構進行容錯。隨著RDD的建立,lineage也是如此,它記住了數據集是如何構建的,由於它是不可變的,如果需要可以從頭開始重建。跨Spark分區的數據也可以基於DAG跨數據節點重建。數據在執行器節點之間複製,如果執行器和驅動程序之間的節點通信失敗,通常可能會損壞數據。

如果Hadoop進入寒冬期,下一個崛起的會是Spark嗎?

Spark和Hadoop都可以支持Kerberos身份驗證,但Hadoop對HDFS具有更加細化的安全控制。 Apache Sentry是一個用於執行細粒度元數據訪問的系統,是另一個專門用於HDFS級別安全性的項目。

Spark的安全模型目前很少,但允許通過共享密鑰進行身份驗證。

成本對比——Spark略貴!

Spark和Hadoop都可以作為開源Apache項目免費獲得,這意味著用戶都可以零成本安裝運行。但是,考慮總體擁有成本才是最重要的,比如維護、硬體和軟體購買,僱傭集群管理團隊的開銷。內部安裝的一般經驗法則是Hadoop需要更多的磁碟內存,而Spark需要更多的RAM,這意味著設置Spark集群可能會更加昂貴。此外,由於Spark是較新的系統,因此它的專家更為稀少,成本更高。另一種選擇是使用供應商進行安裝,例如Cloudera for Hadoop或Spark for DataBricks,或使用AWS在雲中運行EMR / Mapreduce。

由於Hadoop和Spark是串聯運行的,將各自的價格分離出來進行比較可能是困難的。對於高級別的比較,假設為Hadoop選擇計算優化的EMR集群,最小實例c4.large的成本為每小時0.026美元。 Spark最小內存優化集群每小時成本為0.067美元。因此,Spark每小時更昂貴,但考慮到計算時間,類似的任務在Spark集群上花費的時間更少。

總結

所以,到底是選Hadoop還是Spark呢?兩者都是Apache的頂級項目,經常一起使用,並且有相似之處,但Spark並不是離不開Hadoop,目前已有超過20%的Spark獨立於Hadoop運行,並且這一比例還在增加。從性能、成本、高可用性、易用性、安全性和機器學習諸多方面參考,Spark都略勝一籌!

或許,Hadoop確實老了,大數據世界應該出現更年輕的統治者。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 IT168企業級 的精彩文章:

諾基亞收購Unium公司 解決家用Wi-Fi痛點
誰才是王者?投影設備主流光源技術解析

TAG:IT168企業級 |