Spark與Flink大數(shù)據(jù)處理引擎對比分析!

大數(shù)據(jù)技術(shù)正飛速地發(fā)展著,催生出一代又一代快速便捷的大數(shù)據(jù)處理引擎,無論是Hadoop、Storm,還是后來的Spark、Flink。然而,畢竟沒有哪一個框架可以完全支持所有的應(yīng)用場景,也就說明不可能有任何一個框架可以完全取代另一個。今天,大圣眾包威客平臺(www.dashengzb.cn將從幾個項出發(fā)著重對比Spark與Flink這兩個大數(shù)據(jù)處理引擎,探討其兩者的區(qū)別。

一、Spark與Flink幾個主要項目的對比與分析

1.性能對比

測試環(huán)境:

CPU:7000個

內(nèi)存:單機(jī)128GB

版本:Hadoop 2.3.0,Spark 1.4,F(xiàn)link 0.9

數(shù)據(jù):800MB,8GB,8TB

算法:K-means:以空間中K個點(diǎn)為中心進(jìn)行聚類,對最靠近它們的對象歸類,通過迭代的方法,逐次更新各聚類中心的值,直至得到最好的聚類結(jié)果

迭代:K=10,3組數(shù)據(jù)

相同點(diǎn):Spark與Flink都運(yùn)行在Hadoop YARN上,兩者都擁有非常好的計算性能,因?yàn)閮烧叨伎梢曰趦?nèi)存計算框架以進(jìn)行實(shí)時計算。

相異點(diǎn):結(jié)合上圖三者的迭代次數(shù)(縱坐標(biāo)是秒,橫坐標(biāo)是次數(shù))圖表觀察,可得出在性能上,呈現(xiàn)Flink > Spark > Hadoop(MR)的結(jié)果,且迭代次數(shù)越多越明顯。Flink之所以優(yōu)于Spark和Hadoop,最主要的原因是Flink支持增量迭代,具有對迭代自動優(yōu)化的功能。

結(jié)果:Flink勝。

2.流式計算比較

相同點(diǎn):Spark與Flink都支持流式計算。

相異點(diǎn):Spark是基于數(shù)據(jù)片集合(RDD)進(jìn)行小批量處理的,它只能支持秒級計算,所以Spark在流式處理方面,不可避免會增加一些延時。Flink是一行一行的,它的流式計算跟Storm的性能差不多,是支持毫秒級計算的。

結(jié)果:Flink勝。

3.與Hadoop兼容性對比

相同點(diǎn):Spark與Flink的數(shù)據(jù)存取都支持HDFS、HBase等數(shù)據(jù)源,而且,它們的計算資源調(diào)度都支持YARN的方式。

相異點(diǎn):Spark不支持TableMapper和TableReducer這些方法。Flink對Hadoop有著更好的兼容,如可以支持原生HBase的TableMapper和TableReducer,唯一不足是新版本的MapReduce方法無法得到支持,現(xiàn)在只支持老版本的MapReduce方法。

結(jié)果:Flink勝。

4.SQL支持對比

相同點(diǎn):兩者都支持SQL。

相異點(diǎn):從范圍上說,Spark對SQL的支持比Flink的要大一些,而且Spark支持對SQL的優(yōu)化(包括代碼生成和快速Join操作),還要提供對SQL語句的擴(kuò)展和更好地集成。Flink主要支持對API級的優(yōu)化。

結(jié)果:Spark勝。

5.計算迭代對比

相同點(diǎn):如下圖所示,Hadoop(MR)、Spark和Flink均能迭代。

相異點(diǎn):Flink特有delta-iterations,這讓它能夠在迭代中顯著減少計算。并且Flink具有自動優(yōu)化迭代程序功能,具體流程如下圖所示。

結(jié)果:Flink勝。

6.社區(qū)支持對比

相同點(diǎn):Spark與Flink均有社區(qū)支持。

相異點(diǎn):Spark社區(qū)活躍度比Flink高很多。

結(jié)果:Spark勝。

二、Spark與Flink的特點(diǎn)剖析

1.Spark 1.4的6大特點(diǎn)

眾所周知,提出最主要抽象概念——彈性分布式數(shù)據(jù)集(RDD)的是Spark。RDD是一個元素集合,將其劃分到集群的各個節(jié)點(diǎn)上可以被并行操作。當(dāng)然,用戶也可以讓Spark保留一個RDD在內(nèi)存里,讓其能在并行操作中被有效地重復(fù)使用。Spark是實(shí)至名歸的快速、通用的計算集群系統(tǒng)。結(jié)合下圖Spark架構(gòu)圖與生態(tài)系統(tǒng)圖,可以看出Spark 1.4的6大特點(diǎn):

①Spark SQL(DataFrame)添加了ORCFile類型支持以及所有的Hive metastore支持;

②增加了UI的Spark Streaming,使得用戶查看各種狀態(tài)更加地便捷,隨著和Kafka融合的加深,對Kinesis的支持也加強(qiáng)了很多;

③Spark之所以提供了更多的算法和工具,是因?yàn)镾park ML/MLlib的ML pipelines越來越成熟;

④使用了REST API,Spark可以為應(yīng)用獲取如jobs、stages、storage info、tasks等各種信息;

⑤內(nèi)存管理、代碼生成、垃圾回收等方面都有很多改進(jìn),這些都得益于Tungsten項目的持續(xù)優(yōu)化;

⑥SparkR的發(fā)布讓Spark得到更友好的R語法的支持。

2.Flink 0.9的7大特點(diǎn)

作為可擴(kuò)展的批處理和流式數(shù)據(jù)處理的數(shù)據(jù)處理平臺,F(xiàn)link的設(shè)計思想主要來源于Hadoop、MPP數(shù)據(jù)庫、流式計算系統(tǒng)等。支持增量迭代計算是Flink最大的特點(diǎn),而且其對于迭代計算和流式計算的支持力度都將會加強(qiáng)。結(jié)合下圖Flink架構(gòu)圖與生態(tài)系統(tǒng)圖,可以看出Flink 0.9的7大特點(diǎn):

①搭載DataSet API,讓Flink支持Java、Python和Scala等多種編程語言;

②同樣地,搭載DataStream API,讓Flink支持Java和Scala;

③Flink ML和Gelly提供機(jī)器學(xué)習(xí)和圖處理的多種庫;

④Table API能夠支持類SQL;

⑤Flink能夠支持高效序列化、反序列化;

⑥Flink和Hadoop相互兼容;

⑦Flink擁有自動優(yōu)化迭代的功能。

放眼未來,無論是Spark還是Flink,兩者的發(fā)展重點(diǎn)都將是數(shù)據(jù)科學(xué)和平臺API化,使其生態(tài)系統(tǒng)越來越完善。亦或許,會有更新的大數(shù)據(jù)處理引擎出現(xiàn),誰知道呢。

原文地址:http://www.dashengzb.cn/articles/a-330.html

(更多大數(shù)據(jù)與商業(yè)智能領(lǐng)域干貨、或電子書,可添加個人微信號(dashenghuaer))

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容