Apache Nifi 组件开发

Apache NiFi是由美国过国家安全局(NSA)贡献给Apache基金会的开源项目,其设计目标是自动化系统间的数据流。基于其工作流式的编程理念,NiFi非常易于使用,强大,可靠及高可配置。两个最重要的特性是其强大的用户界面及良好的数据回溯工具(官网吹的)

nifi 使用起来还比较方便,基于web 的控制界面能够比较好的管理和控制数据流转,数据处理的业务流程也比较明确,下面说一下 如何定制开发一个基于我们自身业务的组件

1.工程结构

nifi对工程结构做了规范,我们只要按照他的格式创创建工程包 .nar,放到../lib/目录下,启动服务就能在页面组件中心找到并使用我们控件

1)简单的方式是在源码中打开一个nar 模块 ,根据我们的业务修改名称然后。。。(该怎么玩怎么玩,省去建立工程模块的麻烦)

2)就是要自己新建,那么总的来说 三步:

a.新建maven 模块  xxxx-xxx--bundle

pom.xml
说明依赖关系:

b. 在a模块下再新建  xxx-xxx-nar

pom.xml 说明依赖关系

c.在a模块下新建  xxx-xxx-processors

pom.xml 说明依赖关系

具体操作看看 源码中的结构就明白了,这都不是重点 

2.开发属于自己的功能组件

组件一般来说分为service 和processor  咱们先来说以下新建一个processor

总的来说分两步  1.组件功能开发,2组件声明(向外暴露)

组件功能开发,在xxx--xxx-processors 新建工程类xxxx.java

功能组件总的来说 也分为三个部分

a. 外界参数声明   2,输出关系声明   3,数据流触发操作

a.外界参数说明

如果我们的组件需要和外界做交互,需要外部传入参数那么就需要做参数声明

通过这种方式声明一个参数,nifi 自身提供了比较多的验证器 可以对参数做约束验证 大家自己看着玩

参数定义之后需要向外部暴露,需要重写getSupportedPropertyDescriptors 方法

nifi 还支持动态增加属性,方式差不多,大家自己看着玩。。。

2.定义转换关系

nifi 通过转换关系对数据做流转操作,所以我们组件中必须定义至少一个转换关系

同样关系定义完成,需要对外界暴露,就需要重写getRelationships

好了  到此 准备工作基本完成 ,下来就进入主体部分,操作文件流

3.文件流操作

nifi 是以FlwoFile 为处理单位的,数据可以抽象理解为一个个的flowfile 这也就是数据流了

nifi 数据处理是以重写onTriger 开始的

对于flowfile 的操作大致分为三中

1.读取 从数据流中读取数据内容

2.写  写入数据到flowfile中

3.读完写

这里完成逻辑处理之后 ,nifi 必须要将flowfile提交转换

好了 这里就完成了组件功能开发,下面对我们新开发的组件做一下声明,使其对外暴露

看好了 我只来一遍

好了 好了 都完成了 打包 放到nifi 安装目录下的lib目录下 重启服务就好了

你看 揍死这么神奇

好了好了 大家自由玩耍吧 ,我也是才接触这个 又不正确或不到位的地方多包涵,一起交流 相互学习 共同进步,第一次写blog 话有些多了

好了好了 end

时间: 2024-11-07 14:01:23

Apache Nifi 组件开发的相关文章

Apache NiFi系统管理员指南 [ 一 ]

如何安装和启动NiFi 端口配置 NiFi 嵌入式Zookeeper 配置最佳实践 安全配置 TLS生成工具包 用户认证 轻量级目录访问协议(LDAP) Kerberos的 OpenId Connect Apache Knox 多租户授权 授权人配置 Authorizers.xml安装程序 Apache NiFi团队[email protected] 系统要求 Apache NiFi可以运行在像笔记本电脑这样简单的东西上,但它也可以集群在许多企业级服务器上.因此,所需的硬件和内存量将取决于所涉及

Apache NiFi 概述

Apache NiFi概述 Apache NiFi团队[email protected] 什么是Apache NiFi? 简单地说,NiFi是为了自动化系统之间的数据流而构建的.虽然术语“数据流”在各种环境中使用,但我们在此处使用它来表示系统之间自动化和管理的信息流.这个问题空间一直存在,因为企业有多个系统,其中一些系统创建数据,一些系统消耗数据.已经讨论并广泛阐述了出现的问题和解决方案模式.企业集成模式 [eip]中提供了一个全面且易于使用的表单. 数据流的一些高级挑战包括: 系统失败 网络故

