在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

Flink中怎么实现批流一体

122次阅读
没有评论

共计 2498 个字符,预计需要花费 7 分钟才能阅读完成。

自动写代码机器人,免费开通

这篇文章将为大家详细讲解有关 Flink 中怎么实现批流一体,文章内容质量较高,因此丸趣 TV 小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

实现批处理的技术许许多多,从各种关系型数据库的 sql 处理,到大数据领域的 MapReduce,Hive,Spark 等等。这些都是处理有限数据流的经典方式。而 Flink 专注的是无限流处理,那么他是怎么做到批处理的呢?

Flink 中怎么实现批流一体

无限流处理:输入数据没有尽头; 数据处理从当前或者过去的某一个时间 点开始,持续不停地进行

另一种处理形式叫作有限流处理,即从某一个时间点开始处理数据,然后在另一个时间点结束。输入数据可能本身是有限的(即输入数据集并不会随着时间增长),也可能出于分析的目的被人为地设定为有限集(即只分析某一个时间段内的事件)。

Flink 中怎么实现批流一体

显然,有限流处理是无限流处理的一种特殊情况,它只不过在某个时间点停止而已。此外,如果计算结果不在执行过程中连续生成,而仅在末尾处生成一次,那就是批处理(分批处理数据)。

批处理是流处理的一种非常特殊的情况。在流处理中,我们为数据定义滑   动窗口或滚动窗口,并且在每次窗口滑动或滚动时生成结果。批处理则不同,我们定义一个全局窗口,所有的记录都属于同一个窗口。举例来说,  以下代码表示一个简单的 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 通过一个底层引擎同时支持流处理和批处理

Flink 中怎么实现批流一体

在流处理引擎之上,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 文件。

Flink 中怎么实现批流一体

Hadoop 发行版包含对 TeraSort 的实现,同样的实现也可以用于 Tez,因为 Tez 可以执行通过 MapReduce API   编写的程序。Spark 和 Flink 的 TeraSort 实现由 Dongwon Kim 提供. 用来测量的集群由 42 台机器组成,每台机器 包含 12 个  CPU 内核、24GB 内存,以及 6 块硬盘。

Flink 中怎么实现批流一体

结果显示,Flink 的排序时间比其他所有系统都少。MapReduce 用了 2157 秒,Tez 用了 1887 秒,Spark 用了 2171   秒,Flink 则 只用了 1480 秒。

第二个任务是一个大数据集 (240GB) 和一个小数据集 (256MB) 之间的分布式散列连接。结果显示,Flink 仍然是速度最快的系统,它所用的时间分别是  Tez 和 Spark 的 1/2 和 1/4.

Flink 中怎么实现批流一体

产生以上结果的总体原因是,Flink   的执行过程是基于流的,这意味着各个处理阶段有更多的重叠,并且混洗操作是流水线式的,因此磁盘访问操作更少。相反,MapReduce、Tez 和 Spark   是基于批的,这意味着数据在通过网络传输之前必须先被写入磁盘。该测试说明,在使用 Flink 时,系统空闲时间和磁盘访问操作更少。

值得一提的是,性能测试结果中的原始数值可能会因集群设置、配置和软件版本而异。

关于 Flink 中怎么实现批流一体就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-04发表,共计2498字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 深夜影院在线视频观看 | 国产精品久久国产精品99 | 亚洲精品久久久中文字 | 久久66热人妻偷产精品9 | 脱岳裙子从后面挺进去视频 | 深夜a级毛片免费视频 | 久久丁香五月天综合网 | 成人做受黄大片 | 成人男女18免费o | 国产午夜小视频 | 无码人妻品一区二区三区精99 | 99这里精品| 精品蜜臀av在线天堂 | 国产97在线 | 亚洲 | 国产精品外围在线观看 | 青青青青青青在线精品视频 | 日韩精品在线第一页 | 欧美成人www在线观看 | 一级做a爰片久久毛片免费 一级做a爰片久久毛片欧美 | 免费一级毛毛片 | 亚洲成a人在线看天堂无码 亚洲成本人网亚洲视频大全 | 国产又黄又猛又粗又爽的a片动漫 | 成人影院欧美大片免费看 | 免费一级黄色录像影片 | 色8激情欧美成人久久综合电影 | 99在线视频免费观看 | 国产69精品久久久久99不卡 | 亚洲国产一级毛片 | 国产人人艹 | 少妇被躁爽到高潮无码久久 | 亚洲国产精品悠悠久久琪琪 | 青青草免费在线视频 | 国产白丝jk捆绑束缚调教视频 | 免费一看一级毛片 | 欧美一级伦理 | 人妻暴雨中被强制侵犯在线 | 免费看的毛片 | 日韩欧美一级 | 亚洲国产成人欧美激情 | 夜夜澡天天碰人人爱av | 成人日韩熟女高清视频一区 |