1 Flink简介
Apache Flink是一个框架和分布式处理引擎,用于对无界和有界数据流进行状态计算。
1.1 Flink的应用场景
1.1.1 为什么选择Flink
传统的数据架构是基于有限数据集的。
使用Flink的目标是: 低延迟,高吞吐,结果的准确性和良好的容错性。
1.1.2 应用场景

但不限于以上场景。
1.2 流式处理
1.2.1 数据处理架构
1)传统数据处理架构
1.1)事务处理

1.2)分析处理
将数据从业务数据库复制到数据仓库,再进行分析和查询。关键是有ETL过程。离线处理

2)流式处理
有状态的流式处理。

1.2.2 流处理的演变
1) lambda架构

逐渐再被淘汰!
2)Flink

Storm: 典型的第一代流处理架构。
Lambda流处理架构:第二代。
Spark Streaming:依然是将流数据转成微小的批次进行处理。
Flink:解决了上面三个架构中的所有问题。第三代。
1.2.3 Flink的特点
1)事件驱动

2)基于流的世界观
在Flink的世界观中,一切都是由流组成的,离线数据是有界的流;实时数据是一个没有界限的流:这就是有界流和无界流。

3)分层API
- 越顶层越抽象,表达含义越简明,使用越方便;
- 越底层越具体,表达能力越丰富,使用越灵活。

其中,最上层仍然在完善中,阿里推出了blink等。
4)其它特点
- 支持事件时间(event-time)和处理时间(processing-time)语义;
- 精确一次(exactly-once)的状态一致性保证;
- 低延迟,每秒处理数百万个事件,毫秒级延迟;
- 与众多常用寸尺系统的连接;
- 高可用,动态扩展,实现7*24小时全天候运行。
5)Flink与Spark Streaming的对比
5.1)真正的流(stream)和微批(micro-batching)的区别

5.2)数据模型
- spark采用RDD模型,spark streaming的DStream实际上也就是一组组小批数据RDD的集合;
- flink基本数据模型是数据流,以及事件(Event)序列。
5.3)运行时架构
- spark是批计算,将DAG划分为不同的stage,一个完成后才可以计算下一个;
- flink是标准的流执行模式,一个事件在一个节点处理完后可以直接发往下一个节点进行处理。

本文介绍了Apache Flink这一先进的流处理框架,包括其应用场景、特点及与Spark Streaming的对比。Flink支持低延迟处理、精确的状态一致性保障,并提供丰富的API层级供开发者选择。
8194

被折叠的 条评论
为什么被折叠?



