大數(shù)據(jù)三大主流平臺框架的比較
在大數(shù)據(jù)的處理上,起到關(guān)鍵性作用的就是大數(shù)據(jù)框架,通過大數(shù)據(jù)系統(tǒng)框架,實現(xiàn)對大規(guī)模數(shù)據(jù)的整合處理。從人工統(tǒng)計分析到計算機,再到今天的分布式計算平臺,數(shù)據(jù)處理速度飛速提高的背后是整體架構(gòu)的不斷演進。當(dāng)今,市面上可用的大數(shù)據(jù)框架很多,最流行的莫過于Hadoop,Spark以及Storm這三種了,Hadoop是主流,然而Spark和Storm這兩個后起之秀也正以迅猛之勢快速發(fā)展。接下來讓我們一起了解一下這三個平臺。
1、Hadoop
說到大數(shù)據(jù),首先想到的肯定是Hadoop,因為Hadoop是目前世界上使用最廣泛的大數(shù)據(jù)工具。具有良好的跨平臺性,并且可部署在廉價的計算機集群中,在業(yè)內(nèi)應(yīng)用非常廣泛,是的代名詞,也是分布式計算架構(gòu)的鼻祖。憑借極高的容錯率和極低的硬件價格,在大數(shù)據(jù)市場上蒸蒸日上。幾乎所有主流廠商都圍繞Hadoop進行開發(fā)和提供服務(wù),如谷歌、百度、思科、華為、阿里巴巴、微軟都支持Hadoop。到目前為止,Hadoop已經(jīng)成為一個巨大的生態(tài)系統(tǒng),并且已經(jīng)實現(xiàn)了大量的算法和組件。
Hadoop框架當(dāng)中最主要的單個組件就是HDFS、MapReduce以及Yarn。
在大數(shù)據(jù)處理環(huán)節(jié)當(dāng)中,HDFS負責(zé)數(shù)據(jù)存儲,MapReduce負責(zé)數(shù)據(jù)計算,Yarn負責(zé)資源調(diào)度?;谶@三個核心組件,Hadoop可以實現(xiàn)對大規(guī)模數(shù)據(jù)的高效處理,同時Hadoop出色的故障處理機制,支持高可伸縮性,容錯能力,具有高可用性,更適合大數(shù)據(jù)平臺研發(fā)。
但是Hadoop存在比較大的一個局限就是,處理數(shù)據(jù)主要是離線處理,對于大規(guī)模離線數(shù)據(jù)處理很有一套,但是對于時效性要求很高的數(shù)據(jù)處理任務(wù),不能實現(xiàn)很好的完成。
作為一種對大量數(shù)據(jù)進行分布式處理的軟件框架,Hadoop具有以下幾方面特點:
Hadoop架構(gòu)大幅提升了計算存儲性能,降低計算平臺的硬件投入成本。但是由于計算過程放在硬盤上,受制于硬件條件限制,數(shù)據(jù)的吞吐和處理速度明顯不如使用內(nèi)存快,尤其是在使用Hadoop進行迭代計算時,非常耗資源,且在開發(fā)過程中需要編寫不少相對底層的代碼,不夠高效。
2、Spark
基于Hadoop在實時數(shù)據(jù)處理上的局限,Spark與Storm框架應(yīng)運而生,具有改進的數(shù)據(jù)流處理的批處理框架,通過內(nèi)存計算,實現(xiàn)對大批量實時數(shù)據(jù)的處理,基于Hadoop架構(gòu),彌補了Hadoop在實時數(shù)據(jù)處理上的不足。為了使程序運行更快,Spark提供了內(nèi)存計算,減少了迭代計算時的I/O開銷。Spark不但具備Hadoop MapReduce的優(yōu)點,而且解決了其存在的缺陷,逐漸成為當(dāng)今領(lǐng)域最熱門的計算平臺。
作為大數(shù)據(jù)框架的后起之秀,Spark具有更加高效和快速的計算能力,其特點主要有:
我們知道計算模式主要有四種,除了圖計算這種特殊類型,其他三種足以應(yīng)付大部分應(yīng)用場景,因為實際應(yīng)用中處理主要就是這三種:復(fù)雜的批量數(shù)據(jù)處理、基于歷史數(shù)據(jù)的交互式查詢和基于實時數(shù)據(jù)流的數(shù)據(jù)處理。
Hadoop MapReduce主要用于計算,Hive和Impala用于交互式查詢,Storm主要用于流式數(shù)據(jù)處理。以上都只能針對某一種應(yīng)用,但如果同時存在三種應(yīng)用需求,Spark就比較合適了。因為Spark的設(shè)計理念就是“一個軟件棧滿足不同應(yīng)用場景”,它有一套完整的生態(tài)系統(tǒng),既能提供內(nèi)存計算框架,也可支持多種類型計算(能同時支持、流式計算和交互式查詢),提供一站式解決方案。
此外,Spark還能很好地與Hadoop生態(tài)系統(tǒng)兼容,Hadoop應(yīng)用程序可以非常容易地遷移到Spark平臺上。
除了數(shù)據(jù)存儲需借助Hadoop的HDFS或Amazon S3之外,其主要功能組件包括Spark Core(基本通用功能,可進行復(fù)雜的批處理計算)、Spark SQL(支持基于歷史數(shù)據(jù)的交互式查詢計算)、Spark Streaming(支持實時流式計算)、MLlib(提供常用機器學(xué)習(xí),支持基于歷史數(shù)據(jù)的數(shù)據(jù)挖掘)和GraphX(支持圖計算)等。
盡管Spark有很多優(yōu)點,但它并不能完全替代Hadoop,而是主要替代MapReduce計算模型。Spark沒有像Hadoop那樣有數(shù)萬個級別的集群,所以在實際應(yīng)用中,Spark常與Hadoop結(jié)合使用,它可以借助YARN來實現(xiàn)資源調(diào)度管理,借助HDFS實現(xiàn)分布式存儲。此外,比起Hadoop可以用大量廉價計算機集群進行分布式存儲計算(成本低),Spark對硬件要求較高,成本也相對高一些。
3、Storm
與Hadoop的批處理模式不同,Storm使用一個流計算框架,該框架由Twitter開源,托管在GitHub上。與Hadoop相似,Storm也提出了兩個計算角色,Spout和Bolt。
如果說Hadoop是一個水桶,一次只能在一口井里裝一個水桶,那么Storm是一個水龍頭,它可以打開來連續(xù)生產(chǎn)水。Storm還支持許多語言,如Java、Ruby、Python等。因為Storm是一個流計算框架,它使用內(nèi)存,這在延遲方面有很大優(yōu)勢,但是Storm不會持久化數(shù)據(jù)。
但Storm的缺點在于,無論是離線、高延遲,還是交互式查詢,它都不如Spark框架。不同的機制決定了二者所適用的場景不同,比如炒股,股價的變化不是按秒計算的,因此適合采用計算延遲度為秒級的Spark框架;而在高頻交易中,高頻獲利與否往往就在1ms之間,就比較適合采用實時計算延遲度的Storm框架。
Storm對于實時計算的意義類似于Hadoop對于的意義,可以簡單、高效、可靠地處理流式數(shù)據(jù)并支持多種語言,它能與多種系統(tǒng)進行整合,從而開發(fā)出更強大的實時計算系統(tǒng)。
作為一個實時處理流式數(shù)據(jù)的計算框架,Storm的特點如下:
就像目前云計算市場中風(fēng)頭最勁的混合云一樣,越來越多的組織和個人采用混合式大數(shù)據(jù)平臺架構(gòu),因為每種架構(gòu)都有其自身的優(yōu)缺點。
比如Hadoop,其數(shù)據(jù)處理速度和難易度都遠不如Spark和Storm,但是由于硬盤斷電后其數(shù)據(jù)可以長期保存,因此在處理需要長期存儲的數(shù)據(jù)時還需要借助于它。不過由于Hadoop具有非常好的兼容性,因此也非常容易同Spark和Storm相結(jié)合使用,從而滿足不同組織和個人的差異化需求。
考慮到網(wǎng)絡(luò)安全態(tài)勢所應(yīng)用的場景,即大部分是復(fù)雜批量數(shù)據(jù)處理(日志事件)和基于歷史數(shù)據(jù)的交互式查詢以及數(shù)據(jù)挖掘,對準(zhǔn)實時流式數(shù)據(jù)處理也會有一部分需求(如會話流的檢測分析),建議其大數(shù)據(jù)平臺采用Hadoop和Spark相結(jié)合的建設(shè)模式。
大數(shù)據(jù)處理的框架是一直在不斷更新優(yōu)化的,沒有哪一種結(jié)構(gòu)能夠?qū)崿F(xiàn)對大數(shù)據(jù)的完美處理,在真正的大數(shù)據(jù)平臺開發(fā)上,需要根據(jù)實際需求來考量。