如何選擇正確的大數(shù)據(jù)框架?
掃描二維碼
隨時隨地手機看文章
哪個大數(shù)據(jù)框架更適合你?
來自四面八方的數(shù)據(jù)席卷而來,將我們裹挾進去。。隨著數(shù)據(jù)每兩年翻一番,數(shù)字宇宙正以飛快的速度追趕物理宇宙。據(jù)估計,到2020年,數(shù)字宇宙將達到44澤塔字節(jié)——其數(shù)字位的數(shù)量相當(dāng)于宇宙中恒星的數(shù)量。
數(shù)據(jù)還在不斷增加,我們壓根無法擺脫。為了消化這些所有的數(shù)據(jù),市場上的分布式系統(tǒng)越來越多。在這些系統(tǒng)中,Hadoop和Spark經(jīng)常作為直接競爭對手相互競爭。
在決定這兩個框架中哪個更適合你時,我們需要根據(jù)幾個基本參數(shù)對它們進行比較。
性能
Spark的速度非??欤呀?jīng)優(yōu)于Hadoop框架。它在內(nèi)存和磁盤上的運行速度分別比Hadhoop快100倍和10倍。此外,它對100 TB數(shù)據(jù)的排序速度是Hadoop的3倍。
Spark如此之快是因為它處理內(nèi)存中的所有東西。由于Spark的內(nèi)存處理,它提供了對營銷活動、物聯(lián)網(wǎng)傳感器、機器學(xué)習(xí)和社交媒體網(wǎng)站數(shù)據(jù)的實時分析。
然而,如果Spark和其他共享服務(wù)在YARN上運行,它的性能可能會下降。這可能導(dǎo)致RAM內(nèi)存泄漏。另一方面,Hadoop則很容易處理這個問題。如果用戶傾向于批處理,Hadoop要比Spark高效得多。
底線:Hadoop和Spark都有不同的處理方法。因此,是繼續(xù)使用Hadoop還是Spark完全取決于項目的需求。
Facebook及其與Spark框架的過渡之旅
Facebook上的數(shù)據(jù)每秒鐘都在增長。為了處理并利用這些數(shù)據(jù),F(xiàn)acebook使用了分析技術(shù)。為此,它利用了以下幾個平臺:
Hive平臺來執(zhí)行Facebook的一些批量分析。
用于自定義MapReduce實現(xiàn)的Corona平臺。
對于基于ansi - sql的查詢,很快就會占用內(nèi)存。
上面討論的Hive平臺在計算上是“資源密集型”的。所以,維護它挑戰(zhàn)巨大。因此,F(xiàn)acebook決定改用Apache Spark框架來管理他們的數(shù)據(jù)。今天,F(xiàn)acebook通過集成Spark為實體排名系統(tǒng)部署了一個更快的可管理管道。
安全
Spark的安全性問題仍在不斷發(fā)展,因為它目前只支持通過共享(密碼身份驗證)進行身份驗證。Apache Spark的官方網(wǎng)站也聲稱,“因為存在許多不同類型的安全問題,Spark并不一定能保護所有的數(shù)據(jù)。”
Hadoop則具有以下安全特性:Hadoop身份驗證、Hadoop授權(quán)、Hadoop審計和Hadoop加密。所有這些都與Hadoop安全項目集成,如Knox Gateway和Sentry。
底線:在Hadoop與Spark的安全大戰(zhàn)中,Spark的安全性比Hadoop稍差。但是,在與Hadoop集成Spark之后,Spark可以使用Hadoop的安全特性。
成本
首先,Hadoop和Spark都是開源框架,因此都是免費的。兩者都使用普通服務(wù)器,運行在云上,并且似乎有一些相似的硬件需求:
那么,如何在成本的基礎(chǔ)上進行評估呢?
請注意,Spark使用大量RAM在內(nèi)存中運行所有數(shù)據(jù)??紤]到RAM的價格高于硬盤,這可能會影響成本。
另一方面,Hadoop是磁盤綁定的。這樣,就能夠節(jié)省購買昂貴RAM的成本。然而,Hadoop需要更多的系統(tǒng)來分發(fā)磁盤I/O。
因此,在比較Spark和Hadoop框架的成本參數(shù)時,必須考慮它們的需求。
如果需求傾向于處理大量的大型歷史數(shù)據(jù),Hadoop是繼續(xù)使用的最佳選擇,因為硬盤空間的價格要比內(nèi)存空間便宜得多。
另一方面,當(dāng)我們處理實時數(shù)據(jù)的選項時,Spark可以節(jié)省成本,因為它使用的硬件少,能以更快的速度執(zhí)行相同的任務(wù)。
底線:在Hadoop與Spark成本之爭中,Hadoop的成本肯定更低,但當(dāng)企業(yè)不得不處理更低數(shù)量的實時數(shù)據(jù)時,Spark是很劃算的。
易用性
Spark框架最大的USPs之一是它的易用性。Spark為Scala Java、Python和Spark SQL(也稱為Shark)提供了友好而舒適的api。
Spark的簡單構(gòu)建塊使編寫用戶定義函數(shù)變得很容易。此外,由于Spark支持批處理和機器學(xué)習(xí),因此很容易簡化數(shù)據(jù)處理的基礎(chǔ)設(shè)施。它包括一個交互式模式,用于運行帶有即時反饋的命令。
Hadoop是用Java編寫的,在編寫沒有交互模式的程序時,是編寫程序絆腳石。雖然Pig(一個附加工具)使編程更容易,但它需要一些時間來學(xué)習(xí)語法。
一句話:在Hadoop與Spark的“易用性”之爭中,兩者都有自己的用戶友好方式。然而,如果我們必須選擇一個,Spark更容易編程并包含交互模式。
Apache Hadoop和Spark有可能實現(xiàn)協(xié)同關(guān)系嗎?
是的,這是非常有可能的,所以我們推薦它。讓我們詳細了解一下它們?nèi)绾螀f(xié)同工作。
Apache Hadoop生態(tài)系統(tǒng)包括HDFS、Apache Query和HIVE。讓我們看看Apache Spark如何使用它們。
Apache Spark和HDFS的合并
Apache Spark的目的是處理數(shù)據(jù)。但是,為了處理數(shù)據(jù),引擎需要從存儲中輸入數(shù)據(jù)。為此,Spark使用HDFS。(這不是唯一的選擇,但卻是最流行的選擇,因為Apache是它們背后的大腦)。
Apache Hive和Apache Spark的混合
Apache Spark和Apache Hive是高度兼容的,它們可以一起解決許多業(yè)務(wù)問題。
例如,假設(shè)一個企業(yè)正在分析消費者行為?,F(xiàn)在,該公司需要從各種來源收集數(shù)據(jù),如社交媒體、評論、點擊流數(shù)據(jù)、客戶移動應(yīng)用程序等等。
企業(yè)就可以使用HDFS存儲數(shù)據(jù),Apache hive作為HDFS和Spark之間的橋梁。
Uber及其合并的方式
為了處理消費者數(shù)據(jù),Uber結(jié)合了Spark和Hadoop。它使用實時交通狀況來提供特定時間和地點的司機。為了實現(xiàn)這一目標(biāo),Uber使用HDFS將原始數(shù)據(jù)上傳至Hive,并使用Spark處理數(shù)十億個事件。
Hadoop vs Spark:贏家是……
雖然Spark快速易用,但Hadoop的安全性、巨大的存儲容量和低成本的批處理能力更勝一籌。從兩個選項中選擇一個完全取決于項目的需求。兩者的結(jié)合將產(chǎn)生一個不可戰(zhàn)勝的組合。