一、概述

“光说不练假把式。” 官网上的介绍多少让人迷迷糊糊的,各种高大上的词语仿佛让 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. cobbler default system 网络安装时主机的menu上只有一个local选项

    问题:使用cobbler default system 做pxe网络安装时,主机启动后安装menu上只有一个local选项,看不到对应的system名字 解决:cobbler default syst ...

  2. inux redis 安装配置, 以及redis php扩展

    一,什么是redis redis是一个key-value存储系统. 和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合)和zset ...

  3. 对Linux命令进一步学习vim(二)

    今天,进一步学习Linux相关的命令,可能会有重复的地方,但学习本来就是不断重复的过程.故作小记! 1.安装了:vim  ,,,一款Linux爱好者经常用到的ide sudo apt-get inst ...

  4. Multiview

    新建3个ViewController的类 新建main.stroyboard,并配置好相应的布局(编辑界面,连接视图与类,ViewController的Storyboard ID,连接3个Button ...

  5. Codeforces Round #210 (Div. 1).B

    经典的一道DP题. 题目明显是一道DP题,但是比赛的时候一个劲就在想怎么记录状态和转移.最后想到了一种n^3的方法,写了下,不出所料的超时了. 看了别人的代码才发现竟然是先二分然后再进行DP,像这种思 ...

  6. hdu 4576(简单概率dp | 矩阵优化)

    艰难的一道题,体现出菜菜的我... 首先,先吐槽下. 这题到底出题人是怎么想的,用普通概率dp水过??? 那为什么我概率dp写的稍微烂点就一直tle?  感觉很不公平.大家算法都一致,因为我程序没有那 ...

  7. boost::bind 详解

    使用 boost::bind是标准库函数std::bind1st和std::bind2nd的一种泛化形式.其可以支持函数对象.函数.函数指针.成员函数指针,并且绑定任意参数到某个指定值上或者将输入参数 ...

  8. textarea 换行

    这个是可以多行展示的Texat也就是DW设计模式下的多行 /*华丽的分割线==================================*/ 当你点击单行时你发现此时的标签换成了value=&q ...

  9. 所有版本chromedriver下载

     所有版本chromedriver下载 http://chromedriver.storage.googleapis.com/index.html

  10. 在DO搭建自己的ss

    前期准备: 1.一个paypal账户 2.国外的一台VPS paypal的注册需要一个邮箱和一张信用卡即可. VPS的话经过搜索对比,决定使用DigitalOcean的.(点击此链接注册DO可获得10 ...