序言

针对版本v1.14.3 ,之前的都是基于v1.12 .Flink的官方文档的变动不是一般的小.而且版本升级也挺快短短4个月从1.12发布到了1.14.3 . 总是该文是基于v1.14.3版本cuiyaonan2000@163.com

该批流统一是基于DataStream的官方最新文档梳理,版本v1.14.3cuiyaonan2000@163.com

参考资料:

  1. 执行模式(流/批) | Apache Flink

执行模式(流/批)

DataStream API 支持不同的运行时执行模式,你可以根据你的用例需要和作业特点进行选择。

哪两种呢?如下所示(废话么~~~):

  1. 流(STREAMING)执行模式:  这种模式适用于需要连续增量处理,而且预计无限期保持在线的无边界作业。
  2. 批(BATCH)执行模式: 这种执行作业的方式更容易让人联想到批处理框架,比如 MapReduce。这种执行模式适用于有一个已知的固定输入,而且不会连续运行的有边界作业。

注意这里是在使用DataStream API的时候选择 设置不同的模式,如果选择对了会对你的程序起到优化的效果.毕竟流数据跟批量数据的不同.cuiyaonan2000@163.com

官方文档描述:

通过启用执行,我们允许 Flink 应用只有在我们知道输入是有边界的时侯才会使用到的额外的优化。例如,可以使用不同的关联(join)/ 聚合(aggregation)策略,允许实现更高效的任务调度和故障恢复行为的不同 shuffle。下面我们将介绍一些执行行为的细节。

When

一般来说,在你的程序是有边界的时候,你应该使用执行模式,因为这样做会更高效。当你的程序是无边界的时候,你必须使用执行模式,因为只有这种模式足够通用,能够处理连续的数据流。

Set

执行模式可以通过 execute.runtime-mode 设置来配置。有三种可选的值:

  • STREAMING: 经典 DataStream 执行模式(默认)
  • BATCH: 在 DataStream API 上进行批量式执行
  • AUTOMATIC: 让系统根据数据源的边界性来决定

命令方式设置

$ bin/flink run -Dexecution.runtime-mode=BATCH examples/streaming/WordCount.jar

代码中设置

StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.setRuntimeMode(RuntimeExecutionMode.BATCH);

批流模式在DataStream中的不同

具体参考V14.3的官网.这只简单说明下.我感觉差别比较大的.

先看官网的用例代码:

StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();DataStreamSource<String> source = env.fromElements(...);source.name("source").map(...).name("map1").map(...).name("map2").rebalance().map(...).name("map3").map(...).name("map4").keyBy((value) -> value).map(...).name("map5").map(...).name("map6").sinkTo(...).name("sink");

包含 1-to-1 连接模式的操作(即算子并行度为1),比如 map()、 flatMap() 或 filter(),可以直接将数据转发到下一个操作,这使得这些操作可以被链接在一起。这意味着 Flink 一般不会在他们之间插入网络 shuffle。

而像 keyBy() 或者 rebalance() 这样需要在不同的任务并行实例之间进行数据 shuffle 的操作,就会引起网络 shuffle。------这里的shuffle你可以理解为任务拆分以及合并,即多少个算子算一个任务放在一个taskmanager中cuiyaonan2000@163.com

对于上面的例子,Flink 会将操作分组为这些任务:

  • 任务1: source、 map1 和 map2
  • 任务2: map3 和 map4
  • 任务3: map5 、 map6 和 sink

我们在任务1到任务2、任务2到任务3之间各有一次网络 shuffle。这是该作业的可视化表示:

流执行模式

执行模式下,所有任务需要一直在线/运行。这使得 Flink可以通过整个管道立即处理新的记录,以达到我们需要的连续和低延迟的流处理。这同样意味着分配给某个作业的 TaskManagers 需要有足够的资源来同时运行所有的任务。

网络 shuffle 是 流水线 式的,这意味着记录会立即发送给下游任务(即流模式下,数据从一个算子到另一个算子是实时的,不会存在停顿cuiyaonan2000@163.com),在网络层上进行一些缓冲。同样,这也是必须的,因为当处理连续的数据流时,在任务(或任务管道)之间没有可以实体化的自然数据点(时间点)。这与执行模式形成了鲜明的对比,在执行模式下,中间的结果可以被实体化,如下所述。

批执行模式

执行模式下,一个作业的任务可以被分离成可以一个接一个执行的阶段。我们之所以能做到这一点,是因为输入是有边界的,因此 Flink 可以在进入下一个阶段之前完全处理管道中的一个阶段。在上面的例子中,工作会有三个阶段,对应着被 shuffle 界线分开的三个任务。

不同于上文所介绍的模式立即向下游任务发送记录,分阶段处理要求 Flink 将任务的中间结果实体化到一些非永久存储中,让下游任务在上游任务已经下线后再读取。这将增加处理的延迟,但也会带来其他有趣的特性。其一,这允许 Flink 在故障发生时回溯到最新的可用结果,而不是重新启动整个任务。其二,作业可以在更少的资源上执行(就 TaskManagers 的可用槽而言),因为系统可以一个接一个地顺序执行任务。-----最大的差别就是批模式的任务是分阶段执行的,即如上的3个任务处理,不像流模式那样同时存在,批模式下这3个任务是一个执行完了,才创建另外一个任务.所以这里需要实例化中间结果cuiyaonan2000@163.com

