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

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

一 flink 简介

在这里插入图片描述

1.1 什么是 Flink?

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

在这里插入图片描述

1.2 为什么选择Flink?

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

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

1.3 Flink有哪些特点呢?

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

1.4 Flink编程 API

在这里插入图片描述

二 flink 架构

2.1 架构图

在这里插入图片描述

2.2 含义

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 StreamingFlink
DStreamDataStream
TrasnformationTrasnformation
ActionSink
TaskSubTask
PipelineOprator chains
DAGDataFlow Graph
Master + DriverJobManager
Worker + ExecutorTaskManager

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱纹身的big数据

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值