Flink的容错机制第一篇 Flink简介

研究室用,暂且补充一篇加深理解

一,批处理运算和流处理运算

之前在简单介绍中已经对大数据概念有简短介绍,而要入门理解大数据框架Flink是什么,首先要了解批处理运算和流处理运算的关联和区别。

在应用中我们会接收到各种各样不同的数据,以接收数据的类型可以分为有限数据集(bounded)和无限数据集(unbounded),而处理这些数据的方式在这里可以分为两种,就是批处理运算和流处理运算。

- 流式传输(Streaming) :只要数据生成,连续执行的处理


- 批处理(Batch):在有限的时间内执行并运行到完整的处理,完成后释放计算资源

而从实际工业角度解读:
批量计算往往按数据块来处理数据,每一个task接收一定大小的数据块,比如MR,map任务在处理完一个完整的数据块后(比如128M),然后将中间数据发送给reduce任务。

流式计算的上游算子处理完一条数据后,会立马发送给下游算子,所以一条数据从进入流式系统到输出结果的时间间隔较短(当然有的流式系统为了保证吞吐,也会对数据做buffer)。

这样的结果就是:批量计算往往得等任务全部跑完之后才能得到结果,而流式计算则可以实时获取最新的计算结果。

二,Flink工程框架

那么Flink是什么?

Flink是分布式流处理的开源框架:
    提供准确的结果,即使在无序或延迟数据的情况下也是如此
    具有状态和容错能力,可以在保持应用状态的同时无故障地从故障中恢复
    大规模执行,在数千个节点上运行,具有非常好的吞吐量和延迟特性

想要搭建一个Flink工程,总体框架一般需要一个event log做消息传递组件,flink做运算,然后保存到database或者云服务器。

如图就是一个例子,我们通过把多样化的数据通过Apache Kafka处理形成流式数据,然后交给Flink平台处理运算。

Flink是一个大数据平台,支持各种运算来实现大数据运算的功能,并有自带的分析工具可以得到结果和供系统分析的资料,如CPU性能,memory,classloader等。

三,Flink编程模型

在Flink processing里面,编程运算模型由流和运算算子组成,其中流就是一系列连续的数据集,Flink运算算子分为source operator(用于数据发流), transformation operator(用于做运算)和sink operator(用于做数据收尾)。

四,有状态的运算

有状态的计算指计算任务的结果不仅仅依赖于输入,还依赖于它的当前状态,其实大多数的计算都是有状态的计算。

由于传统的流计算系统缺少对程序状态的有效支持,会导致性能变差,同时备份恢复很困难,Flink把每个运算算子的状态存储下来,每个输入事件和当前状态会决定算子的下一个状态和输出。


更多精彩内容