fink概述

作为实时领域对飙spark的存在,flink现在已经得到广泛的使用了,既然能得到业界任何和使用,肯定有其过人之处,之后工作中也有可能会用到,了解一下总是没错的。

Flink核心是一个流式的数据流执行引擎,提供各种API,如Java、Scala和Python,同事支持类似SQL的操作。

数据传输方式

首先需要了解两个概念: 1.流处理:当一条数据被处理完成后,序列化到缓存中,然后立刻通过网络传输到下一个节点,由下一个节点继续处理; 2.批处理:当一条数据被处理完成后,序列化到缓存中,并不会立刻通过网络传输到下一个节点,当缓存写满,就持久化到本地硬盘上,当所有数据都被处理完成后,才开始将处理后的数据通过网络传输到下一个节点。

故流处理的优势是低延迟,批处理的优势是高吞吐,而flink可以通过调整缓存块的超时阈值,灵活地权衡系统延迟和吞吐量。

作业流程

flink作业提交流程: 在这里插入图片描述 其中:

Program Code:我们编写的 Flink 应用程序代码;

Job Client:Job Client 不是 Flink 程序执行的内部部分,但它是任务执行的起点。 负责接受用户的程序代码,然后创建数据流,将数据流提交给 Job Manager。 执行完成后,将结果返回给用户;

Job Manager:主进程(也称为作业管理器)协调和管理程序的执行。 主要职责包括安排任务,管理checkpoint ,故障恢复等。机器集群中至少要有一个 master,master 负责调度 task,协调 checkpoints 和容灾,高可用设置的话可以有多个 master,但要保证一个是 leader, 其他是 standby; Job Manager 包含 Actor system、Scheduler、Check pointing 三个重要的组件;

Task Manager:从 Job Manager 处接收需要部署的 Task。Task Manager 是在 JVM 中的一个或多个线程中执行任务的工作节点。 任务执行的并行性由每个 Task Manager 上可用的任务槽决定。 每个任务代表分配给任务槽的一组资源。

支持数据源

支持Flink on YARN

支持HDFS

支持来自Kafka的输入数据

支持Apache HBase

支持Hadoop程序

支持Tachyon

支持ElasticSearch

支持RabbitMQ

支持Apache Storm

支持XtreemFS

容错机制

分布式数据流的轻量级异步快照: flink采用异步屏障快照(ABS),这是一种适用于现代数据流执行引擎的轻量级算法,可最大限度地减少空间需求。 ABS仅保留非循环执行拓扑上的运算符状态,同时保持循环数据流的最小记录日志。这是一个支持有状态流处理的分布式分析引擎。算法对执行没有太大的影响,保持线性可扩展性并且在频繁的快照中表现良好。

barriers: flink分布式快照的核心概念之一是barriers,这些barriers被注入数据流并与记录一起作为数据流的一部分向下流动。 barriers永远不会超过记录,数据流严格有序。 barriers将数据流中的记录分为进入当前快照的记录和进入下一个快照的记录。每个barriers都带有快照的ID,并且barriers之前的记录都进入了该快照。 barriers不会中断流的流动,非常轻量级。 来自不同快照的多个barriers可以同时在流中出现,这意味着可以同时发生各种快照。 在这里插入图片描述

窗口

在流处理应用中,数据是连续不断的,因此我们不可能等到所有数据都到了才开始处理。当然我们可以每来一个消息就处理一次,但是有时我们需要做一些聚合类的处理,例如:在过去的1分钟内有多少用户点击了我们的网页。在这种情况下,我们必须定义一个窗口,用来收集最近一分钟内的数据,并对这个窗口内的数据进行计算。

窗口可以是时间驱动的(Time Window, 例如: 每30秒钟), 也可以是数据驱动的(Count Window, 例如: 每一百个元素),一种经典的窗口分类可以分成: 翻滚窗口(Tumbling Window, 无重叠), 滚动窗口(Sliding Window, 有重叠), 和会话窗口(Session Window,活动间隙)。

而flink提供了常用的几乎所有窗口。

总结特点

1.更快,计算能力强;

2.更稳定,容错机制强;

3.更灵活,可根据数据量调节;

4.更好用,支持多种数据源,支持多种使用方式。

参考: https://www.cnblogs.com/feiyudemeng/p/8998772.html https://www.jianshu.com/p/d5ccb3aaabc5 https://blog.csdn.net/superzyl/article/details/79748092 https://baijiahao.baidu.com/s?id=1623279487849430246&wfr=spider&for=pc https://blog.csdn.net/superzyl/article/details/79748092 http://www.aboutyun.com/thread-25540-1-1.html https://www.jianshu.com/p/442521ddc28f