目录

  • 声明
  • 1. spark
    • spark 计算速度快
    • Spark与MR
  • 2. flink
    • flink是什么
    • flink特点
    • flink能做什么
    • 四、flink , mapreduce , Spark 对比
  • 另一篇flink介绍
  • Spark和Flink的对比
    • 一、数据抽象
    • 二、如何进行容错恢复
    • 三、计算模式
    • 四、对迭代计算的支持
    • 五、对交互式查询的支持
    • 六、计算延迟
    • 七、内存管理模型
    • 八、如何选择使用哪种计算框架

声明

本文是对已有的几篇csdn博客的一个提炼与总结,仅用于自己学习理解
所有引用均有明确标注

1. spark

Spark是基于内存计算的大数据并行计算框架。除了扩展了广泛使用的MapReduce计算模型,而且高效地支持更多计算模式,包括交互式查询和流处理。Spark适用于各种各样原先需要多种不同的分布式平台的场景,包括批处理、迭代算法、交互式查询、流处理

Spark除了一站式的特点之外,另外一个最重要的特点,就是基于内存进行计算,从而让它的速度可以达到MapReduce、Hive的数倍甚至数十倍

Spark主要用于大数据的计算,而Hadoop以后主要用于大数据的存储(比如HDFS、Hive,HBase等),以及资源调度(Yarn)。
Spark+Hadoop的组合,是未来大数据领域最热门的组合,也是最有前景的组合!

spark 计算速度快

spark将每个任务构建成DAG进行计算,内部的计算过程通过弹性式分布式数据集RDD在内存在进行计算,相比于hadoop的mapreduce效率提升了100倍

Spark与MR

MapReduce能够完成的各种离线批处理功能,以及常见算法(比如二次排序、topn等),基于Spark RDD的核心编程,都可以实现,并且可以更好地、更容易地实现。而且基于Spark RDD编写的离线批处理程序,运行速度是MapReduce的数倍,速度上有非常明显的优势。

Spark相较于MapReduce速度快的最主要原因就在于, MapReduce的计算模型太死板,必须是map-reduce模式,有时候即使完成一些诸如过滤之类的操作,也必须经过map-reduce过程,这样就必须经过shuffle过程。 而MapReduce的shuffle过程是最消耗性能的,因为shuffle中间的过程必须基于磁盘来读写。而Spark的shuffle虽然也要基于磁盘,但是其大量transformation操作,比如单纯的map或者filter等操作,可以直接基于内存进行pipeline操作,速度性能自然大大提升。

但是Spark也有其劣势。 由于Spark基于内存进行计算,虽然开发容易,但是真正面对大数据的时候(比如一次操作针对10亿以上级别),在没有进行调优的情况下,可能会出现各种各样的问题,比如OOM内存溢出等等。 导致Spark程序可能都无法完全运行起来,就报错挂掉了,而MapReduce即使是运行缓慢,但是至少可以慢慢运行完。

此外,Spark由于是新崛起的技术新秀,因此在大数据领域的完善程度,肯定不如MapReduce,比如基于HBase、Hive作为离线批处理程序的输入输出,Spark就远没有MapReduce来的完善。实现起来非常麻烦。

————————————————
版权声明:本文为CSDN博主「<一蓑烟雨任平生>」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45366499/article/details/110010589

2. flink

flink是什么

flink是一个面向流处理和批处理的分布式计算框架,即支持流处理,也支持批处理。
flink基于流处理引擎实现,正真做到了流处理,将批处理看作一种特殊的有界流
flink是基于java编程语言实现,支持java,scala,python进行编程开发
flink支持单机执行,或运行在大数据的yarn集群,或部署到k8s中执行

flink特点

支持有状态计算的Extactor-once语义及checkpoint
支持带有事件操作的流处理和窗口处理
支持灵活的窗口处理(时间,大小等多种窗口)
轻量级容错处理(使用savepoint进行错误恢复)
高吞吐,低延迟,高性能的流处理
支持savepoints机制(任务恢复)
支持大规模集群模式(yarn,Mesos,k8s)
内部实现了JVM内存管理
支持迭代计算和自动优化

flink能做什么

