1、背景
Flink认为有界数据集是无界数据流的一种特例,所以说有界数据集也是一种数据流,事件流也是一种数据流。
在国外一些社区,有很多人将大数据的计算引擎分成了4 代,当然也有很多人不会认同。
-
第1代——Hadoop MapReduce
-
第2代——DAG框架(
Tez
) + MapReduce -
第3代——Spark
-
第4代——Flink
2、快速入门
Flink 应用程序结构主要包含三部分,Source/Transformation/Sink
-
Source: 数据源,Flink 在流处理和批处理上的 source 大概有 4 类:
-
基于本地集合的 source
-
基于文件的 source
-
基于网络套接字的 source
-
自定义的 source。自定义的 source 常见的有 Apache kafka、Amazon Kinesis Streams、RabbitMQ、Twitter Streaming API、Apache NiFi 等,当然你也可以定义自己的 source。
-
Transformation:数据转换的各种操作,有 Map / FlatMap / Filter / KeyBy / Reduce / Fold / Aggregations / Window / WindowAll / Union / Window join / Split / Select / Project 等,操作很多,可以将数据转换计算成你想要的数据。
-
Sink:接收器,Flink 将转换计算后的数据发送的地点 ,你可能需要存储下来,Flink 常见的 Sink 大概有如下几类:
-
写入文件、
-
打印输出、
-
写入 socket 、
-
自定义的 sink 。自定义的 sink 常见的有 Apache kafka、RabbitMQ、MySQL、ElasticSearch、Apache Cassandra、Hadoop FileSystem 等,同理你也可以定义自己的 Sink。