search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

何必糾結hadoop和spark如何選擇

說到大數據,想必大家對Hadoop和Apache Spark這兩個名詞並不是很陌生。或許我們也可以這樣來表達,Hadoop是大數據的啟蒙者,藉助Hadoop的幫助讓企業步入了大數據時代。然而,最近幾年,Spark的人氣似乎超越了Hadoop。而且網上有一種聲音就是Spark將會取代Hadoop成為大數據的統治者,事實上會是這樣么?

直接比較Hadoop和Spark有難度,因為它們處理的任務在許多方面都是一樣的,但是在一些方面又並不相互重疊。

比如說,Spark沒有文件管理功能,因而必須依賴Hadoop分散式文件系統(HDFS)或另外某種解決方案。將Hadoop MapReduce與Spark作一番比較來得更明智,因為它們作為數據處理引擎更具有可比性。

Hadoop是Apache.org的一個項目,其實是一種軟體庫和框架,以便使用簡單的編程模型,跨計算器集群對龐大數據集(大數據)進行分散式處理。Hadoop可靈活擴展,從單一計算機系統,到提供本地存儲和計算能力的數千個商用系統,它都能輕鬆支持。實際上,Hadoop就是大數據分析領域的重量級大數據平台。

Apache Spark開發人員聲稱它是「一種用於數據大規模處理的快速通用引擎」。相比之下,如果說Hadoop的大數據框架好比是800磅重的大猩猩,Spark就好比是130磅重的獵豹。

其實,Hadoop與Spark不存在衝突,因為Spark是運行於Hadoop頂層的內存處理方案,也就是說目前部署Spark的企業,其實都在現有的Hadoop集群中運行Spark。主流的Hadoop發行版本提供商比如Cloudera和Hortonworks將Spark列為他們Hadoop發行的一部分。

我們可以說Hadoop和Spark均是大數據框架,都提供了執行常見大數據任務的工具。雖然Spark在某些應用場景下比Hadoop,但是Spark本身沒有一個分散式存儲系統,而是依賴於Hadoop的HDFS。Spark的高級分析應用也是依賴於HDFS存儲數據。

Hadoop和Spark不存在競爭關係

筆者在前面的論述中,不斷強調是某些計算類型和應用場景,Spark比Hadoop快。其實Hadoop和Spark是針對不同的應用場景。Hadoop將巨大的數據集分派到一個由普通計算機組成的集群中的多個節點進行存儲。同時,Hadoop還會索引和跟蹤這些數據,讓大數據處理和分析效率達到前所未有的高度。

而Spark則是那麼一個專門用來對那些分散式存儲的大數據進行處理的工具,它並不會進行分散式數據的存儲。Spark只是專註於計算,而不承擔數據存儲功能,它需要第三方存儲的支持。

Hadoop包括兩個最重要的組件。第一個是大規模儲存系統,叫做Hadoop Distributed File System(HDFS)。第二個是一個計算引擎,叫做MapReduce,它能在儲存在HDFS上的數據頂層運行大規模并行程序。

所以我們看到Hadoop包含了存儲和計算兩個組件,而這個MapReduce計算組件其實可以被Spark替換的。Spark是一個基於內存計算的開源的集群計算系統,目的是讓數據分析更加快速。

所以看明白了吧,Spark相當於是對Hadoop計算組件的改進。實際上它是對Hadoop的補充,可以在Hadoop文件系統中并行運行。因為Spark充分利用內存進行緩存,所以比較合適做迭代式的運算。

總結Hadoop vs Spark

乍一看,對任何大數據應用而言,使用Spark似乎是默認選擇。然而,事實並非如此。MapReduce已在大數據市場取得了進展,尤其受到這種公司企業的追捧:需要由商用系統對龐大數據集加以控制。Spark的速度、靈活性和相對易用性對MapReduce的低操作成本來說是絕對補充。

實際上,Spark與MapReduce是一種相互共生的關係。Hadoop提供了Spark所沒有的功能特性,比如分散式文件系統,而Spark為需要它的那些數據集提供了實時內存處理。完美的大數據場景正是設計人員當初預想的那樣:讓Hadoop和Spark在同一個團隊裡面協同運行。



熱門推薦

本文由 yidianzixun 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