データの流れを制御するツール『Apache Nifi』をCentOS 7にインストールする
Pocket

データの流れを制御するためのツール『Apache Nifi』というものがあって、前々から興味を持っていたのでインストールをしてみることにした。
データフローを制御するってなんじゃいと最初思ったのだが、データ(ログとかセンサーのデータ)をApacheNifiに投げてやることで、Nifi側でこのログはこっちのシステム、あのログはあっち、このセンサーデータはそっちというようにデータの連携先を定義してやることができるらしい。ろ過装置のように流れているデータを少し加工して連携先に投げることもできるようで、まさにデータフローを制御することができるシステムのようだ。

その他『Apache Nifi』についての情報は、いろいろなとこに情報が記載されているので、そちらを参考にしてもらいたい。

 

で、今回はこのApacheNifiをCentOS 7にインストールしてみる。
例によってSELinuxおよびFirewalldは停止済。

1.ApacheNifiのインストール

まず、ダウンロード用のURLを調べて、以下のコマンドでApache Nifiのバイナリ(のtar.gz)をダウンロードしてくる。

wget http://ftp.jaist.ac.jp/pub/apache/nifi/1.0.0/nifi-1.0.0-bin.tar.gz

 

ファイルを展開して/opt配下に置いてやる。

tar xzvf nifi-1.0.0-bin.tar.gz
mv nifi-1.0.0 /opt/
cd /opt
ln -s nifi-1.0.0/ nifi

 

「nifi」というユーザを作成してフォルダの所有者を変更する。

useradd nifi
chown -R nifi. /opt/nifi*

 

Javaのインストールをして.bash_profileに追記を行う。

yum install -y java-1.8.0-openjdk-devel
echo "export JAVA_HOME=/etc/alternatives/java_sdk_1.8.0_openjdk" >> /home/nifi/.bash_profile

 

最後に、サービスファイルを作成して起動する。

echo "JAVA_HOME=/etc/alternatives/java_sdk_1.8.0_openjdk" >> /etc/sysconfig/nifi
cat <<EOF >> /etc/systemd/system/nifi.service
[Unit]
Description=Apache NiFi
After=network.target

[Service]
Type=forking
User=nifi
Group=nifi
ExecStart=/opt/nifi/bin/nifi.sh start
ExecStop=/opt/nifi/bin/nifi.sh stop
EnvironmentFile=/etc/sysconfig/nifi

[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl start nifi.service

 

これで、Nifiの管理画面にアクセスできるようになった。

Sponsored Links

2.ブラウザから管理画面にアクセスする

サービスを起動させたら、ブラウザから「http://ホスト名orIPアドレス:8080/nifi/」にアクセスする。
アクセス直後の画面がこちら。デフォルトの設定のままだと、特にインストール直後でログインとかは必要ないようだ。

 

20161109_085943000000

 

アクセス直後からフロー図を書ける画面になるようだ。

 

3.適当にフローを作ってみる

インストールしただけだとあまり意味がないので、実際にフローを作ってみよう。
といっても、特にセンサーとなるような物がないのでなんかないかなと調べたところ、Twitterの情報が取れるようなのでそれを使うことにする。
事前に、こちらからアプリ登録とTwitterのAPIキー等の取得を忘れずに行う。

まず、画面左上にある「Processer」をドラッグしてくる。

20161112_130355000000

 

追加できるProcesserの検索画面でTwitterを検索、選択して「ADD」。

20161112_130404000000

 

Processerの追加ができたら、設定画面を開く。

20161112_131049000000

 

Consumer Keyなど諸々の設定を行う。
[SETTINGS]で[Success]にチェックを入れるのを忘れずに。

20161112_135656000000

 

次に、取得した内容のアウトプット先として、ファイルを設定する。
同じくProcesserから「PutFile」を選択して配置し、「GetTwitter」から線を伸ばして接続してやる。
これで、「GetTwitter」から「PutFile」へ処理が連携される。

20161112_154604000000

 

「PutFile」の設定画面から、出力先のフォルダなどについて定義してやる(フォルダがない場合は作成してnifiに権限を付与する)。
[SETTINGS]タブの処理も忘れずに行うこと。

20161112_154718000000

 

設定後は、「GetTwitter」「PutFile」ともに起動をすることでTwitterの内容を指定されたフォルダにJSON形式で出力するようになる。

 

20161112_161025000000

 

これで、ひとまずデータの取得が行えるようになった。
間にさらにProcesserを挟むことで、ツイート内容に応じて出力先のファイルを変えるといったこともできるようだし、非常に面白そうなプロダクトだ。

 

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。