1. Apache Flink简介
1.1. Flink的用途
像Apache Hadoop和Apache Spark一样,Apache Flink是一个社区驱动的开源框架,用于分布式大数据分析。 Flink用Java编写,具有适用于Scala,Java和Python的API,可进行批处理和实时流分析。
1.2. 必备环境
• 类似于UNIX的环境,例如Linux,Mac OS X或Cygwin(实际上也支持Windows环境);
• Java 6.X或更高版本;
• [可选] Maven 3.0.4或更高版本。
1.3. 体系结构和技术栈

1.3.1. Flink应用执行环境
Apache Flink是一个数据处理系统,是Hadoop MapReduce组件的替代产品。它带有自己的运行时,而不是在MapReduce之上构建。因此,它可以完全独立于Hadoop生态系统工作。
ExecutionEnvironment是执行程序的上下文。您可以根据需要使用不同的环境。
- JVM环境:Flink可以在单个Java虚拟机上运行,从而允许用户直接从其IDE测试和调试Flink程序。使用此环境时,您需要的只是正确的Maven依赖项。
- 本地环境:为了能够在正在运行的Flink实例上运行程序(而不是从IDE内部),您需要在计算机上安装Flink。
- 集群环境:以standalone集群或yarn集群的完全分布式方式运行Flink。
1.3.2. Flink API接口
Flink可用于流或批处理。它们提供了三个API:
- DataStream API:流处理,即对无限制数据流的转换(过滤器,时间窗口,聚合)。
- DataSet API:批处理,即数据集的转换。
- Table API:类似于SQL的表达语言(例如Spark中的数据框),可以嵌入批处理和流应用程序中。
1.3.3. 构建层次
在最基础的层级上,Flink由Sources,Transformations和Sinks组成。

- Data Source:Flink处理的传入数据;
- Transformations:Flink修改传入数据时的处理步骤;
- Data Sink:Flink处理后在哪里发送数据。
Sources和Sinks可以是本地/HDFS文件,数据库,消息队列等。已经有许多第三方连接器可用,或者您可以轻松创建自己的连接器。
2. Flink实战章节
第一篇: Apache Flink快速入门
第二篇: Apache Flink三类API接口