Flink 源码分析(一):源码环境搭建

更新至 Flink 1.9.0 版本

环境

  • Java 1.8.0_221
  • Apache Maven 3.6.1
  • IntelliJ IDEA 2019.2.1

下载

访问 Flink GitHub,克隆代码:

git clone https://github.com/apache/flink.git  

切换至 release-1.9 分支:

git checkout release-1.9  

编译

编译:

mvn clean package -DskipTests  

项目结构

Flink release-1.9 分支,Flink 主要模块:

  • flink-annotations 注解;
  • flink-clients 客户端;
  • flink-connectors Flink 连接器,包括 Kafka、ElasticSearch、Cassandra、HBase、HDFS、Hive、JDBC 等;
  • flink-container 提供对 Docker 和 Flink on Kubernetes 支持;
  • flink-contrib 新模块准备或孵化区域;
  • flink-core Flink 核心代码;
  • flink-dist 提供对分发包支持;
  • flink-filesystems 提供对文件系统的支持,包括 HDFS、S3 等;
  • flink-formats 提供对文件格式的支持,包括 Avro、Parquet、JSON、CSV 等;
  • flink-java Flink 底层 API;
  • flink-libraries 提供对事件处理(Flink CEP)、图处理(Flink Gelly)和状态处理的支持;
  • flink-mesos 提供对 Flink on Mesos 支持;
  • flink-metrics 提供对监控的支持,包括 Graphite、InfluxDB、Prometheus、JMX、SLF4j 等;
  • flink-ml-parent 提供对机器学习的支持;
  • flink-optimizer Flink 优化器;
  • flink-python 提供对 Python 的支持;
  • flink-queryable-state 提供对 Queryable State 支持;
  • flink-quickstart 提供对 Java 和 Scala 工程模板的支持;
  • flink-runtime Flink 运行时;
  • flink-runtime-web Dashboard UI;
  • flink-scala 提供对 Scala 的支持;
  • flink-scala-shell 提供对 Scala Shell 的支持;
  • flink-shaded-curator 提供 Apache Curator 依赖的 shaded 包;
  • flink-state-backends 提供对 RocksDB 状态后端的支持;
  • flink-streaming-java DataStream API;
  • flink-streaming-scala DataStream API 的 Scala 版;
  • flink-table Table API 和 SQL;
  • flink-yarn 提供对 Flink on YARN 支持。

以上模块中,粗体为重点模块,将在之后 Flink 源码分析的博文中详细介绍。