Flink 引擎
💨Flink 诞生的背景
什么是大数据?
🚩大数据指在一定时间内用常规软件工具对其进行获取、存储、管理和处理的数据集合。
🎈大数据的计算架构经过几个发展阶段后到了 Flink 引擎这里已经可以实现流计算、实时、更快、流批一体还支持 SQL
什么是流式计算又为什么需要?
🚩在日常生活中,我们通常会把数据存储在一张表中,然后再进行加工、分析,这里就涉及到一个时效性的问题。如果我们处理以年、月为单位的级别的数据,那么数据的时效性要求并不高;但如果我们处理的是以天、小时,甚至分钟为单位的数据,那么对数据的时效性要求就比较高。在第二种场景下,如果我们仍旧采用传统的数据处理方式,统一收集数据,存储到数据库中,之后在进行分析,就可能无法满足时效性的要求。🚩而流式计算,顾名思义,就是对数据流进行处理,是实时计算。
💨详谈 Flink
Flink 的优点
🚩计算模式(Streaming Model):Native🚩一致性保证:Exactly-Once🚩延迟:低(毫秒级)🚩吞吐:High🚩容错:Checkpoint🚩状态(StateFul):Yes(Operator)🚩SQL 支持:Yes
🎈Apache Flink 是一个框架和分布式处理引擎,用于在无界和有界数据流上进行有状态计算。Flink 被设计为可以在所有常见的集群环境中运行,以内存速度和任何规模执行计算。
Flink 分层架构
🚩最上面是 SDK 层,就是 Flink 给用户提供的 SDK,目前主要有三类,SQL/Table、DataStream、Python;
🚩执行引擎层(Runtime 层):执行引擎层提供了统一的 DAG,用来描述数据处理的 Pipeline,不管是流还是批,都会转化为 DAG 图,调度层再把 DAG 转化成分布式环境下的 Task,Task 之间通过 Shuffle 传输数据;🚩状态存储层:负责存储算子的状态信息;🚩资源调度层:目前 Flink 可以支持部署在多种环境。
Flink 总体架构
🎈一个 Flink 集群,主要包含两个核心组件:
🚩JobManager(JM):负责整个任务的协调工作,包括:调度 task、触发协调 Task 做 Checkpoint、协调容错恢复等;🚩TaskManager(TM):负责执行一个 DataFlow Graph 的各个 task 以及 data streams 的 buffer 和数据交换。
🎈JM 的职责
JM 分成三个小部件
🚩Dispatcher:接收作业,拉起 JM 来执行作业,并在 JobMaster 挂掉之后恢复作业;
🚩JobMaster:管理一个 job 的整个生命周期,会向 ResourceManager 申请 slot,并将 task 调度到对应 TM 上;
🚩ResourceManager:负责 slot 资源的管理和调度,TM 拉起后会向 RM 注册;
Flink 如何做到流批一体
🎈为什么需要流批一体?
✔比如在抖音中,我们需要实时地获取一个短视频的播放量,点赞数,评论数,当然也包括抖音直播间的实时观看人数等。而流批一体可以帮助我们减少资源消耗、降低架构复杂性、提升价值产出效率
✨Flink 主要从一下几个模块来做流批一体
🚩SQL 层;
🚩DataStream API 层同意,批和流都可以使用 DataStream 来开发;
🚩Scheduler 层架构统一,支持流批场景;
🚩Failover Recovery 层架构统一,支持流批场景;
🚩Shuffle Service 层架构统一,流批场景选择不同的 Shuffle Service;
🍳在流处理引擎之上,Flink 有以下机制: 检查点机制和状态机制:用于实现容错、有状态的处理; 水印机制:用于实现事件时钟; 窗口和触发器:用于限制计算范围,并定义呈现结果的时间。
🍳在同一个流处理引擎之上,Flink 还存在另一套机制,用于实现高效的批处理。 用于调度和恢复的回溯法:由 Microsoft Dryad 引入,现在几乎用于所有批处理器; 用于散列和排序的特殊内存数据结构:可以在需要时,将一部分数据从内存溢出到硬盘上; 优化器:尽可能地缩短生成结果的时间。
Flink 是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。Flink 被设计在所有常见的集群环境中运行,以内存执行速度和任意规模来执行计算。
批处理的特点是有界、持久、大量,批处理非常适合需要访问全套记录才能完成的计算工作,一般用于离线统计。
流处理的特点是无界、实时,流处理方式无需针对整个数据集执行操作,而是对通过系统传输的每个数据项执行操作,一般用于实时统计。
版权声明: 本文为 InfoQ 作者【孤衫】的原创文章。
原文链接:【http://xie.infoq.cn/article/2ec9f761a14f0f1918c42d651】。文章转载请联系作者。
评论