本期探究:Flink是怎样支持批流一体的呢?

val counts = visits .keyBy(“region”) .timeWindow(Time.hours(1)) .sum(“visits”) 如果知道输入数据是有限的,则可以通过以下代码实现批处理。

val counts = visits .keyBy(“region”) .window(GlobalWindows.create) .trigger(EndOfTimeTrigger.create) .sum(“visits”) Flink 的不寻常之处在于,它既可以将数据当作无限流来处理,也可以将它当作有限流来处理。Flink 的 DataSet API 就是专为批处理而生的,如下所示。

val counts = visits .groupBy(“region”) .sum(“visits”) 如果输入数据是有限的,那么以上代码的运行结果将与前一段代码的相同, 但是它对于习惯使用批处理器的程序员来说更友好。

Fink批处理模型 Flink 通过一个底层引擎同时支持流处理和批处理

3.jpg

在流处理引擎之上,Flink 有以下机制:

检查点机制和状态机制:用于实现容错、有状态的处理; 水印机制:用于实现事件时钟; 窗口和触发器:用于限制计算范围,并定义呈现结果的时间。 在同一个流处理引擎之上,Flink 还存在另一套机制,用于实现高效的批处理。

用于调度和恢复的回溯法:由 Microsoft Dryad 引入,现在几乎用于所有批处理器; 用于散列和排序的特殊内存数据结构:可以在需要时,将一部分数据从内存溢出到硬盘上; 优化器:尽可能地缩短生成结果的时间。 两套机制分别对应各自的API(DataStream API 和 DataSet API);在创建 Flink 作业时,并不能通过将两者混合在一起来同时 利用 Flink 的所有功能。

在最新的版本中,大数据培训Flink 支持两种关系型的 API,Table API 和 SQL。这两个 API 都是批处理和流处理统一的 API,这意味着在无边界的实时数据流和有边界的历史记录数据流上,关系型 API 会以相同的语义执行查询,并产生相同的结果。Table API 和 SQL 借助了 Apache Calcite 来进行查询的解析,校验以及优化。它们可以与 DataStream 和 DataSet API 无缝集成,并支持用户自定义的标量函数,聚合函数以及表值函数。

Table API / SQL 正在以流批统一的方式成为分析型用例的主要 API。

DataStream API 是数据驱动应用程序和数据管道的主要API。

从长远来看,DataStream API应该通过有界数据流完全包含DataSet API。

Flink批处理性能 MapReduce、Tez、Spark 和 Flink 在执行纯批处理任务时的性能比较。测试的批处理任务是 TeraSort 和分布式散列连接。

第一个任务是 TeraSort,即测量为 1TB 数据排序所用的时间。

TeraSort 本质上是分布式排序问题,它由以下几个阶 段组成:

(1) 读取阶段:从 HDFS 文件中读取数据分区;

(2) 本地排序阶段:对上述分区进行部分排序;

(3) 混洗阶段:将数据按照 key 重新分布到处理节点上;

(4) 终排序阶段:生成排序输出;

(5) 写入阶段:将排序后的分区写入 HDFS 文件。

最后

由于篇幅有限,这里就不一一罗列了,20道常见面试题(含答案)+21条MySQL性能调优经验小编已整理成Word文档或PDF文档

MySQL全家桶笔记

还有更多面试复习笔记分享如下

Java架构专题面试复习

g-9FlNqebB-1720114528613)]

还有更多面试复习笔记分享如下

[外链图片转存中…(img-IDh86fJM-1720114528613)]

  • 18
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值