1、事件驱动型应用:一类具有状态的应用,它从一个或多个事件流提数据,并根据到来的事件触发计算,状态更新或其他外部操作(如:反欺诈,异常检测,规则告警)
2、数据分析应用:从原始数据中提取有价值的信息和指标。(如:数据监控,实验评估,实时数据分析)
3、数据管道应用:提取-转换-加载(ETL)是一种在存储系统之间进行数据转换和迁移的常用方式。 数据管道和 ETL 作业的用途相似,都可以转换、丰富数据。ETL会周期的将数据从某个存储系统移动到另一个。但数据管道是以持续流模式运行,而非周期性触发(如:检测文件系统目录,将新文件写到其他库)

四、flink , mapreduce , Spark 对比

————————————————
版权声明:本文为CSDN博主「wejboke626」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wejboke626/article/details/115567854

另一篇flink介绍

有很多人将大数据的计算引擎分成了 4 代
第 1 代:Hadoop MapReduc 批处理 Mapper、Reducer 2;
第 2 代:DAG 框架(Oozie 、Tez),Tez + MapReduce 批处理 1 个 Tez = MR(1) + MR(2) + … + MR(n) 相比 MR 效率有所提升;
第 3 代:Spark 批处理、流处理、SQL 高层 API 支持 自带 DAG 内存迭代计算、性能较之前大幅提;
第 4 代:Flink 批处理、流处理、SQL 高层 API 支持 自带 DAG 流式计算性能更高、可靠性更高。

Apache Flink 是为分布式、高性能、随时可用以及准确的流处理应用程序打造的开源流处理框架

————————————————
版权声明:本文为CSDN博主「数据人生coding」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/helloHbulie/article/details/120333974

Spark和Flink的对比

一、数据抽象

Spark:RDD(弹性分布式数据集)
Flink:stream(数据流:有界流和无界流),将批和流统一成流,只是批被抽象成一种有界流

二、如何进行容错恢复

Spark:通过DAG组成的谱系图(lineage)进行任务失败重计算,也可以设置检查点,为driver重启以及谱系截断使用。
Flink:通过检查点进行流重放(replay),Flink对分布式数据流和操作符的状态进行快照,对快照数据实施检查点。故障发生时,停止流处理,将运算重启并将输入置为上一个成功实施的检查点数据。

Spark检查点,前边有专门的文章描述,见如下链接:
https://blog.csdn.net/weixin_43878293/article/details/90752738

这里稍微说下Flink检查点,根据官网描述

Flink检查点通过对分布式数据流进行轻量级异步快照来完成。

首先,Flink的数据流由Barrier分隔,可以这么说,多个Barrier将流分成段。

Barrier与Barrier之间的流数据记录就被当做一个快照单位。

如果有多个流,则需要进行对齐,比如说多个源数据流达到第一个操作符,其中有些流的Barrier n先到达操作符,那么操作符会等待其它流的Barrier n到达,其它流的Barrier n全都到达之后,该操作符便发出Barrier n给下游操作符。

当到达Sink操作符时,每到达一个流的Barrier n进行一个确认,当所有流的Barrier n都到达并确认之后,系统便认为Barrier n已经完成。

操作符的状态快照进行时间:

当所有流的Barrier n均达到该操作符之后,并在将Barrier n发出到拓扑下游操作符之前。

此时,所有来自Barrier n之前的记录对状态的更新均已完成,状态被存储。

状态被存储之后,操作符发出checkpoint确认信息,标志该检查点完成,然后将用于快照的Barrier n发往输出流,并继续。

然后我们看看最终的快照包含些什么:

1、对于并行输入流,快照包含了快照开始时的流偏移。
2、对于操作运算符,快照包含了指向其存储的状态数据的指针。
这里有一点可以知道,对齐操作肯定是会带来延迟的。

Flink做了一个开关,可以跳过对齐操作。

不用对齐,也就是说,在快照时,Barrier n内的记录快照也将包含Barrier n+1的部分记录,而包含的这部分Barrier n+1的数据,会在Barrier n+1的checkpoint中被重放,也就是是说,这部分数据将是重复的。

对齐仅仅发生在像join、reparationing/shuffle等具有多上游作为输入、或者其结果会发往多个下游的操作符。

Flink异步状态快照实现方式:

