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:Nifi脚本处理器与自定义开发.docx
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 实现数据流的知识点: 一、数据流的重要性 * 数据...
数据集成工具:Apache Nifi:使用Nifi进行实时数据处理.docx
数据集成工具:Apache Nifi:数据路由与分发策略.docx
1. **定义Processor类**:首先,你需要定义一个继承自`org.apache.nifi.processors的标准类`,如`AbstractProcessor`。这个类将包含处理器的行为和配置属性。 2. **定义Properties**:你需要声明处理器所需的输入...
该模版使用了nifi 15个处理器,包含10种类型, 分别有mqtt的发布,消费,kafka的发布消费 如何处理json格式, 读取json格式的 for循环读取数组的 自定义redis的等
史上最全大数据技术全套教程,包括: 分布式存储系统 大数据基础 大数据处理框架 大数据管理与监控 实时计算 数据仓库 数据分析工具 数据湖 数据集成工具 消息队列 等流行技术的系列教程
数据集成工具:Apache Nifi:Nifi状态管理与数据持久化.docx
数据集成工具:Apache Nifi:Nifi数据流文件与属性理解.docx
"在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:Nifi在物联网数据集成中的应用.docx
### Apache NiFi 使用指南 #### 一、Apache NiFi 概述 Apache NiFi 是一款易于使用、功能强大且可靠的数据获取、处理和分发系统。该系统旨在自动化管理跨系统的数据流,支持高度可配置的数据路由、转换及中介逻辑...
Apache Nifi是一个强大的数据处理和分发系统,主要用于自动化数据流的管理,支持从各种数据源动态拉取数据。这个工具最初由美国国家安全局(NSA)开发,后来成为Apache基金会的顶级项目,以Java为基础并使用Maven...