前回は、Apache NiFi を使って、GCP GCS にデータを蓄積する方法を紹介しました。
今回は、「異なる環境でデータフローを管理したい」「データ基盤環境を徐々に移行したい」という要望があるときに、Apache NiFi の "Site to Site" という機能が、とっても便利なので紹介します。ここでは、AWS S3 にデータを書き込みながら、同じデータを Google Cloud Storage (GCS) に書き込むようなデータフローを試してみたいと思います。
(図には、RedshiftとBigQuery のアイコンがありますが、ここでは試しません。)
GCP 側の設定
Apache NiFi と Google Cloud Storage の連携 を参考に NiFi をインストール
GCP のファイアウォールで、NiFi の Site to Site で利用するポート(任意のポート)をオープン(ここでは9990 を使用)
GCP のファイアウォールで、NiFi にアクセスするポートをオープン(ここでは デフォルト: 8080 を使用)
NiFi インスタンスの、nifi.properties 下記のように設定
nifi.remote.input.host=<データを受信する側のホスト>(今回 GCP側)
nifi.remote.input.secure=false
nifi.remote.input.socket.port=9990 (site to site で使用する任意のポート)
nifi.remote.input.http.enabled=true
nifi.remote.input.http.transaction.ttl=30 sec
PutGCSObject Processor をドラッグ・アンド・ドロップし、Apache NiFi と Google Cloud Storage の連携 を参考に設定
すべての Processor を実行し、正しく動作しているか確認
AWS 側の設定
Apache NiFi と Google Cloud Storage の連携 を参考に NiFi をインストール
AWS のセキュリティグループの設定で、NiFi にアクセスするポートをオープン(ここでは デフォルト: 8080 を使用)
GenerateFlowFile を作成
GenerateFlowFile Processor をドラッグ・アンド・ドロップし、作成Remote Process Group を作成
Remote Process Group Processor をドラッグ・アンド・ドロップし、URLs
を設定
URLs
は相手側のインスタンスです。
PutS3Object Processor を作成
PutS3Object Processor をドラッグ・アンド・ドロップし、Bucket
とAccess Key
、Secret Key
を設定
Remote Process Group を右クリックし、
Enable transmission
をクリックして、Remote Process Group Processor を有効に
すべての Processor を実行し、AWS S3 と GCS にデータが正しく書き込まれているか確認
少し、はしょって書いているので、不明な点があれば、 @kkitase まで。
以上