(一)Flink基本原理及应用场景——写在的前言
今天是2019年3月10号星期天,闲来无事一如既往来到了临街的马群花园城大众书局,在这里近一年的时间每逢周末就会来坐坐,打开电脑,萌生了一个想法。
鉴于Flink本人略有研究,后面的工作可能也会与Flink有关系,因此打算写一系列的关于Flink的相关博文,算是一个自我整理总结,话不多说直接开场第一篇。
说明:目前所介绍的Flink是基于1.6.1版本。
Flink简介:
1、Apache Flink 是一个开源的分布式、高性能、高可靠、准确的流处理框架。
2、Java代码实现。
3、支持实时流Stream处理和批Batch处理,批处理仅仅作为流数据的一个特例。
4、Flink原生支持迭代计算、内存管理、程序优化。
Flink架构:
Flink基本组件:
Data Source ------->Transformations -------> Data Sink
Flink的流处理与批处理:
1、Flink通过灵活的执行引擎,能够同时支持批处理任务与流处理任务
在执行引擎这一层,流处理系统与批处理系统最大的不同在于节点间的数据传输方式。
对于一个流处理系统,其节点间数据传输的标准模型是:当一条数据被处理完成后,序列化到缓存中,然后立刻通过网络传输到下一个节点,由下一个节点继续处理。
对于一个批处理系统,其节点间数据传输的标准模型是:当一条数据被处理完成后,序列化到缓存中,并不会立刻通过网络传输到下一个节点,当缓存写满,就持久化到本地硬盘中,当所有数据被处理完成后,才开始将处理后的数据通过网络传输到下一个节点。
这两种数据传输模式是两个极端对应的是流处理系统对低延迟的要求和批处理系统对高吞吐量的要求。
Flink的执行引擎采用了一种十分灵活的方式,同时支持了这两种数据传输模型。
Flink以固定的缓存块为单位进行网络数据传输,用户可以通过设置缓存块超时值指定缓存块的传输时机。如果缓存块的超时值为0,则Flink的数据传输方式类似上文所提到流处理系统的标准模型,此时系统可以获得最低的处理延迟。
如果缓存块的超时值为无限大,则Flink的数据传输方式类似上文所提到的批处理系统的标准模型,此时系统可以获得最高的吞吐量。
同时缓存块的超时值也可以设置为0到无限大之间的任意值。缓存块的超时阈值越小,则Flink流处理执行引擎的数据处理延迟越低,但吞吐量也会降低,反之亦然。通过调整缓存块的超时阈值,用户可根据需求灵活地权衡系统延迟和吞吐量。
如图三种处理模型:
Flink应用场景:
有关需要数据实时处理分析的应用场景等。
Flink vs Storm vs SparkStreaming:
转载请注明地址: https://www.cnblogs.com/wynjauu/articles/10505110.html