TaskManagers 将至少在下游任务开始消费它们前保留中间结果(从技术上讲,它们将被保留到消费的流水线区域产生它们的输出为止)。在这之后,只要空间允许,它们就会被保留,以便在失败的情况下,可以回溯到前面涉及的结果。

DataStream API模式的更多差异参考官方文档:执行模式(流/批) | Apache Flink

Flink的批流统一:Ⅱ相关推荐

  1. flink批流统一​(还没完成)

    flink批流统一​(还没完成) 从目前接触的资料来看, 批流一体化涉及的意思有这么几种: ①存储流批一体 ②数据流批一体 ③APi流批一体

  2. hive增量表和全量表_基于 Flink + Hive 构建流批一体准实时数仓

    基于 Hive 的离线数仓往往是企业大数据生产系统中不可缺少的一环.Hive 数仓有很高的成熟度和稳定性,但由于它是离线的,延时很大.在一些对延时要求比较高的场景,需要另外搭建基于 Flink 的实时 ...

  3. Flink 和 Pulsar 的批流融合

    简介:如何通过 Apache Pulsar 原生的存储计算分离的架构提供批流融合的基础,以及 Apache Pulsar 如何与 Flink 结合,实现批流一体的计算. 简介:StreamNative ...

  4. 基于 Flink + Hive 构建流批一体准实时数仓

    简介: 想要搭建流式链路就必须得抛弃现有的 Hive 数仓吗?并不是,借助 Flink 可以实现已有的 Hive 离线数仓准实时化.本文整理自 Apache Flink Committer.阿里巴巴技 ...

  5. 袋鼠云批流一体分布式同步引擎ChunJun(原FlinkX)的前世今生

      一.前言 ChunJun(原FlinkX)是一个基于Flink提供易用.稳定.高效的批流统一的数据集成工具,是袋鼠云一站式大数据开发平台-数栈DTinsight的核心计算引擎,其技术架构基于实时计 ...

  6. hadoop 批流处理的实现_从T+1到T+0,浅谈PetaBase的实时流式处理

    随着互联网+的进一步发展,各行业对大数据技术的应用日趋成熟,企业的信息化范围正在高速扩展. 我们发现,越来越多的企业大数据分析已不再局限于传统的T+1场景,对数据的实时性分析和处理要求很高.例如网站流 ...

  7. 开源 | 全球首个批流一体机器学习平台 Alink

    背景 随着大数据时代的到来和人工智能的崛起,机器学习所能处理的场景更加广泛和多样.构建的模型需要对批量数据进行处理,为了达到实时性的要求还需要直接对流式数据进行实时预测,还要具备将模型应用在企业应用和 ...

  8. Flink教程(09)- Flink批流一体API(Connectors示例)

    文章目录 01 引言 02 Connectors 2.1 Flink目前支持的Connectors 2.2 JDBC案例 2.3 Kafa案例 2.3.1 Kafa相关命令 2.3.2 Kafka C ...

  9. Flink教程(07)- Flink批流一体API(Transformation示例)

    文章目录 01 引言 02 Transformation 2.1 基本操作 2.1.1 API 解析 2.1.2 示例代码 2.2 合并 2.2.1 union 2.2.2 connect 2.2.3 ...

最新文章

  1. 探秘音视频网络优化与全球化部署最佳实践
  2. sql azure 语法_如何将SQL Server数据库备份到Microsoft Azure
  3. ios请求php接口,php – 确保http(s)请求来自我的iOS应用程序
  4. Python redis 批量模糊删除keys
  5. 【leetcode刷题笔记】单调栈
  6. 搜集整理一些Cron表达式例子
  7. PTA---约分最简分式 (10 分)
  8. ios 裁剪框大小_ios – 如何将视频裁剪为特定大小?
  9. 基于matlab的单相pwm逆变电路的仿真研究,基于MATLAB的单相PWM逆变电路的仿真研究.pdf...
  10. 2020寒假【gmoj2223】【hen母鸡下蛋】【区间和】
  11. java 创建用户界面_建立图形用户界面 JAVA实验
  12. LC-3 中断实验 (深大计系1实验5)
  13. 鸿蒙系统卡顿解决方法,鸿蒙比安卓性能提升60%,还解决了安卓卡顿的问题,谷歌压力山大...
  14. 【django接口自动化1】环境搭建
  15. 功能性需求和非功能性需求
  16. Socket 对外接口 (一)
  17. 从大数据看技术,为什么天猫双11是史上最大数字经济节日
  18. bootstrap table固定列导致复选框失效的解决方法
  19. 虚拟创业云|BBC幼儿英语启蒙动画Alphablocks字母积木全4季
  20. python--读取TRMM-3B43月平均降水绘制气候态空间分布图(陆地区域做掩膜)

热门文章

  1. PHP 根据文字内容添加图片上实现自动换行的小程序
  2. python国际象棋ai程序_只需五步!手把手教你搭建国际象棋AI机器人
  3. 使用jsfl批量生成fla文件(文件是在多个文件夹下)如果是单个文件夹下也可以
  4. BIOMOD2模型、MaxEnt模型物种分布模拟,生物多样性生境模拟,论文写作
  5. 最新:基于MAXENT模型的生物多样性生境模拟与保护优先区甄选、自然保护区布局优化评估及论文写作技巧
  6. 7-5 球的表面积和体积 (10 分)
  7. 【180929】数字拼图游戏源码
  8. MySQL怎么用x28改变颜色_MySQL SELECT练习题*28
  9. 数字信号处理实验二:DFT的共轭对称性及应用
  10. excel一列前加一固定值