流/批/OLAP一体的Flink引擎介绍|青训营笔记

78 阅读2分钟

流/批/OLAP一体的Flink引擎介绍|青训营笔记

这是我参与“第四届青训营”笔记创作活动的第1天

一、Flink概述

1.1诞生背景

1.1.1 大数据内涵

指无法在一定时间内用常规软件工具对其进行获取、存储、管理和处理的数据集合。

1.1.2 大数据发展历史

image.png

1.1.3 流式计算出现的原因

大数据实时性的价值性更为大,例如:监控场景、金融风控、实时推荐等

1.2脱颖而出的原因

1.2.1 流式计算框架对比:

image.png

二、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、协调容错恢复等;

image.png

(2)TaskManager(TM):负责执行一个DataFlow Graph的各个task以及data streams的buffer和数据交换。

2.3 Flink如何做到流批一体

2.3.1 原因: 数据源、实时数仓、离线数仓存在着人力成本比较高、数据链路冗余、数据口径不一致的痛点。

2.3.2 区别:

(1)流和批业务场景的特点: image.png

(2)批式计算相比于流式计算核心区别:

image.png

2.3.3 Flink实现流批一体的涉及模块:(1)SQL层(2)DataStream API层统一,批和流都可以使用DataStream API来开发(3)Scheduler层架构统一,支持流批场景(4)Failover Recovery层架构统一,支持流批场景(5)Shuffle Service层架构统一,流批场景选择不同的Shuffle Service

三、Flink架构优化

三种业务场景的解决方案的要求及带来的挑战是:

image.png

四、Flink OLAP场景的挑战:

(1)Latency+QPS的要求 (2)秒级和毫秒级的小作业 (3)作业频繁启停、资源碎片

五、个人思考和总结

通过本次的训练营学习,从对Flink概述、整体架构、架构优化、精选案例讲解的课程安排进行学习,而正是这次学习让我对Flink引擎的学习有了进一步的认识和理解,其中,通过对课程中各个流式计算框架对比的学习与Flink的分层架构和整体架构学习让我明白了Flink引擎在流计算上具有更大的优势,对Flink引擎的学习有了更大的兴趣和好奇,课后加强练习,争取掌握知识点,将知识运用到项目处。