
上QQ阅读APP看书,第一时间看更新
1.3 Flink源代码的目录结构
Flink源代码的目录主体结构如图1-7所示。

图1-7 Flink源代码目录结构
接下来对Flink目录下的模块进行简单介绍。
(1)Flink主体模块
- flink-annotations:主要提供定义文档方面的注解,以及类、方法使用范围的注解。
- flink-clients:提供本地模式和Standalone模式的启动方式的提交实现,并提供其他模式的启动接口;提供作业的编译、提交以及对已运行作业进行查看等功能。
- flink-core:提供通用的API、通用的工具包、各种配置相关的实现、各种数据类型及解析;提供核心文件系统的抽象接口和通用方法,以及内存管理部分和Flink I/O部分的接口。
- flink-dist:提供Flink构建打包的配置和相关脚本。
- flink-java:提供Flink批处理DataSet的Java API。
- flink-metrics:提供Flink Metric注册的核心实现以及各种Metric Reporter。
- flink-ml-parent:提供机器学习的基本抽象模型与接口。原来的版本中有基本的机器学习库,不过该库在Flink 1.9版本中被移除。
- flink-optimizer:主要提供编译作业,生成优化后的执行计划(Plan)。
- flink-python:提供Flink Python的运行支持,以及Python DataStream、DataSet和Table API。
- flink-queryable-state:提供查询状态的Client API和查询状态的服务。
- flink-runtime:提供运行时各个通信组件的实现、数据传输、HA服务、blob服务、检查点等(后文会详细介绍)。
- flink-runtime-web:Flink Web部分,提供外部的REST API及Web UI。
- flink-scala:提供Flink批处理DataSet的Scala API。
- flink-state-backends:在flink-state-backends中只有RocksDB backend(RocksDB后端处理组件)的实现模块,file backend(文件后端处理组件)、memory backend(内存状态后端处理组件)等其他状态后端处理组件的实现都在flink-runtime模块中。
- flink-streaming-java:提供Flink流处理DataStream的Java API。
- flink-streaming-scala:提供Flink流处理DataStream的Scala API。
- flink-table:提供Flink Table的Java API、Scala API、SQL解析、SQL客户端以及关于Table的运行时。
(2)Flink部署模块
- flink-container:提供构建Flink镜像的Docker配置和Flink on Kubernetes的相关YAML的模板(如taskmanager.deployments.yaml.template)。
- flink-mesos:Flink on Mesos的部署模式的启动和集群的管理。
- flink-yarn:Flink on YARN的部署模式的启动和集群的管理。
(3)Flink测试模块
- flink-end-to-end-tests:Flink端到端的测试。
- flink-fs-tests:Flink文件系统的测试。
- flink-jepsen:基于Jepsen的测试,通过模拟异常来验证Flink引擎的健壮性。
- flink-test-utils-parent:Flink测试的一些基本工具类。
- flink-tests:Flink重要模块的集成测试。
- flink-yarn-tests:Flink on YARN的集成测试。
(4)Flink其他模块
- flink-contrib:提供Docker启动Flink的方式和Wikipedia的connector。
- flink-connectors:多种Flink connector的实现和API。
- flink-docs:Flink文档的生成方式的实现。
- flink-examples:一些Flink的应用实例。
- flink-filesystems:Flink对HDFS、S3、Azure等多种文件系统的支持和实现。
- flink-formats:Flink对Avro、Parquet、CSV、JSON等格式的支持。
- flink-libraries:CEP、Gelly的实现,Scala、Java API和状态操作的API。
- flink-quickstart:两个分别使用Scala和Java实现的完整Flink应用实例。对应官网quick start的应用源代码。
- flink-scala-shell:实现类似于Spark shell、支持交互式的Scala shell。
- flink-shaded-curator:Flink curator的Shade实现。
- tools:支持Shade、CheckStyle、Releasing等项目代码管理的工具。