大数据学习-Flink引擎(二) | 青训营笔记

151 阅读4分钟

大数据学习-Flink引擎 | 青训营笔记

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

昨天学习了Flink引擎,讲了大数据的背景,Flink的分层架构、Flink的总体架构和一个类似于Helloworld的wordcount程序,今天继续学习Flink引擎。

Flink如何做到流批一体

这部分内容比较多,会从为什么需要流批一体流批一体的挑战Flink如何做到流批一体流批一体的Scheduler层流批一体的Shunffle Service层等方面来讲解。

为什么需要流批一体

  • 在抖音中,实时统计一个短视频的播放量、点赞数,也包括抖音直播间的实时观看人数等(流)

  • 在抖音中,按天统计创造者的一些数据信息,比如昨天的播放量有多少、评论量多少、广告收入多少(批);

上述流和批的具体实现:

image.png

上述架构有一些痛点

  • 1.人力成本比较高:流、批两套系统,相同逻辑需要开发两遍;

  • 2.数据链路冗余:本身计算内容是一致的,由于是两套链路,相同逻辑需要运行两遍,产生一定的资源浪费;

  • 3.数据口径不一致:两套系统、两套算子、两套UDF,通常会产生不同程度的误差,这些误差会给业务方带来非常大的困扰。

所以为了减少成本,也为了减少误差,就需要流批一体的引擎来处理

流批一体的挑战

流和批业务场景的特点:

image.png

流和批的计算核心也不同

流式计算的数据流是无限数据集,是低延迟、业务会感知运行中的情况,比如直播等。

而批式计算的数据流式有限数据集,实时性要求不高,只关注最终结果产出时间等

Flink如何做到流批一体

Flink中有一个抽象,认为Everything is stream,即批式计算是流式计算的特列,有界的数据集是一种特殊的数据流,不管哪种数据的集合,都是流,所以理论上我们是可以用一套引擎架构来解决上述的两种场景的。

而Apache Flink给以下模块都做了大量的优化,来让其既支持流又支持批: 1.SQL层:支持bound和unbound数据集的处理

2.DataStream API层统一,批和流都可以使用DataStream ApI来开发;

3.ScheDuler 层架构统一,支持流批场景;

4.Failover Recovery层 架构统一,支持流批场景;

5.Shuffle Service 层架构统一,流批场景选择不同的Shuffle Service;

流批一体的Scheduler层

Scheduler主要负责将作业的DAG转化为在分布式环境中可以执行的Task,在1.12之前的版本,Flink就支持EAGER和LAZY两种模式的调换,

  • EAGER就是要全部的资源才能处理Task,
  • LAZY就是可以先做一半,再等下半部分的资源

但流的场景就需要一直计算,而新版本的Flink就用一个新的概念Pipeline Region来处理,

Pipeline Region就是由Pipeline的数据交换方式连接的Task构成,不管是流还是批都根据Pipeline Region粒度来调度。

流批一体的Shuffle Service层

  • 在分布式计算中,用来连接上下游数据交互的过程叫做Shuffle,而一般情况下,分布式计算中所有涉及到上下游衔接的过程,都可以理解为Shuffle。

  • 针对不同的分布式计算框架,Shuffle通常有几种不同的实现:

    1.基于文件的Pull Based Shuffle,比如Spark或MR;它的特点是具有较高的容错性,适合较大规模的批处理作业由于是基于文件的,它的容错性和稳定性会更好一些;

    2.基于Pipeline的Push Based Shuffle,比如Flink、Storm、Presto等,它的特点是低延迟和高性能,但是因为数据没有存储下来,如果是batch任务的话,就需要进行重跑恢复

  • 流和批之间Shuffle是有差异的

image.png

Flink架构优化

在日常的生活中,针对不容的场景,往往我们对数据处理的要求是不同的,比如,在抖音的一些推广活动中,运营需要对一些实时产出的结果数据做一些实时多维分析,来帮助后面活动的决策,这时我们就需要OLAP(交互式分析)了

流/批/OLAP业务场景概述

image.png OLAP的典型差异是高并发查询,查询返回时间有很高的要求,需要高性能支持

Flink的OLAP的优化之路

  • Flink支持OLAP,可降低用户的学习成本,提高开发效率,还可与其数据存储引擎生态结合,可以在跨数据源查询的方面有很大的优势。
  • OLAP本身是一个巨大的挑战,需要达到秒级和毫秒级的作业运算,还频繁启停,资源碎片多
  • Flink OLAP架构

image.png

  • Flink 的OLAP架构目前还有许多的问题有待解决