一、概述

“光说不练假把式。” 官网上的介绍多少让人迷迷糊糊的,各种高大上的词语仿佛让 NiFi 离我们越来越远。

实践是最好的老师。那就让我们试用一下 NiFi 吧!

二、安装

由于我的整个学习和使用过程都是在 Linux 下完成,所以,整个教程也是面向 Linux 用户的。

其他系统下的使用方法类似,如有其他系统的用户,那么还请有选择性的进行参考本教程。

NiFi 是免安装地,仅需从官网下载压缩包,然后解压,旋即完成了整个安装过程。

三、配置

我们需要对 NiFi 的配置文件(存放在 [nifi_install_location]/config )进行个性化配置。

由于目前我们只是简单的上手,所以大部分配置项都选择了默认的配置。我们仅对 NiFi 进行基本的配置。

nifi.properties 文件针对的是 NiFi 的配置,仅需做如下修改:

# web properties #
nifi.web.war.directory=./lib
nifi.web.http.host=192.168.203.7 # 设置成本机的 ip
nifi.web.http.port=9191
nifi.web.https.host=
nifi.web.https.port=
nifi.web.jetty.working.directory=./work/jetty
nifi.web.jetty.threads=200

其他文件在本教程场景下无需修改。

四、启动

通过 [nifi_install_location]/bin/nifi.sh 进行 startrestartstopstatus 等操作。

  • ./bin/nifi.sh start 启动 nifi。
  • 浏览器中访问 192.168.203.7:9191/nifi(此处的ip与端口同你的配置项相关)
  • 即可出现 nifi 的操作界面

由于 nifi 加载配置信息较慢,稍作等待。

五、简单使用

设定一个这样的场景:

统计每次收到的消息中,单词出现的频次。WORD COUNT!!!

5.0 先修:操作面板与 Processor

熟悉操作面板的各个组件。如何添加、启动、停止、删除一个 Processor,如何对 Processor 进行基本配置?

对于上述问题,请自行在界面上进行尝试和练习。

官网上也提供了一些 Youtube 上的教学视频,请参考这里 nifi.apache.org/videos

5.1 涉及到的组件

  • GenerateFlowFile
  • ExecuteScript
  • PutFile

5.2 部署组件

从 Processor 拖取上述组件到操作面板上,依照描述的数据流动方式将组件串起。

串联组件时,有时需要对组件进行关系的选择。即选择上一组件分发的正确/错误消息分发到下一组件。

同时,末端的组件你需要在它的 setting pannel 指定自己处理 Success、Failure。

