【Apache NIFI 操作】Apache NiFi源碼目錄結構
要分析 maven 工程的源碼,首要看的就是 pom 檔案,通過 pom 檔案,我們能夠得知這個工程的大概。
可以發現,這些 pom 工程大部分是子工程,都是一層套一層的父子pom 工程。那麼我們首先找到最頂級的pom 工程,也就是 nifi:

這麼一看,整個 NiFi 工程還是清晰了一些。
**nifi-api **: nifi 的應用程式接口,定義了整個工程所需要用到的接口、注解、抽象類和枚舉等基本的接口和資訊。
nifi-assembly: 負責 nifi 的成品裝配, 工程打包最後形成的可供部署的壓縮包就在這個工程裡的 target 目錄内。
nifi-bootstarp :負責 nifi 這個 jvm 應用程式的啟動相關事宜。
nifi-commons: nifi 諸多特性,比如data-provenance、expression-language、s2s 傳輸的實作就在這裡,同時也是 nifi 的工具類集合。
1)data-provenance-utils
資料源:字段屬性資訊查詢
2)expression-language
表達式定義、解析
3)flowfile-packager
檔案流打包格式
4)query-language
查詢語言定義
5)json-utils
6)logging-util
日志工具,格式,繼承自Logger
7)properties
NiFi的常量定義與字元串處理常量函數
8)record
9)record-path
10)record-read-writer
11)schema-utils
字段類型與記錄類型定義
12)security-utils
安全方面,證書、密鑰、SSL等
13)site-to-site-client
NiFi執行個體之間傳遞資料的協定
14)socket-utils
socket隊列與消費者實作
15)utils
異常、檔案流、并發等用到的工具類
16)web-utils
Web界面用到的工具函數
17)write-ahead-log
序列化與反序列化,寫前日志
nifi-docker: nifi 的 docker 應用相關。
nifi-docs: nifi 的文檔 實作相關。
nifi-external: nifi 内部元資訊和外部交換,主要用于叢集模式下。
1)example-bundle
bundle樣例,自定義資料處理器
2)spark-receiver
從NiFi拉取資料包,作為spark輸入
3)storm-spout
NiFi可作為Storm的spout,為Storm輸入資料,也可将Storm的資料送入NiFi Bolt處理
**nifi-framework-api **:這就是nifi 核心架構層的api,注意這裡隻是各種接口資訊定義,不是實作。
nifi-maven-archetypes: 這裡隻是為了生成兩個 maven archetype。一個是 nifi 自定義處理器的腳手架,一個是 nifi 自定義服務的腳手架。這些腳手架在 maven 的中央倉庫都有提供。(自定義processor與Service應遵循的maven項目結構)
nifi-mock: 用于 nifi 的 mock 測試。
nifi-nar-bundles: 之前一直說的 nifi java 工具箱就是這裡了。整個 nifi 裡面大部分的 maven 工程都是這個工程的子工程。在這個工程裡面,一個 bundle 就是一個工具。
nifi-toolkit:這裡面是 nifi 的指令行工具的實作。nifi 也提供了比較豐富的指令行指令。
1)toolkit-assembly
編譯打包
2)toolkit-encrypt-config
加密
3)toolkit-s2s
資料包序列化與反序列化
4)toolkit-tls
指令行,TLS配置檔案等工具類
5)toolkit-zookeeper-migrator
從zookeeper導入導出資料
以上就是 NiFi 源碼的總體結構了。有了總體的概覽以後,我們需要研究哪一方面的源碼實作,就可以直接去相應的 module 裡面看了。