Flink初探|青训营笔记

95 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第2天

课前

1.目标

  • Flink概念
  • 整体架构
  • 架构优化

2.各种大数据技术概念

  • 谷歌的三驾马车: 耳熟能详的mapreduce, googlefilesstem, bigtable
  • MapReduce : 个人经过看博客等介绍,MapReduce是一个编程模型 & 计算的框架,其中map的函数能够针对一部分数据进行计算,这样数据就会被切分。 MapReduce计算框架为每一个数据块分配一个函数去进行计算,实现分布式计算。其中最强大的点就是 shuffle的过程,分布式计算将不同服务器上的相关的数据合并到一起进行计算。
  • 流式计算:对数据流进行处理,是实时计算。批量计算则统一收集数据,存储到数据库中,然后对数据进行批量处理的数据计算方式。
  • Flink:核心是一个流式的数据流执行引擎 ,提供流处理和批处理

课中

大数据?

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

Flink的诞生

Screen Shot 2022-07-27 at 9.12.25 PM.png

为了解决上述的问题,谷歌发布了三个论文:分布式、Map Reduce、离线计算

但是这只是一个开头,对于 实时性、流计算、流批一体的需求,Flink应运而生

流式计算

  • 实时计算,相当快速
  • 无限流、动态、没有边界
  • 流批一体

Flink的分层架构

Screen Shot 2022-07-27 at 9.24.36 PM.png

SDK层:比如说供用户提供的SQL、DataStream、Python

执行引擎层:将流或者是批数据转化为DAG图, 调度将DAG图转化成分布式环境下的Task ,通过shuffle传输数据

状态存储层: 存储算子的状态信息

资源调度层:部署在多种环境

Flink整体架构

Screen Shot 2022-07-27 at 9.32.03 PM.png

总体流程:

  1. Client端将用户的代码进行处理成为DAG
  2. 将逻辑的执行图提交给JM
  3. JM将逻辑的执行图转换成物理的执行图
  4. 进行Task调度

流批一体

批处理:不是实时的,比如进行看视频,一天内收集数据然后对这一批数据进行统计然后处理

流处理:实时计算、延迟很低在秒级内

Screen Shot 2022-07-27 at 9.42.03 PM.png

\