天天看點

【Apache NIFI 操作】Apache NiFi源碼目錄結構【Apache NIFI 操作】Apache NiFi源碼目錄結構

【Apache NIFI 操作】Apache NiFi源碼目錄結構

要分析 maven 工程的源碼,首要看的就是 pom 檔案,通過 pom 檔案,我們能夠得知這個工程的大概。

​ 可以發現,這些 pom 工程大部分是子工程,都是一層套一層的父子pom 工程。那麼我們首先找到最頂級的pom 工程,也就是 nifi:

【Apache NIFI 操作】Apache NiFi源碼目錄結構【Apache NIFI 操作】Apache NiFi源碼目錄結構

這麼一看,整個 NiFi 工程還是清晰了一些。

**nifi-api **: nifi 的應用程式接口,定義了整個工程所需要用到的接口、注解、抽象類和枚舉等基本的接口和資訊。

nifi-assembly: 負責 nifi 的成品裝配, 工程打包最後形成的可供部署的壓縮包就在這個工程裡的 target 目錄内。

nifi-bootstarp :負責 nifi 這個 jvm 應用程式的啟動相關事宜。

nifi-commons: nifi 諸多特性,比如data-provenance、expression-language、s2s 傳輸的實作就在這裡,同時也是 nifi 的工具類集合。

【Apache NIFI 操作】Apache NiFi源碼目錄結構【Apache NIFI 操作】Apache 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 内部元資訊和外部交換,主要用于叢集模式下。

【Apache NIFI 操作】Apache NiFi源碼目錄結構【Apache NIFI 操作】Apache 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 也提供了比較豐富的指令行指令。

【Apache NIFI 操作】Apache NiFi源碼目錄結構【Apache NIFI 操作】Apache NiFi源碼目錄結構

1)toolkit-assembly

編譯打包

2)toolkit-encrypt-config

加密

3)toolkit-s2s

資料包序列化與反序列化

4)toolkit-tls

指令行,TLS配置檔案等工具類

5)toolkit-zookeeper-migrator

從zookeeper導入導出資料

以上就是 NiFi 源碼的總體結構了。有了總體的概覽以後,我們需要研究哪一方面的源碼實作,就可以直接去相應的 module 裡面看了。