问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

告别复杂脚本!Apache NiFi 数据流处理与安装全攻略

创作时间:
作者:
@小白创作中心

告别复杂脚本!Apache NiFi 数据流处理与安装全攻略

引用
CSDN
1.
https://blog.csdn.net/nacheng/article/details/145616503

Apache NiFi 是一个强大的开源数据流自动化工具,专为数据流管理和系统集成而设计。它能够高效地在不同系统之间处理、传输和转换数据,特别适用于需要跨平台、跨系统处理复杂数据流的场景。本文将详细介绍 NiFi 的主要功能和特点,并提供在 Windows 系统上的安装步骤。

1. 综述

Apache NiFi 是一个理想的数据同步工具,尤其适用于复杂系统中的数据处理。它具有以下主要特点:

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 下载地址

下载地址:Download - Apache NiFi

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

操作系统:win11。

依赖环境:jdk11以上。

下载后解压缩。

3.2 JDK配置

3.2.1 配置步骤

3.2.2 高级系统设置

3.2.3 环境变量

3.2.4 系统变量JAVA_HOME设置

3.2.4 编辑Path变量

3. NIFI启动

3.1 启动步骤

3.2 操作截图

3.2.1 bin目录

3.2.2 执行窗口打开

3.2.3 nifi启动

3.2.4 安装遇到的问题

运行后报错:

Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/nifi/bootstrap/BootstrapProcess has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
        at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:495)

这个错误提示表明你的Java版本不兼容,NiFi要求的Java版本与你当前的Java运行环境不同。

3.2.5 问题解决方案

检查 Java 版本

打开命令提示符,输入以下命令查看当前 Java 版本:

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 版本

重新运行:

java -version

确认输出为 11.x.x 或 17.x.x。

启动 NiFi

再次运行:

nifi.cmd start
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号