码迷,mamicode.com
首页 > Web开发 > 详细

Apache Nifi 组件开发

时间:2016-03-30 13:20:38      阅读:1571      评论:0      收藏:0      [点我收藏+]

标签:

      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


Apache Nifi 组件开发

标签:

原文地址:http://blog.csdn.net/sinat_20756431/article/details/51011619

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!