完整Flink和Spark比较Word格式.docx
《完整Flink和Spark比较Word格式.docx》由会员分享,可在线阅读,更多相关《完整Flink和Spark比较Word格式.docx(8页珍藏版)》请在冰豆网上搜索。
∙Spark1.3。
(Mar132015)
∙Spark1.2.2
∙Spark1.2.1
(Feb092015)
∙Spark1.2.0
(Dec182014)
∙Spark1.1.1
(Nov262014)
∙Spark1.1.0
(Sep112014)
0。
(Aug052014)
∙Spark1.0.1
(Jul112014)
(May302014)
∙Spark0。
9。
(Jul232014)
∙Spark0.9.1
(Apr092014)
∙Spark0.9。
(Feb022014)
8.1
(Dec192013)
∙Spark0.8。
(Sep252013)
∙Spark0.7。
3
(Jul162013)
7.2
(Feb062013)
∙Spark0.7.0
(Feb272013)
Flink发布历史
∙Flink1.0。
0(Binaries,
Docs,
Javadocs,
ScalaDocs)2016—03-04
∙Flink0.10.2(Binaries,
Javadocs,
ScalaDocs)2016-02—11
∙Flink0。
1(Binaries,
ScalaDocs)2015—08-31
ScalaDocs)2015—06—23
0-milestone—1(Binaries,
Docs,
ScalaDocs)2015-04-12
8。
ScalaDocs)2015—02-19
8.0(Binaries,
ScalaDocs)2015-01-19
7.0-incubating(Binaries,
ScalaDocs)2014-10—26
∙Flink0.6.1—incubating(Binaries,
ScalaDocs)2014-09—24
6—incubating(Binaries,
ScalaDocs)2014-08-22
1.核心分析和计算原理分析
ApacheSpark
ApacheFlink
核心实现
Scala
Java
编程接口
Java,Python以及R语言
DataSetAPI
支持Java、Scala和Python。
DataStreamAPI支持JavaandScala
计算模型
Spark是基于数据片集合(RDD)进行小批量处理,采用了微批处理模型
Flink是一行一行处理,基于操作符的连续流模型。
优缺点
在流式处理方面,不可避免增加一些延时,Spark则只能支持秒级计算。
Flink的流式计算跟Storm性能差不多,支持毫秒级计算
2。
硬件需求
硬盘
推荐有
4-8
块硬盘每个节点
因Flink目前不是很成熟,管方文档没有看到硬件需求要求,其他资料上面也没有看到。
内存
8Gtohundredsofgigabytes每台机子
网络
最好万兆网卡
CPU
至少是8-16核每台机子
3.数据源集成
数据源API
NoSqldb,parquet,ORC,并且支持一些高级的操作,例如predicatepushdown
依赖map/reduceInputFormat来做数据源聚合
4。
性能对比
首先它们都可以基于内存计算框架进行实时计算,所以都拥有非常好的计算性能。
经过测试,Flink计算性能上略好.
1在HadoopYARN上
测试环境:
CPU:
7000个;
内存:
单机128GB;
版本:
Hadoop2.3.0,Spark1。
4,Flink0。
9
数据:
800MB,8GB,8TB;
算法:
K—means:
以空间中K个点为中心进行聚类,对最靠近它们的对象归类。
通过迭代的方法,逐次更新各聚类中心的值,直至得到最好的聚类结果。
迭代:
K=10,3组数据
图5迭代次数(纵坐标是秒,横坐标是次数)
总结:
Spark和Flink全部都运行在HadoopYARN上,性能为Flink>
Spark〉Hadoop(MR),迭代次数越多越明显,性能上,Flink优于Spark和Hadoop最主要的原因是Flink支持增量迭代,具有对迭代自动优化的功能.
4.2在单个节点上比较ApacheFlinkandApacheSpark
测试环境:
Ubuntu虚拟机运行WordCount计算80M文本文件,见下表
4GbRAM,1core
8GbRAM,2
cores
ApacheSpark
(time)
58
sec
45
ApacheFlink
36sec
22sec
5.与Hadoop兼容
计算的资源调度都支持YARN的方式
与Hadoop兼容
资源调度支持YARN的方式
数据存取都支持HDFS、HBase等数据源.
不支持原生HBase的TableMapper和TableReducer这些方法。
不可以直接运行MapReducejobs
数据存取都支持HDFS、HBase等数据源。
与Hadoop有着更好的兼容,如可以支持原生HBase的TableMapper和TableReducer,唯一不足是现在只支持老版本的MapReduce方法,可以直接运行MapReducejobs。
新版本的MapReduce方法无法得到支持
SQL支持
SQL的支持
Spark支持对SQL的优化,支持的范围要大一些
Flink支持主要是对API级的优化
7.计算迭代
delta—iterations,这是Flink特有的,在迭代中可以显著减少计算,图6、图7、图8是Hadoop(MR)、Spark和Flink的迭代流程。
图6Hadoop(MR)迭代流程
图7Spark迭代流程
图8Flink迭代流程
Flink自动优化迭代程序具体流程如图9所示.
图9Flink自动优化迭代程序具体流程
8.机器学习和图形处理
机器学习
MLlib
FlinkML
图形学习
GraphX
Gelly
TensorFlow对接
无缝对接
暂未实现
社区支持
Spark社区活跃度比Flink高很多。
10.总结
NoSQL数据库
支持,并且支持一些高级的操作,例如predicatepushdown
流式分析
支持
内存数据结构
分布式存储系统
有机器学习库支持
支持Python、Java语言支持
所有模块支持
部分模块支持Python:
支持Java、Scala和Python.DataStreamAPI支持JavaandScala
TensorFlow
对接
成本低廉
内存要求较高
官方暂未明确规定硬件需求
安全性
Lineage机制
和Checkpoint机制
Flink的容错机制是基于Chandy—Lamportdistributedsnapshots来实现的。
这种机制是非常轻量级的,允许系统拥有高吞吐率的同时还能提供强一致性的保障.
实时性
在流式处理方面,不可避免增加一些延时,Spark则只能支持秒级计算.
批处理支持
可扩展性
方便
可管理性
通过SparkUI-—数据可视化:
Spark事件的时间线视图
执行的DAG图
也可集成ApacheZeppelin
Flink提供了提交和执行所有作业的接口。
集成ApacheZeppelin,以支持数据导入(dataingestion)、数据分析(dataanalytics)、数据发现(datadiscovery)及数据协作和数据可视化.
开源平台成熟度
成熟
不太成熟
目前的确有一部分用户已经在生产环境中使用Flink了,但Flink还在发展中,还需要时间来成熟。
目前Spark相比Flink是一个更为成熟的计算框架,但是Flink的很多思路很不错。