1 前言
Apache NiFi是什么?NiFi官网给出如下解释:“一个易用、强大、可靠的数据处理与分发系统”。通俗的来说,即Apache NiFi 是一个易于使用、功能强大而且可靠的数据处理和分发系统,其为数据流设计,它支持高度可配置的指示图的数据路由、转换和系统中介逻辑。
为了对NiFi能够表述的更为清楚,下面通过NiFi的架构来做简要介绍,如下图所示。
根据官网对各个组件的说明,做摘要翻译:
• 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包含哪些?
通过上图可知,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按钮完成添加,如下图。
2. 右击ExecuteProcess后选择Configure Processor,对Properties选项卡进行配置,其中每一个配置选项均提供了相关的说明,如下图。
如上图所示,这里有必要对各选项进行相关说明。
• 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点进行调度执行。因此根据我们的需求进行参数的调度配置。如下图所示。
3.3 运行状态监控
NiFi通过Rest API供开发者调度,这里我们用Processor API对运行状态进行监控(状态参数获取、Processor的启动与停止)。
1. 运行状态监控参数获取:
命令如下:curl ‘http://IP/nifi-api/processors/processorsID ‘得到如下结果,可通过json解析器解析并获取状态。
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)

- 大小: 29.7 KB

- 大小: 77.2 KB

- 大小: 73.5 KB

- 大小: 22.6 KB

- 大小: 21.8 KB

- 大小: 47.2 KB
分享到:
相关推荐
Apache NiFi 概念介绍、源码解析、开发指南(中文) Apache NiFi 是一个开源的数据集成工具,由 Apache 软件基金会维护。NiFi 的核心设计理念是 Flow-Based Programming,它可以将数据从各种 sources 中提取,转换...
### ETL解决方案大PK:Apache NiFi、DataX、Kettle哪个更适合你? #### 引言 随着大数据时代的到来,企业对于数据的处理需求日益增加。为了更好地管理和利用这些数据,ETL(Extract-Transform-Load)作为一种常用...
Apache Nifi-RecordProcessing.zip Apache Nifi-RecordProcessing.zip Apache Nifi-RecordProcessing.zip Apache Nifi-RecordProcessing.zip Apache Nifi-RecordProcessing.zip
### Apache NiFi 使用指南 #### 一、Apache NiFi 概述 Apache NiFi 是一款易于使用、功能强大且可靠的数据获取、数据处理和分发系统。它主要用于自动化管理系统间的数据流,支持高度可配置的指示图数据路由、转换...
Apache Nifi 概念介绍、源码解析、开发指南(中文).zip Apache Nifi 概念介绍、源码解析、开发指南(中文).zip Apache Nifi 概念介绍、源码解析、开发指南(中文).zip Apache Nifi 概念介绍、源码解析、开发...
藏经阁-Dataflow with Apache NiFi.pdf 本资源摘要信息是关于使用 Apache NiFi 实现数据流管理的详细指南。 Apache NiFi 是一个基于开源的数据集成工具,可以用来管理和处理大规模数据流。该指南将从数据流的概念和...
"藏经阁-The Avant-garde of Apache NiFi" Apache NiFi 是一个基于Java的数据集成工具,旨在帮助用户简化数据集成、处理和分析过程。 Apache NiFi 的主要特点包括: 1. 数据流处理:Apache NiFi 允许用户创建、...
"阿里云-从零开始使用 Apache Nifi 实现数据流" Apache Nifi 是一个开源的数据集成工具,可以实现数据的实时采集、处理和传输。以下是从零开始使用 Apache Nifi 实现数据流的知识点: 一、数据流的重要性 * 数据...
1. **定义Processor类**:首先,你需要定义一个继承自`org.apache.nifi.processors的标准类`,如`AbstractProcessor`。这个类将包含处理器的行为和配置属性。 2. **定义Properties**:你需要声明处理器所需的输入...
史上最全大数据技术全套教程,包括: 分布式存储系统 大数据基础 大数据处理框架 大数据管理与监控 实时计算 数据仓库 数据分析工具 数据湖 数据集成工具 消息队列 等流行技术的系列教程
该模版使用了nifi 15个处理器,包含10种类型, 分别有mqtt的发布,消费,kafka的发布消费 如何处理json格式, 读取json格式的 for循环读取数组的 自定义redis的等
"在Hadhoop summit 2016上,Koji Kawamura – Software Engineer Arti 和 Wadhwani – Technical Support Engineer分享了题为《Apache NiFi 1.0 in Nutshell》,就介绍什么是NiFi, NiFi 1.0增强功能,NiFi未来发展...
### Apache NiFi 使用指南 #### 一、Apache NiFi 概述 Apache NiFi 是一款易于使用、功能强大且可靠的数据获取、处理和分发系统。该系统旨在自动化管理跨系统的数据流,支持高度可配置的数据路由、转换及中介逻辑...
Apache Nifi-AttributesToJSON组件的使用样例模版
Apache Nifi是一个强大的数据处理和分发系统,主要用于自动化数据流的管理,支持从各种数据源动态拉取数据。这个工具最初由美国国家安全局(NSA)开发,后来成为Apache基金会的顶级项目,以Java为基础并使用Maven...
Apache NiFi 1.0 在 Nutshell 中的知识点总结 Apache NiFi 是一个数据流管理工具,它可以帮助用户管理和分析数据流。NiFi 的历史可以追溯到 2006 年,当时它还是美国国家安全局(NSA)的一个项目。2014 年,NiFi ...
nifi2.0安装包,可用于部署单节点或集群模式Nifi服务,当前版本为Apache Nifi社区在11月初发布的Nifi2.0第一个正式版本。
Apache NiFi supports powerful and scalable directed graphs of data routing, transformation, and system mediation logic. Some of the high-level capabilities and objectives of Apache NiFi include:
Apache NiFi (nifi-1.19.1-bin.zip、nifi-toolkit-1.19.1-bin.zip)是一个易于使用、功能强大而且可靠的数据拉取、数据处理和分发系统。文件使用WinRAR分割两个压缩包,必须一起下载使用: Apache NiFi (nifi-...
nifi平台自定义processor的简单案例,代码实现,readme中有详细代码解读。