Edited at

Apache NiFi を使って Google Cloud Storage にデータを蓄積しよう

More than 1 year has passed since last update.

Google Cloud Dataflow は、 ETL などのデータ処理を行い、GCP のマネージドサービス間のデータのフローを構成するサービスです。今回は、NiFi で生成したデータを、Google Cloud Storage (GCS) に書き込むフローを試してみました。


  • GCE 上にインスタンスを作成

マシンタイプ: n1-standard-4

HTTP/HTTPS トラフィックを許可する
ネットワークタグ: nifi


  • ファイアウォールの設定

    NiFi はデフォルト 8080 番ポートを利用するので、ポートをオープンにします

    ss 2018-03-25 0.40.21.png



  • GCS 用のサービスアカウントキーを作成


    • API とサービスの認証情報から、認証情報を作成をクリック
      ss 2018-03-24 12.38.15.png

    • 任意のサービスアカウント名を入力
      ss 2018-03-24 12.40.51.png



  • Java, NiFi のインストール、起動

    作成した インスタンス に ssh 接続し、下記の要領でインストール、起動します


sudo apt-get update

sudo apt-get -y install openjdk-8-jdk
sudo sh -c "echo 'export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64' >> /etc/profile.d/jdk.sh"
sudo sh -c "echo 'export PATH=\$JAVA_HOME/bin:\$PATH' >> /etc/profile.d/jdk.sh"
source /etc/profile.d/jdk.sh
wget https://archive.apache.org/dist/nifi/1.4.0/nifi-1.4.0-bin.tar.gz
tar zxvf nifi-1.4.0-bin.tar.gz
cd nifi-1.4.0/bin
./nifi.sh start


  • Apache NiFi の UI にアクセス

    http://[ipaddress]:8080/nifi にアクセス

    ss 2018-03-24 23.53.15.png


  • フローの作成

    NiFi では下記のように Processor と呼ばれる箱を組み合わせてフローを定義していくが、今回は、 GenerateFlowFile と、 PutOCSObject を使用してみます。

    ss 2018-03-24 23.56.19.png


  • PutOCSObject をダブルクリックし、 GCS に データを書き込む為に、下記を設定を変更する


GCP Credentials Provider Service : 

Project ID : <GCP のプロジェクトID>
Bucket : <GCS のバケット>

ss 2018-03-24 12.13.19.png


  • GCP Credentials Provider Service の設定

    PutOCSObject Processor をダブルクリックし、GCP Credentials Provider Service の右に矢印をクリックして、歯車マークをクリック

    ss 2018-03-24 12.13.54.png


  • Properties タブをクリックし、Service Account JSON に、作成したキー (JSON 形式) をペースト

    ss 2018-03-24 12.13.42.png


  • PutOCSObject Processor をダブルクリックし、GCP Credentials Provider Service の右に矢印をクリックして、雷マークをクリックし、Enable 状態にします

    ss 2018-03-24 12.13.54.png


  • 全ての Processor を実行して、GCS にデータが書き込まれていることを確認

    ss 2018-03-24 12.17.44.png


Apache NiFi には、GCP のマネージドサービス用の Processor がまだまだ少ないので、(というか、GCS関連しかない)この辺りが充実されれば、色々展開できると思われます。

少し、はしょって書いているので、不明な点があれば、 @kkitase まで。

以上