Apache NiFi Processor实战

1 前言

Apache NiFi是什么?NiFi官网给出如下解释:“一个易用、强大、可靠的数据处理与分发系统”。通俗的来说,即Apache NiFi 是一个易于使用、功能强大而且可靠的数据处理和分发系统,其为数据流设计,它支持高度可配置的指示图的数据路由、转换和系统中介逻辑。
为了对NiFi能够表述的更为清楚,下面通过NiFi的架构来做简要介绍,如下图所示。

[img]http://dl2.iteye.com/upload/attachment/0127/3921/5b8d4ab0-e8dc-3919-a096-0993d9f8a2e4.png[/img]

根据官网对各个组件的说明,做摘要翻译:
• WebServer:其目的在于提供基于HTTP的命令和控制API。
• Flow Controller:这是操作的核心,以Processor为处理单元,提供了用于运行的扩展线程,并管理扩展接收资源时的调度。
• Extensions:在其他文档中描述了各种类型的NiFi扩展,Extensions的关键在于扩展在JVM中操作和执行。
• FlowFile Repository:FlowFile库的作用是NiFi跟踪记录当前在流中处于活动状态的给定流文件的状态,其实现是可插拔的,默认的方法是位于指定磁盘分区上的一个持久的写前日志。
• Content Repository:Content库的作用是给定流文件的实际内容字节所在的位置,其实现也是可插拔的。默认的方法是一种相对简单的机制,即在文件系统中存储数据块。
• Provenance Repository:Provenance库是所有源数据存储的地方,支持可插拔。默认实现是使用一个或多个物理磁盘卷,在每个位置事件数据都是索引和可搜索的。

2 NiFi Processer介绍

上一节说了那么多,主要通过NiFi的架构图介绍了NiFi的基本概念,由概念可知Flow Controller是NiFi的核心,那么Flow Controller具体是什么?Flow Controller扮演者文件交流的处理器角色,维持着多个处理器的连接并管理各个Processer,Processer则是实际处理单元。那么,让我们通过NiFi的UI看下NiFi的Processor包含哪些?

[img]http://dl2.iteye.com/upload/attachment/0127/3923/22dd58ba-400c-3d72-b2cb-59a4adb24030.png[/img]


通过上图可知,Processor包含各种类型的组件,如amazon、attributes、hadoop等,可通过前缀进行轻易辨识,如Get、Fetch开头代表获取,如getFile、getFTP、FetchHDFS,execute代表执行,如ExecuteSQL、ExecuteProcess、ExecuteFlumeSink等均可较容易知其简单用途。

3 NiFi Processer实战

说了那么多,介绍了NiFi的架构和Processor,那么说好的实战呢?那么,本文就以笔者的一个实际需求为例,进行Processor的实战。需求如下:选取一款数据处理调度工具,对服务器脚本实现定制调度执行。其中服务器的脚本涉及到对环境变量、oracle数据库、Hadoop生态圈组件的调度。当对服务器脚本调度执行完成后返回脚本运行状态,并提供失败重运行接口。
为了实现需求,曾调度过各种调度工具,如Apache Oozie、Azkaban、Pentaho等,最终比较了各种利弊尝试选用Apache NiFi作为尝试,通过查阅NiFi Processor API,能更好的支持远程操作的Processor为ExecuteProcess。下面将对需求进行实战讲解。

3.1 Processor的添加与配置

1. 点击“Add Processor”,选择ExecuteProcess后点击Add按钮完成添加,如下图。

[img]http://dl2.iteye.com/upload/attachment/0127/3925/614a768f-3b24-32ee-a824-e023b0ba7817.png[/img]


2. 右击ExecuteProcess后选择Configure Processor,对Properties选项卡进行配置,其中每一个配置选项均提供了相关的说明,如下图。

[img]http://dl2.iteye.com/upload/attachment/0127/3927/f5c53b9a-e547-3e79-b2cb-7a74dc7f98aa.png[/img]