对 Processor 的配置如下:

  • GenerateFlowFile

    • Profile -> Custom Text 填入需要统计单词频次的文章/内容

      如:
    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:
    • Scheduling -> Run Duration 调节至 2s,放缓数据生成的速度
  • ExecuteScript

    import org.apache.commons.io.IOUtils
    import java.nio.charset.* def flowFile = session.get()
    if(!flowFile) return flowFile = session.write(flowFile, {inputStream, outputStream ->
    def wordCount = [:] def tellTaleHeart = IOUtils.toString(inputStream, StandardCharsets.UTF_8)
    def words = tellTaleHeart.split(/(!|\?|-|\.|\"|:|;|,|\s)+/)*.toLowerCase() words.each { word ->
    def currentWordCount = wordCount.get(word)
    if(!currentWordCount) {
    wordCount.put(word, 1)
    }
    else {
    wordCount.put(word, currentWordCount + 1)
    }
    } def outputMapString = wordCount.inject("", {k,v -> k += "${v.key}: ${v.value}\n"}) outputStream.write(outputMapString.getBytes(StandardCharsets.UTF_8))
    } as StreamCallback) flowFile = session.putAttribute(flowFile, 'filename', 'telltale_heart_wordcount')
    session.transfer(flowFile, REL_SUCCESS)
  • PutFile

    • Profile -> Directory 填入存放结果的文件夹,如 /home/lbh/logs/result

启动各个 Processor 后,就能清晰地看到数据在 Processors 之间流动。

查看 PutFile 中设置的文件存放目录,能够看到存放着统计结果的文件 telltale_heart_wordcount

打开 telltale_heart_wordcount 文件,查看到统计结果如下:



此文在我的 Github Pages 上同步发布,地址为:『NiFi学习之路』入门——下载、安装与简单使用

『NiFi 学习之路』入门 —— 下载、安装与简单使用的更多相关文章

  1. 『NiFi 学习之路』简介

    『NiFi 学习之路』简介 『NiFi 学习之路』入门 -- 下载.安装与简单使用 『NiFi 学习之路』资源 -- 资料汇总 『NiFi 学习之路』把握 -- 架构及主要组件 『NiFi 学习之路』 ...

  2. 『NiFi 学习之路』自定义 —— 组件的自定义及使用

    一.概述 许多业务仅仅使用官方提供的组件不能够满足性能上的需求,往往要通过高度可定制的组件来完成特定的业务需求. 而 NiFi 提供了自定义组件的这种方式. 二.自定义 Processor 占坑待续 ...

  3. 『NiFi 学习之路』使用 —— 主要组件的使用

    一.概述 大部分 NiFi 使用者都是通过 NiFi 的 Processor 来实现自己的业务的.因此,我也主要就 NiFi 官方提供的 Porcessor 进行介绍. 二.Processor 如果你 ...

  4. 『NiFi 学习之路』把握 —— 架构及主要部件

    一.概述 通过前面几篇文章的学习,相信你对 NiFi 有了一个基础性的了解. 数据处理和分发系统 是什么概念? NiFi 系统中数据的传递方式是怎样的? NiFi 的重要 Processor 有哪些? ...

  5. 『NiFi 学习之路』资源 —— 资料汇总

    一.概述 由于 NiFi 是一个比较新的开源项目,国内的相关资料少之又少. 加之,大家都知道,国内的那么些个教程,原创都只是停留在初级使用阶段,没有更多深入的介绍. 再者,其余的文章不是东抄抄就是西抄 ...

  6. Qt学习之路1---软件下载安装及工程简介

    1.下载安装目前最新版的qt,官网链接:https://www.qt.io/qt5-8/: 和qt4不同,qt5在线安装,轻巧快速,而且不用配置一些繁琐的东西,安装之后会出现Qt creator这就是 ...

  7. [精品书单] C#/.NET 学习之路——从入门到放弃

    C#/.NET 学习之路--从入门到放弃 此系列只包含 C#/CLR 学习,不包含应用框架(ASP.NET , WPF , WCF 等)及架构设计学习书籍和资料. C# 入门 <C# 本质论&g ...

  8. go语言,golang学习笔记1 官网下载安装,中文社区,开发工具LiteIDE

    go语言,golang学习笔记1 官网下载安装,中文社区,开发工具LiteIDE Go语言是谷歌2009发布的专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速 ...

  9. 我的 Delphi 学习之路 —— Delphi 助手的安装

    标题:我的 Delphi 学习之路 -- Delphi 助手的安装 作者:断桥烟雨旧人伤 Delphi 助手的安装 CnWizards 类似于 VS 中的番茄助手,在编写 Delphi 代码时帮助极大 ...

随机推荐

  1. java.lang.IllegalArgumentException: SessionContext must be an HTTP compatible implementation.:模块化本地测试shiro的一些总结

    项目由于是多模块的,所以,测试的时候我想现将shiro框架进行本地测试,然后再放入框架里面,但是这个困扰我了两天了都,其实我应该想到的,只是想多试试,最后还不如多想想 先说一下系统的基本情况,项目是多 ...

  2. windows静态库的使用

    最近在学Zeromq(像框架一样的一个socket library)的使用,里面有关于库的使用问题.今天就来复习下静态库的使用: 使用静态库是重用代码的一种绝佳方式.您不必在自己创建的每个程序中重新实 ...

  3. MPAndroidChart -- LimitLine的坑

    好久没有写博客了,最近比较忙,项目中使用了MPAndroidChart,初次使用也比较蠢,很多API都得一个一个查,但有些时候当你想应该有这个API的时候他却没有,就比如今天的主角LimitLine ...

  4. 第二百二十节,jQuery EasyUI,Slider(滑动条)组件

    jQuery EasyUI,Slider(滑动条)组件 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解 EasyUI 中 Slider(滑动条)组件的使用方法,这个 ...

  5. 用原生JS模仿jquery,需要HTML5的支持

    jQuery是现在最流行的JavaScript工具库. 据统计,目前全世界57.3%的网站使用它.也就是说,10个网站里面,有6个使用jQuery.如果只考察使用工具库的网站,这个比例就会上升到惊人的 ...

  6. (转)使用 PyInstaller 把python程序 .py转为 .exe 可执行程序

    最近使用Python为项目开发一款绘图工具(绘出 声场三维模型).因为希望能把Python脚本发布为脱离Python平台运行的可执行程序,比如单个的exe文件.PyInstaller恰满足这个需求.本 ...

  7. C# 中利用反射机制拷贝类的字段和属性(拷贝一个类对象的所有东西付给另一个类对象,而不是付给引用地址)

    from:https://blog.csdn.net/poxiaohai2011/article/details/27555951 //C# 中利用反射机制拷贝类的字段和属性(拷贝一个类对象的所有东西 ...

  8. jquery动态生成html代码绑定事件

    今天工作中需要在页面动态生成html代码,但发现新生成的代码的click事件失效了(非动态生成的代码已经绑定了click事件),于是在网上找了很多解决办法,很多都比较复杂,且使用的jquery都比较老 ...

  9. JAVA基础面试(四4)

    31.String s = new String("xyz");创建了几个StringObject?是否可以继承String类? 两个或一个都有可能,”xyz”对应一个对象,这个对 ...

  10. Django中的过滤器

    Django 过滤器   过滤器 描述 示例 upper 以大写方式输出 {{ user.name | upper }} add 给value加上一个数值 {{ user.age | add:”5” ...