同步会耽误时间。异步的话,需要使得后续的继续处理对该Barrier n之前的快照状态不产生影响,于是需要一个对象来保存状态。Flink利用写时复制,操作符在产生Barrier n状态输出的同时对状态输出进行一份拷贝,之后的流记录状态更新对拷贝的对象不产生影响。

由后台进程进行状态存储工作,当操作符所有的输入流Barrier n均已到达之后,操作符便启动拷贝其状态的工作,并立即往输出流发出Barrier n,然后继续处理后续流记录。以此达到异步检查点的效果。

恢复:

遇到失败时,Flink选择上一个完整的checkpoint数据。系统重部署整个分布式数据流,输入源置为上一个checkpoint记录的位置,并将所有操作符的状态置为checkpoint中进行的各操作符快照状态数据。

如果快照是增量快照,那么操作符从上一个完整状态快照开始,并进行一系列的状态快照增量更新操作。

运算符快照实现:

分为两个部分,同步部分和异步部分

同步部分:运算符和状态backends将其状态快照提供为Java FutureTask,FutureTask包含了同步操作已经完成而异步操作处于挂起的状态数据,执行checkpoint时后台线程就执行挂起的异步操作。
异步部分:操作符同步返回已经完成的FutureTask,如果异步操作需要执行,则异步操作在FutureTask的run()方法中执行。

三、计算模式

Spark:本质上还是批处理,流处理是微批处理,计算框架仍然是MapReduce
Flink:连续运算符模式

四、对迭代计算的支持

Spark:由于是内存计算,并且Spark的RDD模型能够与机器学习训练模型很好的契合,可以很好的支持迭代计算,并且有很多库可以使用,API很方便。
Flink:定义step function并将其嵌入到迭代运算符中来实现迭代计算,对并行的所有的step function进行求值得到superstep,并在superstep的粒度上进行同步,也就是说保证一次迭代全部完成才开始下一次迭代。

五、对交互式查询的支持

Spark:提供Spark SQL满足用户交互式查询需求
Flink:提供顶层SQL抽象

六、计算延迟

Spark:批处理因为启动任务等等,延迟大概在100ms范围内,continus模式延迟大概1ms范围
Flink:由于是基于运算符的连续流处理,流处理延迟小于Spark,这点优于Spark

七、内存管理模型

Spark:统一内存模型,内存主要被划分为Storage内存、Execution内存、Other内存。
Flink:以MemorySegment为最小内存单位抽象,由MemoryPool来管理,MemorySegment有两种实现,堆和非堆,可配置。由MemoryPool来管理内存,分配、回收等,大大减小了GC压力。

八、如何选择使用哪种计算框架

Spark:特点,高吞吐、高性能、低延迟。能满足大部分流处理应用(如官方所讲,因为传感器触发、人为事件等的延迟均为ms级以上,所以说Spark能满足大部分流处理应用),但是由于Spark任务启动、stage执行的等待(需要等到一个stage执行完才能进行下一个stage)等带来的延迟,使得Spark并不适合实时性要求极高的流处理。另外,Spark有着丰富的库支持,使得使用起来非常方便。

Flink:特点,高吞吐、高性能、实时性高于Spark,由于其基于操作的运算完成后可立即将结果发往下游算子进行计算,因此其延迟非常小。适合对实时性要求严格的需求。可以说Flink是Spark强有力的竞争者。
————————————————
版权声明:本文为CSDN博主「初心江湖路」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43878293/article/details/102790252

