天天看点

【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 里面看了。