01-Flink是什么
背景
2010年到2014年,由柏林工业大学、柏林洪堡大学和哈所普特拉纳研究所联合发起名为“Stratosphere”的研究项目;早期主要关注批处理;2014年4月,Stratosphere代码被贡献给Apache软件基金会,称为Apache基金还孵化器项目。在项目孵化期间,更名为Flink。Flink在德语中是快速和灵敏的意思,用棕红色松鼠作为Flink项目Logo,用来体现流式处理器速度快和灵活快速特点。
Apache Flink 是什么
开源的,同时支持高吞吐、低延迟、高性能的分布式框架。
一个用于对无界和有界数据流进行状态计算的分布式处理引擎。
无界流
有开始但是没有结束,不会在生成数据的时候终止流并提供数据。无界流必须连续的被处理,也就是事件被注入的时候必须被处理。他不太可能等待所有输入数据的到来,因为输入是无界,并且将来也不会在任意时刻结束。处理无界的数据常常需要被注入的事件是按照某一个顺序的,比如按照事件的发生顺序,并且和前面完成的结果是有关联的。
例:商场的中的滚动电梯
有界流
有开始也有结束,有界流可以在计算之前注入全部的数据,处理有节数据流不需要有序的注入,因为有界的数据集总是有序的,最为熟知的处理有界数据就是批处理。
例:商场中的直行电梯
flink擅长处理有界和无界数据集
有状态流计算架构
数据产生的本质,其实是一条条真实存在的事件。批处理(包括微批处理)其实都是在一定程度上违背了这种本质,需要通过在一定时延的情况下对业务数据进行处理,然后得到基于业务数据统计的准确结果;基于流式计算技术的局限性,我们很难在数据产生过程中进行计算并直接产生统计结果。而有状态计算架构的提出,从一定程度上满足了企业的这种需求,企业基于实时的流式数据,维护所有计算过程的状态,所谓状态就是计算过程中产生的中间计算结果,每次计算新的数据进入到流式系统中都是基于中间状态的基础上进行计算,最终产生正确的统计结果。基于有状态计算的方式最大的优势是不需要将原始数据从新从外部存储中拿出来,从而进行全量计算,因为这种计算方式的代价可能是非常高的。从另一个角度讲,用户无需通过调度和协调各种批量计算工具,从数据仓库中获取数据进行统计结果,然而再落地存储,这些操作全部都可以基于流式计算完成,可以极大减轻系统对其它框架的依赖,减少数据计算过程中的时间损耗以及硬件存储。
flink通过实现Google Dataflow流式计算模式实现了高吞吐、低延迟、高性能;三者兼具的实时流式计算框架。
Flink特性
- 支持批处理和流处理
- 同时支持高吞吐、低延迟、高性能
- 支持事件事件概念
- 支持窗口操作
- 支持有状态计算
- 基于轻量级分布式快照实现的容错
- 自动反压机制
- 基于JVM实现独立的内存管理
- 集成yarn/hdfs/hbase和其它Hadoop生态系统的组件
Flink使用场景
- 事件驱动(Event-driven Applications)
- 车载传感器
- 机械设备实时故障检测
- 实时分析(Data Analytics Applications)
- 实时只能推荐
- 实时欺诈检测
- 管道式ETL(Data Pipeline Applications)