Apache NiFi是由美国过国家安全局(NSA)贡献给Apache基金会的开源项目。其设计目标是自己主动化系统间的数据流。基于其工作流式的编程理念。NiFi很易于使用,强大。可靠及高可配置。

两个最重要的特性是其强大的用户界面及良好的数据回溯工具(官网吹的)

nifi 使用起来还比較方便。基于web 的控制界面可以比較好的管理和控制数据流转。数据处理的业务流程也比較明白,以下说一下 怎样定制开发一个基于我们自身业务的组件

1.project结构

nifi对project结构做了规范。我们仅仅要依照他的格式创创建project包 .nar,放到../lib/文件夹下,启动服务就能在页面组件中心找到并使用我们控件

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

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 新建project类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 话有些多了

Apache Nifi 开发的更多相关文章

  1. Apache NiFi 开发 安装说明

    系统环境: vmware安装的centos6.7虚拟机 jdk1.8版本 maven库3.3.9版本(在使用源码编译启动的时候需要修改配置文件与当前使用的maven版本匹配,最低使用版本好像是3.1. ...

  2. Apache NiFi 开发 处理器使用说明

    NIFI的使用: 注意:FlowFile由[属性]和[内容]组成,在解析的过程中这个概念非常重要,因为有些组件操作的是属性,有些组件操作的是内容,在配置组件时Destination配置项的选择很重要, ...

  3. 初识Apache NiFi

    一. NiFi介绍 Apache NiFi支持功能强大且可扩展的数据路由,转换和系统中介逻辑的有向图. Apache NiFi的一些高级功能和目标包括: 基于Web的用户界面 设计,控制,反馈和监控之 ...

  4. 深入Apache NiFi 之源码学习

    前言 要问 Hortonworks 这家公司最有产品力的产品是什么,我觉得是 Apache NiFi.去年Cloudera 和 Hortonworks 合并之后,以 Cloudera 为主,两家公司进 ...

  5. Apache nifi 第一篇(概述)

    1.什么是Apache NiFi? 简单地说,NiFi是为了自动化系统之间的数据流.虽然数据流这种形式很容易理解,但我们在此使用它来表示系统之间的自动化和不同系统之间数据的流转.企业拥有多个系统,其中 ...

  6. Apache Mina开发手冊之四

    Apache Mina开发手冊之四 作者:chszs,转载需注明. 博客主页:http://blog.csdn.net/chszs 一.Mina开发的主要步骤 1.创建一个实现了IoService接口 ...

  7. 【NIFI】 Apache NiFI 使用技巧

    本章介绍NIFI组件的使用. 主要有:Nginx反向代理NIFI,配置SSLContextService Nginx反向代理NIFI 使用nginx反向代理NIFI配置如下 upstream nifi ...

  8. 【NIFI】 Apache NiFI 授权配置

    当NIFI未配置需要单向SSL(例如LDAP,OpenId Connect等)的替代认证机制时,NiFi的Web服务器将要求访问用户界面的用户使用基于证书的客户端身份验证.启用备用身份验证机制会将We ...

  9. 【NIFI】 Apache NiFI 集群搭建

    NiFI 集群介绍 NiFi集群架构 NiFi采用Zero-Master Clustering范例.集群中的每个节点对数据执行相同的任务,但每个节点都在不同的数据集上运行.其中一个节点自动选择(通过A ...

随机推荐

  1. Spark(二) -- Spark简单介绍

    spark是什么? spark开源的类Hadoop MapReduce的通用的并行计算框架 spark基于map reduce算法实现的分布式计算 拥有Hadoop MapReduce所具有的优点 但 ...

  2. 如何在Ubuntu上使用Glances监控系统

    导读 Glances 是一个用于监控系统的跨平台.基于文本模式的命令行工具.它是用 Python 编写的,使用 psutil 库从系统获取信息.你可以用它来监控 CPU.平均负载.内存.网络接口.磁盘 ...

  3. Linux——解决RedHat6/CentOS6系统中“弹出界面eth0:设备似乎不存在”的问题

    刚刚在自己的CentOS6系统中执行service network restart时,竟然提示: 弹出界面 eth0: 设备 似乎不存在, 初始化操作将被延迟.   [失败] 这事可真神奇.于是手动编 ...

  4. Android重写ViewPager改动滑动灵敏度

        使用ViewPager作为一个页面进行切换.里面能够存放非常多View,但有时在操作View时不小心滑动一下就有可能跳到下一页,这并非我们想要的,这里就须要重写ViewPager改动它的滑动条 ...

  5. libevent2源码分析之五:关键的调用链

    用一个调用链来表示函数调用的流程,看起来更直观.根据上面的分析,总结了一些重要的调用链. 初始化 event_base_new event_base_new_with_config min_heap_ ...

  6. C语言面向对象编程(五):单链表实现(转)

    这里实现的单链表,可以存储任意数据类型,支持增.删.改.查找.插入等基本操作.(本文提供的是完整代码,可能有些长.) 下面是头文件: #ifndef SLIST_H #define SLIST_H # ...

  7. Linux下中断程序导致写文件失败的分析

    案例: 一个普通linux C程序,执行期间会进行多次printf操作,利用bash脚本重定向功能,将stdout重定向到一个另一个文件中去.在运行途中用ctrl+C终止程序,发现定向文件始终为空,即 ...

  8. Spring 常用注入注解(annotation)和其对应xml标签

    使用注解需要修改bean.xml: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=& ...

  9. 异步编程C#回调方法

    1.什么是异步? 异步操作通常用于执行完成时间可能较长的任务,如打开大文件.连接远程计算机或查询数据库.异步操作在主应用程序线程以外的线程中执行.应用程序调用方法异步执行某个操作时,应用程序可在异步方 ...

  10. nginx sever_name正则

    nginx server_name 规则: 1.确切的server_name匹配 例如: server { listen ; server_name www.luwen.cc luwen.cc; .. ...