Spark与Flink:对比与分析
Spark是一种快速、通用的计算集群系统,Spark提出的最主要抽象概念是弹性分布式数据集(RDD),它是一个元素集合,划分到集群的各个节点上,可以被并行操作。用户也可以让Spark保留一个RDD在内存中,使其能在并行操作中被有效的重复使用。Flink是可扩展的批处理和流式数据处理的数据处理平台,设计思想主要来源于Hadoop、MPP数据库、流式计算系统等,支持增量迭代计算。
原理
Spark 1.4特点如下所示。
- Spark为应用提供了REST API来获取各种信息,包括jobs、stages、tasks、storage info等。
- Spark Streaming增加了UI,可以方便用户查看各种状态,另外与Kafka的融合也更加深度,加强了对Kinesis的支持。
- Spark SQL(DataFrame)添加ORCFile类型支持,另外还支持所有的Hive metastore。
- Spark ML/MLlib的ML pipelines愈加成熟,提供了更多的算法和工具。
- Tungsten项目的持续优化,特别是内存管理、代码生成、垃圾回收等方面都有很多改进。
- SparkR发布,更友好的R语法支持。
图1 Spark架构图
图2 Flink架构图
图3 Spark生态系统图
Flink 0.9特点如下所示。
https://github.com/apache/flink
- DataSet API 支持Java、Scala和Python。
- DataStream API支持Java and Scala。
- Table API支持类SQL。
- 有机器学习和图处理(Gelly)的各种库。
- 有自动优化迭代的功能,如有增量迭代。
- 支持高效序列化和反序列化,非常便利。
- 与Hadoop兼容性很好。
图4 Flink生态系统图
分析对比
性能对比
首先它们都可以基于内存计算框架进行实时计算,所以都拥有非常好的计算性能。经过测试,Flink计算性能上略好。
测试环境:
- CPU:7000个;
- 内存:单机128GB;
- 版本:Hadoop 2.3.0,Spark 1.4,Flink 0.9
- 数据:800MB,8GB,8TB;
- 算法:K-means:以空间中K个点为中心进行聚类,对最靠近它们的对象归类。通过迭代的方法,逐次更新各聚类中心的值,直至得到最好的聚类结果。
- 迭代:K=10,3组数据
图5 迭代次数(纵坐标是秒,横坐标是次数)
总结:Spark和Flink全部都运行在Hadoop YARN上,性能为Flink > Spark > Hadoop(MR),迭代次数越多越明显,性能上,Flink优于Spark和Hadoop最主要的原因是Flink支持增量迭代,具有对迭代自动优化的功能。
流式计算比较
它们都支持流式计算,Flink是一行一行处理,而Spark是基于数据片集合(RDD)进行小批量处理,所以Spark在流式处理方面,不可避免增加一些延时。Flink的流式计算跟Storm性能差不多,支持毫秒级计算,而Spark则只能支持秒级计算。
与Hadoop兼容
计算的资源调度都支持YARN的方式
数据存取都支持HDFS、HBase等数据源。
Flink对Hadoop有着更好的兼容,如可以支持原生HBase的TableMapper和TableReducer,唯一不足是现在只支持老版本的MapReduce方法,新版本的MapReduce方法无法得到支持,Spark则不支持TableMapper和TableReducer这些方法。
SQL支持
都支持,Spark对SQL的支持比Flink支持的范围要大一些,另外Spark支持对SQL的优化,而Flink支持主要是对API级的优化。
计算迭代
delta-iterations,这是Flink特有的,在迭代中可以显著减少计算,图6、图7、图8是Hadoop(MR)、Spark和Flink的迭代流程。
图6 Hadoop(MR)迭代流程
图7 Spark迭代流程
图8 Flink迭代流程
Flink自动优化迭代程序具体流程如图9所示。
图9 Flink自动优化迭代程序具体流程
社区支持
Spark社区活跃度比Flink高很多。
总结
Spark和Flink都支持实时计算,且都可基于内存计算。Spark后面最重要的核心组件仍然是Spark SQL,而在未来几次发布中,除了性能上更加优化外(包括代码生成和快速Join操作),还要提供对SQL语句的扩展和更好地集成。至于Flink,其对于流式计算和迭代计算支持力度将会更加增强。无论是Spark、还是Flink的发展重点,将是数据科学和平台API化,除了传统的统计算法外,还包括学习算法,同时使其生态系统越来越完善。
Spark与Flink:对比与分析相关推荐
- flink Spark 和 Flink对比
文章目录 前言 1. 数据处理架构 2. 数据模型和运行架构 3. Spark 还是 Flink? 前言 Apache Spark 是一个通用大规模数据分析引擎.它提出的内存计算概念让大家得以从 ...
- 大数据框架对比:Hadoop、Storm、Samza、Spark和Flink——flink支持SQL,待看
简介 大数据是收集.整理.处理大容量数据集,并从中获得见解所需的非传统战略和技术的总称.虽然处理数据所需的计算能力或存储容量早已超过一台计算机的上限,但这种计算类型的普遍性.规模,以及价值在最近几年才 ...
- Flink对比Spark以及流计算发展趋势分析
前言 丑话说在前面,笔者无意于撩拨 Flink 和 Spark 两个群体的矛盾,社区间取长补短也好,互相抄袭也好,都不是个事,关键在于用户群体的收益. 在各种会上,经常会被问到 Spark 和 Fli ...
- Spark、Flink、CarbonData技术实践最佳案例解析
当前无论是传统企业还是互联网公司对大数据实时分析和处理的要求越来越高,数据越实时价值越大,面向毫秒~秒级的实时大数据计算场景,Spark和Flink各有所长.CarbonData是一种高性能大数据存储 ...
- 上:Spark VS Flink – 下一代大数据计算引擎之争,谁主沉浮?
作者简介 王海涛,曾经在微软的 SQL Server和大数据平台组工作多年.带领团队建立了微软对内的 Spark 服务,主打 Spark Streaming.去年加入阿里实时计算部门,参与改进阿里基于 ...
- 从Hadoop到Spark和Flink,大数据处理框架十年激荡发展史
当前这个数据时代,各领域各业务场景时时刻刻都有大量的数据产生,如何理解大数据,对这些数据进行有效的处理成为很多企业和研究机构所面临的问题.本文将从大数据的基础特性开始,进而解释分而治之的处理思想,最后 ...
- 从Hadoop到Spark、Flink,大数据处理框架十年激荡发展史
abstract: 当前这个数据时代,各领域各业务场景时时刻刻都有大量的数据产生,如何理解大数据,对这些数据进行有效的处理成为很多企业和研究机构所面临的问题.本文将从大数据的基础特性开始,进而解释分而 ...
- 从Hadoop到Spark、Flink,大数据处理框架十年激荡发展史!
当前这个数据时代,各领域各业务场景时时刻刻都有大量的数据产生,如何理解大数据,对这些数据进行有效的处理成为很多企业和研究机构所面临的问题.本文将从大数据的基础特性开始,进而解释分而治之的处理思想,最后 ...
- 再见,Spark!Flink已成气候!
身为大数据工程师,你还在苦学Spark.Hadoop.Storm,却还没搞过Flink?醒醒吧!刚过去的2020双11,阿里在Flink实时计算技术的驱动下全程保持了"如丝般顺滑" ...
最新文章
- Yolo模型部署的两种方法
- 如何用asp.net向其他服务器post一条信息
- 人工智能科普|自然语言处理(NLP)
- NAT概念解释(不完全版,但不会搞错...)
- ML之SVM:基于SVM(sklearn+subplot)的鸢尾花iris数据集的前两个特征(线性不可分的两个样本),判定鸢尾花是哪一种类型
- 【数学建模】非线性规划模型与01规划模型(最优化)
- 为什么我们会拖延? (TED)
- grunt使用小记之开篇:grunt概述
- orm java_Java 8 Friday:不再需要ORM
- VMM2012应用指南之12- 创建自助服务用户并分配云
- java 4位数,java 找出4位数的所有吸血鬼数字
- IDEA 隐藏编辑器顶部 Tab 栏
- 微服务Eureka使用详解
- Ajax学习笔记-get请求参数-3
- Kent Beck : 领导的敏捷潮
- 罗技 连点 脚本_走心分享!当评测罗技MASTER 3遇上ANYWHERE 3_鼠标
- 如何在OpenAI创建一个api key(chatgpt)?
- 《利用Python进行数据分析: Python for Data Analysis 》学习随笔
- UDDI和FWSI技术委员会宣布关闭
- pandas关键字提取_使用NLP从文章中自动提取关键字
热门文章
- c语言中的数字菱形,打印数字菱形,急啊,帮帮小女子啊。。。
- rose顺序图转换为协作图_【S7200指令教程】顺序控制指令SCR SCRT SCRE
- HbuilderX跳转 / 定义快捷键
- 文件流导出乱码_Savespss:不使用StatTransfer也可转换dta为sav文件的利器
- 小学四年级下册计算机考试试题,四年级信息技术下学期测试题
- android.mk 优化编译,android下ndk编译c优化
- 二十三、Java类中重载和重写的区别
- sklearn分类模型
- java的死锁是什么意思_Java面试题:什么是死锁?如何手写一个死锁(Dead Lock)...
- 辰星计划2022 | 旷视研究院春季实习生招募开始啦!