書名: Flink技術內幕:架構設計與實現原理作者名: 羅江宇 趙士杰等本章字數: 974字更新時間: 2021-12-29 15:54:15
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等項目代碼管理的工具。
推薦閱讀
- 程序員面試筆試寶典(第3版)
- 程序員修煉之道:程序設計入門30講
- ExtGWT Rich Internet Application Cookbook
- Effective C#:改善C#代碼的50個有效方法(原書第3版)
- INSTANT Django 1.5 Application Development Starter
- C++對象模型詳解
- OpenStack Orchestration
- Haskell Data Analysis Cookbook
- IoT Projects with Bluetooth Low Energy
- Web編程基礎:HTML5、CSS3、JavaScript(第2版)
- Python網絡爬蟲實例教程(視頻講解版)
- Python物理建模初學者指南(第2版)
- Flutter從0基礎到App上線
- Enterprise Application Architecture with .NET Core
- PHP從入門到精通(第7版)