带你认识Apache的顶级项目Flink!

2021-04-13 10:37:55 浏览数 (1)

注: 对于Flink呢博主也是在开始进行深度的一个学习,其次就是Flink这个框架很值得去学习,有很大的学习价值,博主也是一个00后的大数据程序员,这条路很难,但是我坚信只要努力坚持的走下去,还是会有很大的收获的。

一 flink 简介

1.1 什么是 Flink?

Apache Flink 是由 Apache 软件基金会开发的开源流处理框架,其核心是用 Java 和 Scala 编写的分布式流数据流引擎。Flink 以数据并行和流水线方式执行任意流数据程序,Flink 的 流水线运行时系统可以执行批处理和流处理程序。此外,Flink 的运行时本身也支持迭代算 法的执行。

1.2 为什么选择Flink?

流数据更真实的反映了我们的生活方式

传统的数据架构是基于有限数据集的

1.3 Flink有哪些特点呢?

代码语言:javascript复制
批流统一 
支持高吞吐、低延迟、高性能的流处 
支持带有事件时间的窗口(Window)操作 
支持有状态计算的 Exactly-once 语义 
支持高度灵活的窗口(Window)操作,支持基于 time、count、session 窗口操作 
支持具有 Backpressure 功能的持续流模型
支持基于轻量级分布式快照(Snapshot)实现的容错 
支持迭代计算
Flink 在 JVM 内部实现了自己的内存管理 
支持程序自动优化:避免特定情况下 Shuffle、排序等昂贵操作,中间结果有必要进行 缓存

1.4 Flink编程 API

二 flink 架构

2.1 架构图

2.2 含义

代码语言:javascript复制
1.JobManager

也称之为 Master,用于协调分布式执行,它用来调度 task,协调检查点,协调失败时恢复 等。Flink 运行时至少存在一个 master,如果配置高可用模式则会存在多个 master,它们其 中有一个是 leader,而其他的都是 standby。

2.TaskManager

也称之为 Worker,用于执行一个 dataflow 的 task、数据缓冲和 Data Streams 的数据交换, Flink 运行时至少会存在一个 TaskManager。JobManager 和 TaskManager 可以直接运行在物理 机上,或者运行 YARN 这样的资源调度框架,TaskManager 通过网络连接到 JobManager,通 过 RPC 通信告知自身的可用性进而获得任务分配。

3.Client

Flink 用来提交任务的客户端,可以用命令提交,也可以用浏览器提交

4.Task

Task 是一个阶段多个功能相同 suntask 的集合,类似 spark 中的 taskset

5.Subtask

Subtask 是 flink 中任务执行最小单元,是一个 java 类的实例,这份 java 类中有属性和方法, 完成具体的计算逻辑

6.Operator chain

没有 shuffle 的多个算子合并在一个 subtask 中就形成了 Operator chain,类似 spark 中的 pipeline

7.Slot

Flink 中计算资源进行隔离的单元,一个 slot 中可以运行多个 subtask,但是这些 subtask 必须 是来自同一个 job 的不同 task 的 subtask

8.State

Flink 任务运行过程中计算的中间结果

9.Checkpoint

Flink 用来将中间结果持久化的指定的存储系统的一种定期执行的机制

10.stateBackend

Flink 用来存储中间计算结果的存储系统,flink 支持三种 statebackend。分别是 memory, fsbackend,rocksDB

三 Flink 和其他框架对比

下面比较Spark和Flink的不同。 一些方法在两个框架中都是相同的,而有些方法有很大不同。

3.1 与 spark 角色对比

Spark Streaming

Flink

DStream

DataStream

Trasnformation

Trasnformation

Action

Sink

Task

SubTask

Pipeline

Oprator chains

DAG

DataFlow Graph

Master Driver

JobManager

Worker Executor

TaskManager

3.2 三大实时计算框架整体对比

框架

优点

缺点

Storm

低延迟

吞吐量低、不能保证 exactly-once、编程 API 不 丰富

Spark Streaming

吞吐量高、可以保证 exactly-once、编程 API 丰富

延迟较高

Flink

低延迟、吞吐量高、可以保证 exactly-once、编程 API 丰富

快速迭代中,API 变化比较 快

Spark 就是为离线计算而设计的,在 Spark 生态体系中,不论是流处理和批处理都是底层引 擎都是 Spark Core,Spark Streaming 将微批次小任务不停的提交到 Spark 引擎,从而实现准 实时计算,SparkStreaming 只不过是一种特殊的批处理而已。

Flink 就是为实时计算而设计的,Flink 可以同时实现批处理和流处理,Flink 将批处理(即有 有界数据)视作一种特殊的流处理。

暂时就只能给大家写到这了,剩下的博主还得去研究学习,这是一些简单的介绍以及和其他框架的对比。

0 人点赞