如上图所示,这里有必要对各选项进行相关说明。
• Command(执行命令): sh。
• Command Arguments(执行命令参数):-c;ssh user@ip sh js/job/job_hourly.sh `date
• Batch Duration(执行间隔时间):不设置。//我们需求是通过定时调度,而并非按间隔时间执行。
• Redirect Error Stream(重定位流):不设置。
• Argument Delimiter(执行命令参数分隔符):; //以;对参数进行分割。

3.2 Processor调度

NiFi支持三种调度策略,包括Time Driven(时间驱动)、CRON Driven(CRON驱动)和Event Driven(事件驱动,非可选),根据我们实际需求选择CRON Driven,个人理解CRON即是Crontab的应用,CRON的各参数含义分别代表:秒、分、时、日、月、周、年,需要配合*、?和L共同执行(*代表字段的值都有效;?代表对于指定的字段不指定值;L代表长整形)。如:“0 0 13 * * ?”代表想要在每天下午1点进行调度执行。因此根据我们的需求进行参数的调度配置。如下图所示。

[img]http://dl2.iteye.com/upload/attachment/0127/3929/a5b8db4f-e8c8-39a2-af56-f23330560638.png[/img]


3.3 运行状态监控

NiFi通过Rest API供开发者调度,这里我们用Processor API对运行状态进行监控(状态参数获取、Processor的启动与停止)。
1. 运行状态监控参数获取:
命令如下:curl ‘http://IP/nifi-api/processors/processorsID ‘得到如下结果,可通过json解析器解析并获取状态。

[img]http://dl2.iteye.com/upload/attachment/0127/3931/d16e73ce-78e3-3fca-a4ef-e3456fe9667d.png[/img]


2. Processor的启动与停止:
NiFi的Processor启动停止通过其Put方法实现,Put最有效的作用是改变其运行状态,NiFi的Process总共有三种状态,即Running、Stopped和Disabled。
那么我们将开始和停止两个命令Rest API的放在脚本中执行即可。
• 启动命令(使用Rest API的Put方法):
curl -i -X PUT -H ‘Content-Type:application/json’ -d ‘
{
“revision”: {
“clientId”: “586ec1d7-015d-1000-6459-28251212434e”,
“version”:17},
“component”: {
“id”: “39e0dafc-015d-1000-918d-bee89ae2226e”,
“state”: “RUNNING”
}
}’ http://IP/nifi-api/processors/processorsID
• 停止命令(使用Rest API的Put方法):
curl -i -X PUT -H ‘Content-Type:application/json’ -d ‘
{
“revision”: {
“clientId”: “586ec1d7-015d-1000-6459-28251212434e”,
“version”:17},
“component”: {
“id”: “39e0dafc-015d-1000-918d-bee89ae2226e”,
“state”: “STOPPED”
}
}’ http://IP/nifi-api/processors/processorsID

4 小结与后记

本文首先对Apache NiFi进行简介,后以笔者的实际需求为例,对NiFi核心组件Processor的实战说明。由于NiFi仍然属于Apache推出时间不长的一个顶级项目,虽功能十分强大,但可查阅资源仍然有限,本文更多的是一个抛砖的过程,其真正强大的功能还在数据处理上,欢迎感兴趣的各位进行互相探讨。

本文原创首发于Cobub官网博客(www.cobub.com),作者:潘慧
如有转载请注明作者和出处!
推荐一款开源私有化部署的移动应用数据统计分析系统Cobub Razor (https://github.com/cobub/razor)
Apache NiFi新手必看:从零开始的数据流设计入门教程(含实战案例) 本文为Apache NiFi新手提供从零开始的数据流设计入门指南。通过实战案例,详细讲解了如何利用这一强大的数据采集工具,以可视化拖拽方式构建自动化数据流,实现从文件监控、内容处理到数据入库的全流程,并涵盖核心概念、环境搭建及生产环境调优要点。 阅读详情

相关推荐

Apache Nifi 入门到精通(一)

开始--学习步骤: Apache Nifi 入门到精通(一)----概念、下载、编译、安装部署、测试与试用 Apache Nifi 入门到精通(二)---- 设计原理与源码解读 Apache Nifi 入门到精通(三)---- 自定义插件 第一步:了解Apche NiFi概念 简介 NiFi 最早是美国国家安全局(NSA)内部使用的工具,用来投递海量的传感器数据,后来NSA将其捐献给apache 基金会开源。Apache NiFi 是一个易于使用、功能强大而且可靠的数据拉取、数据处理..

loki的博客 3111

流批一体ETL工具NiFi开发实战

本入门课程旨在向学生介绍 Apache NiFi 数据流框架的基本概念和功能。通过实际操作和案例演示,学生将学习如何配置 NiFi 并构建可扩展的数据流管道。此外,本课程还将介绍 NiFi 的常见用例和最佳实践。在本课程结束时,学生将对 NiFi 的基础知识以及如何使用 NiFi 构建可扩展的数据流管道有足够的了解。此外,学生还将了解 NiFi 的常见用例和最佳实践。

Apache NiFi实战:构建非结构化数据流处理管道

本文章旨在帮助数据工程师、ETL开发者和数据架构师掌握Apache NiFi在非结构化数据流处理中的核心能力,覆盖从基础概念到实战落地的全流程。内容范围包括:NiFi核心组件解析、非结构化数据处理的典型场景、管道设计最佳实践、性能优化方法,以及与其他数据系统(如Elasticsearch、Kafka、Hadoop)的集成。核心概念:解析NiFi的核心组件(如FlowFile、Processor、Connection)及其协作机制;

操作系统内核探秘的博客 1027

NiFi学习笔记

FlowFile Repository的实现是可插拔的(多种选择,可配置,甚至可以自己实现),默认实现是使用Write-Ahead Log技术(WAL的核心思想是:在数据写入库之前,先写入到日志,再将日志记录变更到存储器中)写到指定磁盘目录。这些问题出现的相应的解决方案已经被广泛的研究和讨论,其中企业集成eip就是一个全面且易于使用的方案。在每个位置内的事件数据都是被索引并可搜索的。支持从多种数据源动态的拉取数据,并基于WEB图形界面,通过拖拽、连接、配置完成基于流程的编程,实现数据采集、处理等功能。

caijigskg的博客 1988

Megatron-LM深度解析:万亿参数大模型的3D并行训练之道

训练框架,采用创新的"层内模型并行"设计,通过将Transformer层的计算拆分到多个GPU上并行执行,显著提升训练效率。该系统支持3D并行策略(数据并行、张量并行、流水线并行)和序列并行等新技术,成功应用于训练5300亿参数的MT-NLG模型。相比DeepSpeed、TPU GSPMD等框架,Megatron-LM在NVIDIA GPU上展现出卓越性能,并与TensorRT等工具深度集成,形成从训练到部署的完整解决方案。该项目持续演进,已成为大模型训练的重要基准。

数据与算法架构提升之路专栏 2091

CA51F3系列(国产)+低功耗模式

CA51F351P6芯片是基于1T 8051内核的8位微控制器,通常情况下,运行速度比传统的8051芯片快10倍,性能更加优越。内置8K Flash程序存储器,可多次重复编程的特性给用户开发带来了极大的方便。不仅保留了传统8051芯片的基本特性,还集成了12Bit ADC、LCD/LED驱动、Touch Key、16Bit PWM、 UART、RTC、低电压检测(LVD)等功能模块。支持IDLE、STOP和低速运行三种省电模式以适应不同功耗要求的应用。

WANGJIHUIwang的博客 572

Apache NiFi 自定义Processor处理器编写

当我们在使用ApacheNiFi时,当已有的processor不支持我们现有需求时,需要我们自己编写自定义处理器并且发布,以至于更好的支持我们的需求; 下面我写一个将JSON数据转化为Excel并且输出到本地文件的自定义Processor Demo

让我们共同进步 1902

从机械到数字:EC11旋转编码器与ESP32的PWM控制艺术

本文详细解析了EC11旋转编码器与ESP32的PWM控制技术,探讨了如何将机械旋转动作转换为精确的数字信号控制。通过硬件连接、信号处理和软件优化等实践技巧,开发者可以构建高效的人机交互系统,适用于智能照明、电机控制等多种应用场景。

android的专栏 786

深度探索Apache NiFi:关键技术学习路径与实战指南

Apache NiFi不仅是一款易用的数据集成工具,更是现代数据管道建设的强大基石。通过深入学习和实践上述关键技术,开发者能够有效应对复杂的数据集成挑战,构建出既稳定又高效的端到端数据处理解决方案。不断探索NiFi的应用场景与前沿发展,将助力您在数据集成领域不断进步。

聚焦于深度解析最新的编程语言特性、框架升级、架构设计、开发工具和最佳实践,涵盖Web前端(如Vue3, React, Angular等)、后端开发(如Node.js, Java, Python等)、移动端开发(iOS, Android原生及跨平台开发) 3万+

react +ant desiagn pro实现按钮操作权限控制

在ant desiagn pro中提供了一个access用于对权限进行控制,需引入useAccess和Access

Sylvasylva的博客 2211

vmware虚拟机网络连接问题

主机:ubuntu14.04 Vitual Network Editor

入门虽易,精通不易,且学且珍惜! 1354

Apache NiFi数据流转工具:架构解析与数据库集成实战

数据流转是现代数据处理中的基础环节,涉及数据的采集、转换和加载。Apache NiFi作为开源的流式数据处理工具,通过可视化界面和模块化处理器简化了数据流转过程。其核心架构基于FlowFile和Processor模型,支持背压机制确保系统稳定性。在数据库集成方面,NiFi提供了丰富的处理器如ExecuteSQL和PutSQL,配合连接池服务可实现高效的数据同步。通过性能调优和集群部署,NiFi能够处理大规模数据流转需求,典型应用场景包括金融数据迁移和物联网数据处理。本文结合PostgreSQL实战案例,展示

weixin_34060299的博客 390

【unity】【WebRTC】从0开始创建一个Unity远程媒体流app-构建可同步场景

本文介绍了如何利用Unity和WebRTC技术实现远程画面传输。通过配置Render Streaming组件、设置信令管理器和视频流发送器,构建了一个可同步的Unity场景。文中详细说明了从场景搭建到浏览器端测试的完整流程,并提供了常见问题排查方法。该方案适用于远程调试、云游戏、VR共享等场景,具有低延迟、高兼容性等特点。文章还包含项目源码下载链接,方便读者实践操作。最终实现了Unity端到浏览器端的实时画面传输,为后续实现双向互动奠定了基础。

每日出拳老爷子的博客 1843

折腾了两周ETL工具,说点实在的

踩的坑不少,收获也颇多。但实际项目中,数据源的多样性(SQL、NoSQL、API、文件)、数据量的波动、增量更新的复杂性,让工具选择变得困难。商业工具如Fivetran、Stitch虽然好用但贵,开源工具如NiFi、Airbyte配置复杂,而手写脚本又容易变成“面条代码”。## 实战二:用Airbyte做批量数据同步Airbyte是一个开源的数据集成平台,专为ELT(提取-加载-转换)设计。我最终选择Airbyte + 自定义脚本的组合,因为Airbyte提供UI和连接器,自定义脚本处理边缘情况。

cz2T48M87的博客 204

微信小程序|基于小程序+云开发制作一个菜谱小程序

今天吃什么?这是一个让强迫症左右为难的问题,跟随此文基于小程序+云开发制作一个菜谱小程序,根据现有食材一键生成菜谱,省心又省力。

商务合作 / 项目定制 / 学习交流。个人vx:lovely_wml 1万+

STM32F103/F407/H743不同GPIO速度配置(HAL库)对应的最高速度

详细介绍了STM32F103/F407/H743不同GPIO速度配置(HAL库)对应的最高速度。

kevin1499的博客 5592

Apache Nifi 入门到精通(三)自定义processor

目标:实现从restful接口读取到nifi 第一步:创建processor项目结构 创建maven项目 项目名nifi-rest-bundle 完成创建项目: 修改 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-...

loki的博客 1792

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【Apache NIFI 操作】NiFi修改Processor后编译、打包、运行和调试

NiFi修改Processor后编译、打包、运行和调试 以ExecuteSQL processor为例。 修改processor 源码路径: nifi\nifi-nar-bundles\nifi-standard-bundle\nifi-standard-processors\src\main\java\org\apache\nifi\processors\standard\AbstractExecuteSQL.java 按照需求进行修改即可。 编译+打包 点击maven项目中的nifi-stanard-

南方有乔木的博客 1427

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Apache NiFi在金融行业的实战应用案例

这个系统需要处理来自多个数据源(如数据库、API、文件)的交易数据,并进行实时清洗和传输。Apache NiFi作为核心组件,负责数据流的编排和管理。系统还集成了DeepSeek模型,用于实时风险评估和异常交易检测。

SunstoneLion34的博客 324

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Apache NiFi自定义Processor

介绍Apache NiFi自定义开发Processor详细步骤

zdsx1104的专栏 2417

NIFI 自定义 processor 实现

NIFI 自定义 processor 实现

修行修心 5081

Nifi初探 - 如何测试Nifi Processor

之前的博客简单讲了一下如何去定义一个简单的Json处理Processor,这一次是在无数次测试中总算厌烦了把打包好的Nar包上传到lib中,然后重启服务器,然后再测试功能,测试的时候还很难看到日志... 同样搬运自 - > nifi.rock对自定义开发的Processor进行Unit Test开始Apache Nifi框架的单元测试是基于Junit的test runners的,在他们的代码中有一些

Sha0w的博客 4392
上一篇: 分布式协调服务zookeeper知多少
下一篇: python使用深度神经网络实现识别暹罗与英短
return_values
博客等级 码龄10年 0粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值