我来调查一下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来确认其是否已启动。
使用语言
这个要求的中国人不妨熟知一下。
-
- 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參數發送。
处理器的布局
本次使用的处理器是
-
- ListFile: 通过指定目录,搜索该目录中的文件
-
- FetchFile: 获取指定文件的内容
-
- SplitText: 分割文件
- InvokeHTTP: 进行HTTP访问
以下是四个的中文翻译选项:
1. 四个。
2. 这是四个。
3. 有四个。
4. 这里有四个。
只要点击上面的按钮并在画布上拖放,
如下所示,会出现选择要添加的处理器的界面。
在这里选择ListFile,然后点击ADD。
处理器会被安置。
同样地,在其他Processor上也进行布置。
连接处理器
在有类似箭头的状态下,可以通过拖拽和释放Processor来连接Processor之间的线。
在”关系”栏中,指定用什么样的关系连接处理器。在这里,指定为成功。
可以确认通过成功的关系来结合。
同样地,还需连接其他处理器。
設定處理器
如果保持目前状况,由于没有任何处理器的设置值,所以无法运作。
通过右键点击处理器,然后点击配置,即可进行处理器的设置。
在这里,选择PROPERTIES选项卡,并在Input Directory中输入您想要搜索文件的目录路径。
刚刚的ListFile Processor 上有一个黄色的 “注意” 标志,但现在已经变为红色的 “停止” 标志。这意味着该 Processor 已经准备就绪。
将鼠标悬停在「注意」标志上时,将显示未满足的启动条件,请参考。
基本上,所有必填的属性都必须填写,而且对于关系,必须明确是与其他处理器相连还是”不与任何地方相连”。如果要明确”不与任何地方相连”,可以在SETTINGS选项卡的Automatically Terminate Relationship中进行选择。
同样,也要对其他处理器进行设置。
在此次中,我們省略了關於異常情況的部分,然而在實際的數據流程中,我們也應該描述失敗時的處理過程。
启动处理器
选择要启动的处理器,然后按下“播放”按钮即可启动处理器。
当需要追踪实际数据流时,使用数据溯源(Data Provenance)是一个不错的选择。
如果想追踪SplitText的处理,例如,
类似于这样,在SplitText菜单中选择Data Provenance。
在上方的屏幕上,可以查看经过SplitText处理的数据列表。
要查看实际数据的内容时,点击最左边的“i”按钮,然后从CONTENT标签页中点击VIEW按钮。可以看到处理器的输入和输出数据。
顺便提一下,如果查看InvokeHTTP的输入数据,可以确认数据已经按行拆分。