前回の記事ではApache NiFiとは何かについて紹介しました。
今回の記事ではApache NiFiを単体で構築する手順を説明します。
「Apache NiFiとはなにか」については以下の記事をご確認ください。
前提条件
次の環境を用意します。
- Ubuntu Server 22.04の仮想マシン(以下、VM)
- NiFiバージョン 1.20.0
- VMは構築されている状態で、インターネットにアクセスできること
NiFiはスループット/耐障害性能を高めるために通常クラスタで構築をしますが、 今回は検証のため、自分のPCにVirtualBoxを入れてVMを立てたうえで検証をします。
構築手順
Javaのインストール
まずNiFiを動作させるのに必要なJavaのインストールを行います。
sudo apt install openjdk-11-jdk
現在のNiFi 1.x.xではJavaは1.8系と1.11系が利用できますが、将来的にはJava 1.8系は利用できなくなる予定です。
参考
NiFiのダウンロードリンクを確認
NiFi公式ページにアクセスします nifi.apache.org 公式ページ上部にあるDownloadsをクリックし、Download NiFiをクリックします。 Releasesにある各バージョンのBinariesからリンクをクリックします HTTPの下にあるリンクをコピーします
NiFiのダウンロード
VMにログインし、wgetでファイルのダウンロードをします。
wget https://dlcdn.apache.org/nifi/1.20.0/nifi-1.20.0-bin.zip
ZIPの解凍
ZIP解凍のためのUNZIPのインストール
以下のコマンドを実行します
sudo apt install unzip
ZIPファイルの解凍
unzip nifi-1.20.0-bin.zip
ls -l nifi-1.20.0 nifi-1.20.0-bin.zip
ファイルの確認
解凍されたディレクトリに移動
cd nifi-1.20.0
ディレクトリ内の確認
ls -l bin conf docs extensions lib LICENSE NOTICE README
各ディレクトリは以下のような内容となっています。
- bin:実行用のshellscriptやbatファイル等スクリプト
- conf:設定ファイル
- docs:NiFiドキュメントのHTML
- extensions:カスタムプロセッサ置き場
- lib:NiFiの本体やデフォルトで入っているプロセッサ
NiFIのインストール
以下のコマンドでインストール用のスクリプトを実行して、NiFiをインストールします。
sudo ./bin/nifi.sh install
サービス登録の確認
sysytemctlでサービスとしてNiFIが実行できるようになっていることを確認します。
systemctl status nifi.service
サービス起動前の設定
ログイン情報の登録
ログイン情報の登録を行います。昔はこの手順無しでNiFiUiを開くことができたのですが、最近のバージョンではこの登録を行わないとNiFiにアクセスができません。
./bin/nifi.sh set-single-user-credentials <User> <Password>
NiFi設定の編集
外部からアクセスできるようにNiFiの設定を変更します。 以下のコマンドを実行して設定ファイルを開きます。
vi conf/nifi.properties
以下の設定を変更します。
nifi.web.https.host=127.0.0.1 nifi.web.request.ip.whitelist=
下記のように設定します。
nifi.web.https.host= <VMのIP> nifi.web.request.ip.whitelist= <アクセス元のIP(今回はホストPCのIP)>
FW設定の変更
FW設定の変更を行い外部からNiFiにアクセスできるようにします。
sudo ufw allow 8443/tcp
NiFiの起動
以下のコマンドでNiFiを実行します。
systemctl start nifi
NiFiサーバが立ち上がるまで多少時間がかかりますので少し待ってから、ホスト側からブラウザでVMのNiFiに接続します。 ポートはデフォルトでは8443です。
https://<VMのIP>:8443/nifi
証明書周りでブラウザで警告が出ますが、詳細設定→
先ほど登録したログイン情報を入力してログインします
NiFiにログインできました!
まとめ
NiFiは簡単に構築できるようにスクリプトが用意されており、すぐに利用可能です。
次回は簡単なフローを作って動作の確認を行います。