Cloud Storage に格納されるデータ

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

このページでは、Cloud Composer が Cloud Storage の環境に保存するデータについて説明します。

環境を作成するときに、Cloud Composer によって Cloud Storage バケットが作成され、環境に関連付けられます。バケットの名前は、環境のリージョン、名前、およびランダムな ID(us-central1-b1-6efabcde-bucket など)に基づきます。

Cloud Composer によって、環境のバケット内の特定のフォルダが、環境内で実行される Airflow コンポーネントに同期されます。たとえば、環境のバケット内の Airflow DAG のコードを含むファイルを更新すると、Airflow コンポーネントにも更新されたバージョンが送信されます。Cloud Composer は、同期に Cloud Storage FUSE を使用します。

Cloud Storage バケット内のフォルダ

フォルダ Storage パス マッピングされたディレクトリ 説明
DAG gs://bucket-name/dags /home/airflow/gcs/dags 環境の DAG を保存します。
プラグイン gs://bucket-name/plugins /home/airflow/gcs/plugins カスタム プラグインを保存します。カスタムのインハウス Airflow 演算子、フック、センサー、インターフェースなどです。
データ gs://bucket-name/data /home/airflow/gcs/data タスクが生成して使用するデータを保存します。
ログ gs://bucket-name/logs /home/airflow/gcs/logs タスクの Airflow ログを保存します。ログは、Airflow ウェブ インターフェースと Google Cloud コンソールの [ログ] タブでも確認できます。

Cloud Composer は、dags/ フォルダと plugins/ フォルダを一方向に同期します。一方向に同期されるため、Airflow コンポーネントのこれらのフォルダのローカルの変更は上書きされます。data/ フォルダと logs/ フォルダは双方向に同期されます。

データの同期には結果整合性があります。1 つのオペレータから別のオペレータにメッセージを送信するには、XComs を使用します。

容量に関する考慮事項

dags/plugins/data/ のフォルダのデータは、Airflow のスケジューラとワーカーに同期されます。

plugins/ フォルダの内容は Airflow ウェブサーバーと同期されます。

これらのフォルダに格納されるデータが多いほど、Airflow コンポーネントのより多くのローカル ストレージ容量が占有されます。dags/plugins/ に保存するデータが多すぎると、オペレーションが中断し、次のような問題が発生する可能性があります。

  • ワーカーまたはスケジューラがローカル ストレージを使い果たし、コンポーネントのローカル ディスクの容量不足によりワーカーまたはスケジューラが強制排除される。

  • dags/ フォルダと plugins/ フォルダからワーカー、スケジューラへのファイルの同期に時間がかかる。

  • dags/ フォルダと plugins/ フォルダからワーカー、スケジューラにファイルを同期できなくなる。たとえば、2 GB のファイルを dags/ フォルダに保存したものの、Airflow ワーカーのローカル ディスクの空き容量は 1 GB のみだとします。同期中に、ワーカーがローカル ストレージを使い果たしてしまい、同期を完了できません。

DAG とプラグイン フォルダ

DAG の実行エラーを回避するには、Python モジュールに DAG またはプラグインが含まれていなくても、DAG、プラグイン、Python モジュールを dags/ フォルダまたは plugins/ フォルダに保存します。

たとえば、py_file Dataflow パイプラインを参照する DataFlowPythonOperator を使用します。その py_file には DAG やプラグインは含まれていませんが、dags/ または plugins/ フォルダに保存する必要があります。

データフォルダ

data/ フォルダの一部のファイルが特定の Airflow コンポーネントと同期される状況も考えられます。たとえば、以下が行われている間に Cloud Composer が特定のファイルを初めて読み込もうとすると、次のようになります。

  • DAG の解析: DAG の解析中にファイルが初めて読み取られると、Cloud Composer は DAG を解析するスケジューラとファイルを同期します。

  • DAG の実行: DAG の実行中にファイルが初めて読み取られると、Cloud Composer はその実行を行っているワーカーとファイルを同期します。

Airflow コンポーネントのローカル ストレージは限られているため、ダウンロードしたファイルを削除してコンポーネントのディスク容量を空けることを検討してください。同じファイルを 1 つの Airflow ワーカーにダウンロードする同時タスクがある場合、ローカル ストレージの使用量も一時的に増加する場合があります。

ログフォルダ

logs/ フォルダは、Cloud Storage API を使用して Airflow ワーカーから環境のバケットに同期されます。

Cloud Storage API の割り当ては移動したデータの量によって計算されるため、システムが実行する Airflow タスクの数によって Cloud Storage API の使用量が増加する可能性があります。実行するタスクが多いほど、ログファイルが大きくなります。

ウェブサーバーとの同期

plugins/ フォルダは、ウェブサーバーに自動的に同期されるため、Airflow UI でプラグインを読み込むことができます。Cloud Composer 3 では、環境のバケットからファイルを削除しなくても、必要に応じて ウェブサーバー プラグインを無効または有効にできます。

次のステップ