作者:tingel34 | 来源:互联网 | 2023-09-13 04:05
注: 对于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 中的 taskset5. Subtask Subtask 是 flink 中任务执行最小单元,是一个 java 类的实例,这份 java 类中有属性和方法, 完成具体的计算逻辑6. Operator chain 没有 shuffle 的多个算子合并在一个 subtask 中就形成了 Operator chain,类似 spark 中的 pipeline7. Slot Flink 中计算资源进行隔离的单元,一个 slot 中可以运行多个 subtask,但是这些 subtask 必须 是来自同一个 job 的不同 task 的 subtask8. 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 将批处理(即有 有界数据)视作一种特殊的流处理。
暂时就只能给大家写到这了,剩下的博主还得去研究学习,这是一些简单的介绍以及和其他框架的对比。