spark和flink是什么、区别、共同点以及替换性相关推荐

  1. Spark、Flink、CarbonData技术实践最佳案例解析

    当前无论是传统企业还是互联网公司对大数据实时分析和处理的要求越来越高,数据越实时价值越大,面向毫秒~秒级的实时大数据计算场景,Spark和Flink各有所长.CarbonData是一种高性能大数据存储 ...

  2. 大数据框架对比:Hadoop、Storm、Samza、Spark和Flink——flink支持SQL,待看

    简介 大数据是收集.整理.处理大容量数据集,并从中获得见解所需的非传统战略和技术的总称.虽然处理数据所需的计算能力或存储容量早已超过一台计算机的上限,但这种计算类型的普遍性.规模,以及价值在最近几年才 ...

  3. 【华为云技术分享】唐老师带你秒懂大数据,以及Spark和Flink在干啥咧

    [摘要] 花20分钟时间入门一个新领域,唐老师以一个生活中的例子,表达大数据框架Spark和Flink的各自特色.入门总结,请多指教. 作为网络老砖家(自封),唐老师本对大数据是一窍不通,在看完一系列 ...

  4. 上:Spark VS Flink – 下一代大数据计算引擎之争,谁主沉浮?

    作者简介 王海涛,曾经在微软的 SQL Server和大数据平台组工作多年.带领团队建立了微软对内的 Spark 服务,主打 Spark Streaming.去年加入阿里实时计算部门,参与改进阿里基于 ...

  5. 「大数据分析」寻找数据优势:Spark和Flink终极对决

    这是数据处理引擎的发电站,它们正竞相定义下一个大数据时代 当涉及到大数据时,流计算和它所带来的实时强大分析的重要性是不可避免的.此外,当涉及到流计算时,无法避免该领域最强大的两种数据处理引擎:Spar ...

  6. 杠上Spark、Flink?Kafka为何转型流数据平台

    AI前线导读: 消息中间件系统(比如RabbitMQ.Kafka.Pulsar等)是现代实时数据或者流数据基础架构的关键环节.它通常作为一个数据管道,链接了各种业务前台和数据后台(比如数仓等).但是随 ...

  7. 怎样在Spark、Flink应用中使用Protobuf 3的包

    如果在在Spark.Flink应用中使用Protobuf 3的包,因为Spark默认使用的是2.5版本的包,提交任务时,可能会报如下异常: com.google.protobuf.CodedInput ...

  8. Spark与Flink:对比与分析

    Spark是一种快速.通用的计算集群系统,Spark提出的最主要抽象概念是弹性分布式数据集(RDD),它是一个元素集合,划分到集群的各个节点上,可以被并行操作.用户也可以让Spark保留一个RDD在内 ...

  9. flink和kafka区别_Apache Flink和Kafka入门

    flink和kafka区别 介绍 Apache Flink是用于分布式流和批处理数据处理的开源平台. Flink是具有多个API的流数据流引擎,用于创建面向数据流的应用程序. Flink应用程序通常使 ...

最新文章

  1. R语言ggplot2可视化绘制二维的密度图:在R中建立二维散点数据的连续密度热图、2D密度估计、MASS包中的kde2d函数实现2D密度估计、geom_density2d函数可视化二维密度图
  2. .NET常见问题汇总
  3. 利用SIFT和RANSAC算法(openCV框架)实现物体的检测与定位,并求出变换矩阵(findFundamentalMat和findHomography的比较)
  4. des解密不完整,前面几位是乱码的解决办法
  5. Java MySql 连接数据库
  6. 13.Data Leakage
  7. mongodb 监控权限_MongoDB - 监控
  8. 耐人深思的总结,牛牛牛
  9. windows黑客编程系列(一):运行单一实例
  10. java学习总结及心得体会
  11. python图库图片_python爬取优美图库海量图片,附加代码,一键爬取
  12. 51单片机AD模数转换(SPI通信)
  13. 在企业里管理机器学习:来自银行和医疗行业的经验
  14. html+css+js简单实现图片轮播效果
  15. itools官方中文版2014 v2.0.3.8_苹果同步软件
  16. 贾扬清分享_深度学习框架caffe
  17. android相机拍照
  18. 安顺控股冲刺A股上市:拟募资6.5亿元,九成收入来自天然气销售
  19. php文件大小单位转换GB MB KB
  20. 插入U盘自动运行指定程序

热门文章

  1. ubuntu19.04详细安装教程
  2. Request、Response对象的生命周期
  3. 求回归直线方程y=a+bx
  4. 面试题集锦(非常适合初中级测试工程师)
  5. ppt文件被彻底删除后如何恢复
  6. 使用pycharm时安装pymouse和pyhook的一个细节
  7. 6. FileInputFormat实现类
  8. Michael kors OutletSales Institution 21 year’s
  9. Springboot毕设项目唐韵古都长安纪念品网站z037yjava+VUE+Mybatis+Maven+Mysql+sprnig)
  10. 游承超:手机有必要贴钢化玻璃膜吗?(8P)