1 综述
当在复杂系统中需要进行数据同步时,Apache NiFi 是一个理想的选择。作为一款强大的开源数据流自动化工具,NiFi 专为数据流管理和系统集成而设计,能够高效地在不同系统之间处理、传输和转换数据。正因如此,Apache NiFi 成为了企业数据集成和同步的首选工具,尤其适用于需要跨平台、跨系统处理复杂数据流的场景。
1.0 示意图

1.1 数据流自动化和可视化
NiFi 具有一个图形化的界面,可以帮助你直观地创建、设计和管理数据流。这使得对数据流的设计、监控和优化变得非常简便,不需要编写复杂的代码。
- 数据流管理: 用户可以通过拖拽和连接组件来设计数据流。
- 实时监控: NiFi 提供了详细的监控和报告功能,可以帮助你跟踪数据流的状态。
1.2灵活的数据流控制
NiFi 支持不同类型的数据流控制,使得你可以按需调整数据流的进程和处理逻辑:
- 优先级控制: 支持按优先级处理不同的数据流。
- 数据路由: 可以基于内容或其他条件路由数据,帮助你根据数据的属性或类型做出不同的处理。
- 批处理与实时处理: 适合流式处理和批量处理场景。
1.3多种协议和数据源的支持
NiFi 支持各种数据协议和数据源的集成,包括但不限于:
- 数据库: 支持 SQL 数据库、NoSQL 数据库的连接。
- 消息队列: 支持 Kafka、JMS、AMQP 等消息中间件。
- 文件系统: 支持读取和写入本地文件、HDFS、S3 等文件存储系统。
- REST API: 支持与 RESTful API 集成,能够进行 HTTP 请求和响应处理。
1.4数据转换和清洗
NiFi 提供了多种数据处理和转换工具,例如:
- 数据转换: 支持 JSON、XML、CSV、Avro、Parquet 等格式的转换。
- 内容过滤: 可以对数据进行内容过滤、修改、清洗。
- 格式化与解析: 可以解析复杂的结构化和非结构化数据,转换为所需的格式。
1.5灵活的扩展性
NiFi 拥有一个庞大的扩展生态系统,可以通过自定义处理器、模板、控制器等扩展其功能。你可以根据需要开发自定义的组件来满足特定需求。
1.6 安全性和权限管理
NiFi 提供了强大的安全性和权限控制,包括:
- 身份验证: 支持基于证书、LDAP、Kerberos 等方式进行身份验证。
- 细粒度授权: 可以对不同的用户和角色进行精细的权限管理,确保数据的安全访问。
1.7高可用性和集群支持
NiFi 支持多节点集群部署,可以提供更高的可用性和处理能力。在集群中,数据流可以跨多个节点进行分布式处理。
- 负载均衡: 数据流可以在多个节点之间进行负载均衡,确保高效处理。
- 自动故障恢复: 支持自动故障转移和恢复,确保数据流的持续性。
1.8易于集成
NiFi 可以轻松与其他大数据工具(如 Apache Hadoop、Apache Spark)集成,也能够与现代云平台(如 AWS、Azure、Google Cloud)进行连接和操作。
1.9数据流的审计和跟踪
NiFi 内置的审计日志功能可以帮助你记录和追踪所有数据流活动,包括数据处理、传输和错误。
- 审计追踪: 记录每个数据流的详细操作日志。
- 实时追踪: 通过 UI 查看数据流的当前状态,帮助进行实时监控和排查。
-
2 核心概念

-
· Processor(处理器):执行具体的数据处理任务,如读取、转换、写入数据等。
· FlowFile(数据流文件):携带数据和元数据的基本单元。
· Connection(连接器):将不同的 Processor 连接在一起,控制数据流向和队列。
· Controller Service(控制服务):提供共享资源配置(如数据库连接池)。
· Data Provenance(数据溯源):记录和查看数据处理历史。
-
3 下载安装

-
3.1 下载地址
可以根据用户自己的需求选择对应的版本下载,支持linux、windows。今天我们主要针对windows。
-

-
操作系统:win11。
依赖环境:jdk11以上。
下载后解压缩。
-

-
jdk如下截图
-

-
3.2 jdk配置
3.2.1配置步骤

-
3.2.2高级系统设置

-
3.2.3 环境变量

-
3.2.4系统变量JAVA_HOME设置


-
3.2.4编辑Path变量


-
3NIFI启动
-
3.1启动步骤

-
3.2操作截图
3.2.1bin目录

-
3.2.2 执行窗口打开



-
3.2.3 nifi启动

-
3.2.4安装遇到的问题
-
运行后报错Error:A JNI error has occurred please check your installation and try agair Exception in thread19Va.Java Runtimersion 65.0)this version of the Java Runtime only recognizes class file versions up(class filelang.ClassLoader.defineClassl(Native Method)atjava.defineclass(classLoader,iaya:756)java.an g0acs0acetlassLoader.defineClass(SecureClassLoader. java:142)ava.security.secureClass(URLClassLoader.iaya:468)ava.netat$100(URLClassLoaderjava:74)java. net.RLClassLoader,iava:369)lava.nelava.net.URlc.JRLClassLoader.iava:363)eged(NativeMethod)atjava.securiatassLoader. java:362)Java.net.URatjava:418)java.lang.ClassLoaoaderatoadClass(Launcher.java:355)sun. misc..atjava.lang.Cljava:351)oaderatsun. launcher.eckAndLoadMain(LauncherHelper.java:495) lang, UinsupportedclassversionError: org/apache/nifi/bootstrap/BootstrapProcess has been compiled by a more recent version of t to 52、0.
这个错误提示表明你的 Java 版本不兼容,NiFi 要求的 Java 版本与你当前的 Java 运行环境不同。
-
3.2.5问题解决方案
检查 Java 版本
打开命令提示符,输入以下命令查看当前 Java 版本:
cmd
java -version
如果显示类似 java version "1.8.x",说明你的版本太低。NiFi 需要 JDK 11 或 JDK 17。
下载安装 Java
前往 Oracle JDK 下载页面 或使用开源版本 Azul Zulu 下载并安装 JDK 11 或 JDK 17。
配置环境变量
将 JAVA_HOME 设置为新安装的 JDK 路径,例如:C:\Program Files\Java\jdk-11
添加 %JAVA_HOME%\bin 到 PATH 变量中。
验证 Java 版本 重新运行:
-
cmd
复制指令
java -version
确认输出为 11.x.x 或 17.x.x。
启动 NiFi 再次运行:
cmd
复制指令
nifi.cmd start
4268