Apache NiFi 入门指南

本指南使用于谁? 本指南适用于从未使用过,在NiFi中有限度接触或仅完成特定任务的用户.本指南不是详尽的说明手册或参考指南.“ 用户指南”提供了大量信息,旨在提供更加详尽的资源,并且作为参考指南非常有用.相比之下,本指南旨在为用户提供所需的信息,以便了解如何使用NiFi,以便快速轻松地构建强大而灵活的数据流. 一些因为本指南中的某些信息仅适用于初次使用的用户,而其他信息可能适用于那些使用过NiFi的人,本指南分为几个不同的部分,其中一些可能对某些部分没用读者.随意跳转到最适合您的部分. 本指南确

Apache NiFi深度扩展

Apache NiFi深度扩展 介绍 该高级文档旨在深入了解NiFi的实施和设计决策.它假设读者已经阅读了足够的其他文档来了解NiFi的基础知识. FlowFiles是NiFi的核心,也是基于流程的设计.FlowFile是一种数据记录,由指向其内容(有效负载)的指针和支持内容的属性组成,该指针与一个或多个起源事件相关联.属性是用作FlowFile元数据的键/值对,例如FlowFile文件名.内容是文件的实际数据或有效负载.原产地是FlowFile发生的事情的记录.这些部分中的每一个都有自己的存储

Apache NiFi MiNiFI C++ 0.0.1 发布

Apache NiFi MiNiFI C++ 0.0.1 发布了,Apache NiFi 是一个易于使用.功能强大而且可靠的数据处理和分发系统(app开发ty300.com).Apache NiFi 是为数据流设计(基础教程qkxue.net).它支持高度可配置的指示图的数据路由.转换和系统中介逻辑. 一些提升: Initial framework implemented in C/C++Declarative configuration of processing flows through

Apache NiFi Processor实战

1 前言 Apache NiFi是什么?NiFi官网给出如下解释:"一个易用.强大.可靠的数据处理与分发系统".通俗的来说,即Apache NiFi 是一个易于使用.功能强大而且可靠的数据处理和分发系统,其为数据流设计,它支持高度可配置的指示图的数据路由.转换和系统中介逻辑. 为了对NiFi能够表述的更为清楚,下面通过NiFi的架构来做简要介绍,如下图所示. 根据官网对各个组件的说明,做摘要翻译: ? WebServer:其目的在于提供基于HTTP的命令和控制API. ? Flow C

java 组件开发中的日志记录问题

今天帮别人写封装几个url 请求,打成jar 包,可以以java接口的方式提供给外部访问. 遇到两个问题: 1. 是否把依赖的jar包也 打入 我要生成的jar包中,如果你不打入,别人直接调用接口会报错.如果你打入可能会和使用该jar包的项目发生冲突,因为别人可能已经引入了相关jar包. 自己可以根据要求来定: 如果不打就需要把jar和pom文件都提供给需求提出者. 如果需要可以使用maven 插件 maven-assembly-plugin. <plugin> <groupId>

【NIFI】 Apache NiFI 使用技巧

本章介绍NIFI组件的使用. 主要有:Nginx反向代理NIFI,配置SSLContextService Nginx反向代理NIFI 使用nginx反向代理NIFI配置如下 1 upstream nifi_server { 2 ip_hash; 3 server 127.0.0.1:18002; 4 } 5 6 server { 7 listen 80; 8 server_name nifi.example.com; 9 charset utf-8; 10 11 location / { 12

js组件开发-移动端地区选择控件mobile-select-area

移动端地区选择控件mobile-select-area 由于之前的[js开源组件开发]js手机联动选择地区仿ios 开源git 很受欢迎,于是我又对其进行了一些优化,包括可选的范围变大了,添加了默认空首地址的功能,也添加了更多api参数,首先我们先来看下这次的效果图. 它的github地址请点击https://github.com/tianxiangbing/mobile-select-area 它的demo演示请点击 http://www.lovewebgames.com/jsmodule/m