我来调查一下Apache NiFi

这篇文章是关于什么的?

Apache NiFi是一个用于管理系统间数据流的数据流编排工具。

通过GUI(Web界面)可以设置、控制和监视数据流是其重要特点之一。

项目页面:https://nifi.apache.org/index.html
Github页面:https://github.com/apache/nifi

现在,我被分配到一个使用NiFi的项目,并正在进行调查,计划将调查结果逐渐记录下来。

环境

    • Mac OS X 10.11.6

 

    • Apache NiFi 1.4.0

 

    Java version 1.8.0_92

安装NiFi

按照上述的指示,使用Homebrew进行安装。

$ brew install nifi

我暫時檢查一下狀態。

$ nifi status

NiFi home: /usr/local/Cellar/nifi/1.4.0/libexec

Bootstrap Config File: /usr/local/Cellar/nifi/1.4.0/libexec/conf/bootstrap.conf

2017-09-30 21:48:15,792 INFO [main] org.apache.nifi.bootstrap.Command Apache NiFi is not running

如果Java home的值有问题,先需要在环境变量等地方正确地进行记录。
NiFi home是NiFi所使用的根目录。

试着启动NiFi。

$ nifi start

Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home
NiFi home: /usr/local/Cellar/nifi/1.4.0/libexec

Bootstrap Config File: /usr/local/Cellar/nifi/1.4.0/libexec/conf/bootstrap.conf

$ nifi status

Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home
NiFi home: /usr/local/Cellar/nifi/1.4.0/libexec

Bootstrap Config File: /usr/local/Cellar/nifi/1.4.0/libexec/conf/bootstrap.conf

2017-09-30 21:59:25,018 INFO [main] org.apache.nifi.bootstrap.Command Apache NiFi is currently running, listening to Bootstrap on port 59714, PID=13895

默认情况下,将本地主机的8080端口分配给NiFi的Web界面,因此可以通过从浏览器访问http://localhost:8080/nifi来确认其是否已启动。

Kobito.ESORtv.png

使用语言

这个要求的中国人不妨熟知一下。

    • FlowFile

NiFiが取り扱うデータの単位.AttributesとContentからなる.
Attirbutes: 個々のFlowFileが持つ,key-valueベースのメタ情報.
Content: 扱うデータの本体.

Processor

「FlowFileにどんな処理を施すか」を表す.
データフローを記述したグラフ(DAG)におけるノードに相当する.
NiFiに組み込まれているものに加え,自分で実装したものを新たに組み込むことも可能.

Relationship

「Processorが行った処理に応じて,どのProcessorにどのFlowFileを届けるか」を表す.
データフローを記述したグラフにおけるエッジの属性に相当する.
各Processorごとにあらかじめ定義されている.

我先碰一下试试

如果只是想先试试看动一下的话,

开始使用: https://nifi.apache.org/docs/nifi-docs/html/getting-started.html
由Hortonworks社提供的日本语教程: https://github.com/ijokarumawak/hdf-tutorials-ja/wiki/Ropes-of-Apache-NiFi%3A-Tutorial-1

我认为周边可以作为参考。

作業ステップは次のようになります:

    根据目的寻找/实现适合的处理器,并将其添加到画布上。连接处理器(对于每个边缘,选择关系)。设置处理器(许多处理器需要设置属性)。启动处理器。

需要去做。

我們試著來描述一個數據流程:讀取包含各行JSON文件的內容,將其按行分割並將其作為HTTP的POST參數發送。

处理器的布局

本次使用的处理器是

    1. ListFile: 通过指定目录,搜索该目录中的文件

 

    1. FetchFile: 获取指定文件的内容

 

    1. SplitText: 分割文件

 

    InvokeHTTP: 进行HTTP访问

以下是四个的中文翻译选项:
1. 四个。
2. 这是四个。
3. 有四个。
4. 这里有四个。

nifi1.png

只要点击上面的按钮并在画布上拖放,

Kobito.x6pAlz.png

如下所示,会出现选择要添加的处理器的界面。

Kobito.gS6hdQ.png

在这里选择ListFile,然后点击ADD。

Kobito.bIIoU9.png

处理器会被安置。

同样地,在其他Processor上也进行布置。

Kobito.4ACm7G.png

连接处理器

Kobito.uY6sos.png

在有类似箭头的状态下,可以通过拖拽和释放Processor来连接Processor之间的线。

Kobito.Uuypxp.png

在”关系”栏中,指定用什么样的关系连接处理器。在这里,指定为成功。

Kobito.L1ONFy.png

可以确认通过成功的关系来结合。

同样地,还需连接其他处理器。

Kobito.uiAgS2.png

設定處理器

如果保持目前状况,由于没有任何处理器的设置值,所以无法运作。

通过右键点击处理器,然后点击配置,即可进行处理器的设置。

Kobito.eGVUEF.png

在这里,选择PROPERTIES选项卡,并在Input Directory中输入您想要搜索文件的目录路径。

Kobito.469RXD.png
Kobito.2dsZwj.png

刚刚的ListFile Processor 上有一个黄色的 “注意” 标志,但现在已经变为红色的 “停止” 标志。这意味着该 Processor 已经准备就绪。

将鼠标悬停在「注意」标志上时,将显示未满足的启动条件,请参考。

Kobito.rGVoj8.png

基本上,所有必填的属性都必须填写,而且对于关系,必须明确是与其他处理器相连还是”不与任何地方相连”。如果要明确”不与任何地方相连”,可以在SETTINGS选项卡的Automatically Terminate Relationship中进行选择。

Kobito.lFO8Ai.png

同样,也要对其他处理器进行设置。

Kobito.GOXGWd.png

在此次中,我們省略了關於異常情況的部分,然而在實際的數據流程中,我們也應該描述失敗時的處理過程。

启动处理器

Kobito.Bqzk1Y.png

选择要启动的处理器,然后按下“播放”按钮即可启动处理器。

Kobito.T4fwaa.png

当需要追踪实际数据流时,使用数据溯源(Data Provenance)是一个不错的选择。

如果想追踪SplitText的处理,例如,

Kobito.P4tgWR.png

类似于这样,在SplitText菜单中选择Data Provenance。

Kobito.Un9hww.png

在上方的屏幕上,可以查看经过SplitText处理的数据列表。

要查看实际数据的内容时,点击最左边的“i”按钮,然后从CONTENT标签页中点击VIEW按钮。可以看到处理器的输入和输出数据。

Kobito.IijGnU.png

顺便提一下,如果查看InvokeHTTP的输入数据,可以确认数据已经按行拆分。

Kobito.PPbL4x.png
Kobito.o9jNOk.png
广告
将在 10 秒后关闭
bannerAds