流/批/OLAP一体的Flink引擎介绍|青训营笔记
这是我参与“第四届青训营”笔记创作活动的第1天
一、Flink概述
1.1诞生背景
1.1.1 大数据内涵
指无法在一定时间内用常规软件工具对其进行获取、存储、管理和处理的数据集合。
1.1.2 大数据发展历史
1.1.3 流式计算出现的原因
大数据实时性的价值性更为大,例如:监控场景、金融风控、实时推荐等
1.2脱颖而出的原因
1.2.1 流式计算框架对比:
二、Flink整体框架
2.1 Flink分层架构
2.1.1 SDK层:Flink的SDK目前主要有三类:SQL/Table、DataStream、Python;
2.1.2 执行引擎层:执行引擎层提供了统一的DAG
过程:用来描述数据处理的Pipeline,不管是流还是批,都会转化为DAG图,调度层再把DAG转化成分布式环境下的Task,Task之间通过Shuffle传输数据;
2.1.3 状态存储层:负责存储算子的状态信息;
2.1.4 资源调度层: 目前Flink可以支持部署在多种环境。
2.2 Flink整体架构
2.2.1 Flink集群的两个核心组件:
(1)JobManager(JM):负责整个任务的协调工作,包括:调度task、触发调度Task做Checkpoint、协调容错恢复等;
(2)TaskManager(TM):负责执行一个DataFlow Graph的各个task以及data streams的buffer和数据交换。
2.3 Flink如何做到流批一体
2.3.1 原因: 数据源、实时数仓、离线数仓存在着人力成本比较高、数据链路冗余、数据口径不一致的痛点。
2.3.2 区别:
(1)流和批业务场景的特点:
(2)批式计算相比于流式计算核心区别:
2.3.3 Flink实现流批一体的涉及模块:(1)SQL层(2)DataStream API层统一,批和流都可以使用DataStream API来开发(3)Scheduler层架构统一,支持流批场景(4)Failover Recovery层架构统一,支持流批场景(5)Shuffle Service层架构统一,流批场景选择不同的Shuffle Service
三、Flink架构优化
三种业务场景的解决方案的要求及带来的挑战是:
四、Flink OLAP场景的挑战:
(1)Latency+QPS的要求 (2)秒级和毫秒级的小作业 (3)作业频繁启停、资源碎片
五、个人思考和总结
通过本次的训练营学习,从对Flink概述、整体架构、架构优化、精选案例讲解的课程安排进行学习,而正是这次学习让我对Flink引擎的学习有了进一步的认识和理解,其中,通过对课程中各个流式计算框架对比的学习与Flink的分层架构和整体架构学习让我明白了Flink引擎在流计算上具有更大的优势,对Flink引擎的学习有了更大的兴趣和好奇,课后加强练习,争取掌握知识点,将知识运用到项目处。