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

87 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第2天,今天学习了【流/批/OLAP 一体的 Flink 引擎介绍】这部分内容,重点是讲解了Flink框架的结构,详细介绍了流、批、OLAP的场景及对应的Flink实践。

流/批/OLAP场景

OLAP
离线计算
周期性计算
实时计算
7*24运行
交互式分析
数据分析、BI报表业务,特殊的批计算,对并发和实时性要求高

Flink

面向有界、无界数据流的基于状态计算的分布式处理框架。

分层架构

  1. SDK: SQL、datastream、python
  2. Runtime:  将代码转换为DAG图,调度层把DAG转换为Task
  3. 状态存储
  4. 资源调度

总体架构

1.JobManager
任务整体协调,task调度,checkpoint(exactly once)
2.TaskManager
执行DataFlow Graph的各个任务

流批一体

批是流的特例,批是有界数据流,流是无界数据流
Everything is streams.

调度层

BLOCKING:

task之间数据交换是BLOCKING模式,分为N个pipeline region

PIPELINED:

所有task是同一个pipeline region

shuffle层

shuffle:分布式计算中,用来连接上下游数据交互的过程都叫shuffle

分类

基于文件基于pipeline
容错能力强,稳定,适合批作业低延时和高性能,但数据不会落盘,批任务失败需要重跑

流批一体

流/OLAP:基于pipeline 计算结束存内存,继续传输

批:基于blocking 计算结束先存磁盘(落盘),继续传输

Flink支持OLAP

现状:

  1. 作业管理与部署

JM单作业处理时间长,

TM初始化消耗CPU多,耗时严重

  1. 资源管理任务调度

JM管理slot.TM没有感知

实践

Flink First steps

安装Docker

docker pull flink
docker run -p 8000:8081 -it flink /bin/bash   # 把docker的flink UI 8081 转发到本地的8000

查看java版本

$ java -version
openjdk version "11.0.16" 2022-07-19
OpenJDK Runtime Environment 18.9 (build 11.0.16+8)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.16+8, mixed mode, sharing)

当前目录文件

image.png

启动&&关闭本地集群

./bin/start-cluster.sh
./bin/stop-cluster.sh

localhost:8000 UI界面

image.png