Apache Flink实战全集

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。

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接口

Reference List

  1. Apache Flink;
  2. Apache Flink Documentation;
  3. Getting Started with Apache-Flink.