日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Spark与Flink:对比与分析

發(fā)布時(shí)間:2024/9/30 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spark与Flink:对比与分析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Spark是一種快速、通用的計(jì)算集群系統(tǒng),Spark提出的最主要抽象概念是彈性分布式數(shù)據(jù)集(RDD),它是一個(gè)元素集合,劃分到集群的各個(gè)節(jié)點(diǎn)上,可以被并行操作。用戶也可以讓Spark保留一個(gè)RDD在內(nèi)存中,使其能在并行操作中被有效的重復(fù)使用。Flink是可擴(kuò)展的批處理和流式數(shù)據(jù)處理的數(shù)據(jù)處理平臺,設(shè)計(jì)思想主要來源于Hadoop、MPP數(shù)據(jù)庫、流式計(jì)算系統(tǒng)等,支持增量迭代計(jì)算。

原理

Spark 1.4特點(diǎn)如下所示。

  • Spark為應(yīng)用提供了REST API來獲取各種信息,包括jobs、stages、tasks、storage info等。
  • Spark Streaming增加了UI,可以方便用戶查看各種狀態(tài),另外與Kafka的融合也更加深度,加強(qiáng)了對Kinesis的支持。
  • Spark SQL(DataFrame)添加ORCFile類型支持,另外還支持所有的Hive metastore。
  • Spark ML/MLlib的ML pipelines愈加成熟,提供了更多的算法和工具。
  • Tungsten項(xiàng)目的持續(xù)優(yōu)化,特別是內(nèi)存管理、代碼生成、垃圾回收等方面都有很多改進(jìn)。
  • SparkR發(fā)布,更友好的R語法支持。

  • 圖1 Spark架構(gòu)圖


    圖2 Flink架構(gòu)圖


    圖3 Spark生態(tài)系統(tǒng)圖

    Flink 0.9特點(diǎn)如下所示。

    https://github.com/apache/flink

  • DataSet API?支持Java、Scala和Python。
  • DataStream API支持Java and Scala。
  • Table API支持類SQL。
  • 有機(jī)器學(xué)習(xí)和圖處理(Gelly)的各種庫。
  • 有自動優(yōu)化迭代的功能,如有增量迭代。
  • 支持高效序列化和反序列化,非常便利。
  • 與Hadoop兼容性很好。

  • 圖4 Flink生態(tài)系統(tǒng)圖

    分析對比

    性能對比

    首先它們都可以基于內(nèi)存計(jì)算框架進(jìn)行實(shí)時(shí)計(jì)算,所以都擁有非常好的計(jì)算性能。經(jīng)過測試,Flink計(jì)算性能上略好。

    測試環(huán)境:

  • CPU:7000個(gè);
  • 內(nèi)存:單機(jī)128GB;
  • 版本:Hadoop 2.3.0,Spark 1.4,Flink 0.9
  • 數(shù)據(jù):800MB,8GB,8TB;
  • 算法:K-means:以空間中K個(gè)點(diǎn)為中心進(jìn)行聚類,對最靠近它們的對象歸類。通過迭代的方法,逐次更新各聚類中心的值,直至得到最好的聚類結(jié)果。
  • 迭代:K=10,3組數(shù)據(jù)

  • 圖5 迭代次數(shù)(縱坐標(biāo)是秒,橫坐標(biāo)是次數(shù))

    總結(jié):Spark和Flink全部都運(yùn)行在Hadoop YARN上,性能為Flink > Spark > Hadoop(MR),迭代次數(shù)越多越明顯,性能上,Flink優(yōu)于Spark和Hadoop最主要的原因是Flink支持增量迭代,具有對迭代自動優(yōu)化的功能。

    流式計(jì)算比較

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

    與Hadoop兼容

    計(jì)算的資源調(diào)度都支持YARN的方式

    數(shù)據(jù)存取都支持HDFS、HBase等數(shù)據(jù)源。

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

    SQL支持

    都支持,Spark對SQL的支持比Flink支持的范圍要大一些,另外Spark支持對SQL的優(yōu)化,而Flink支持主要是對API級的優(yōu)化。

    計(jì)算迭代

    delta-iterations,這是Flink特有的,在迭代中可以顯著減少計(jì)算,圖6、圖7、圖8是Hadoop(MR)、Spark和Flink的迭代流程。


    圖6 Hadoop(MR)迭代流程


    圖7 Spark迭代流程


    圖8 Flink迭代流程

    Flink自動優(yōu)化迭代程序具體流程如圖9所示。


    圖9 Flink自動優(yōu)化迭代程序具體流程

    社區(qū)支持

    Spark社區(qū)活躍度比Flink高很多。

    總結(jié)

    Spark和Flink都支持實(shí)時(shí)計(jì)算,且都可基于內(nèi)存計(jì)算。Spark后面最重要的核心組件仍然是Spark SQL,而在未來幾次發(fā)布中,除了性能上更加優(yōu)化外(包括代碼生成和快速Join操作),還要提供對SQL語句的擴(kuò)展和更好地集成。至于Flink,其對于流式計(jì)算和迭代計(jì)算支持力度將會更加增強(qiáng)。無論是Spark、還是Flink的發(fā)展重點(diǎn),將是數(shù)據(jù)科學(xué)和平臺API化,除了傳統(tǒng)的統(tǒng)計(jì)算法外,還包括學(xué)習(xí)算法,同時(shí)使其生態(tài)系統(tǒng)越來越完善。

    總結(jié)

    以上是生活随笔為你收集整理的Spark与Flink:对比与分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。