Cloud Storage に保存されるデータ

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

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

Cloud Composer は、ワークフロー(DAG)のソースコードとその依存関係を Cloud Storage の特定のフォルダに保存し、Cloud Storage FUSE を使用して Cloud Composer 環境の Airflow インスタンスにフォルダをマッピングします。

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

フォルダ説明Storage パスマッピングされたディレクトリ
DAG 環境の DAG を保存します。このフォルダ内の DAG のみが環境にスケジュールされます。 gs://bucket-name/dags /home/airflow/gcs/dags
プラグイン カスタム プラグインを保存します。カスタムのインハウス Airflow 演算子、フック、センサー、インターフェースなどです。 gs://bucket-name/plugins /home/airflow/gcs/plugins
データ タスクが生成して使用するデータを保存します。このフォルダは、すべてのワーカーノードにマウントされます。 gs://bucket-name/data /home/airflow/gcs/data
ログ タスクの Airflow ログを保存します。ログは Airflow ウェブ インターフェースでも利用できます。 gs://bucket-name/logs /home/airflow/gcs/logs

容量に関する考慮事項

DAG とプラグイン: Cloud Composer は、デフォルトでは、環境、dags/ フォルダ、plugins/ フォルダ用に 100 GB の容量をプロビジョニングします。

ワークフローの失敗を避けるためには、Python モジュールに DAG またはプラグインが含まれていなくても、DAG、プラグイン、Python モジュールを dags/ または plugins/ フォルダに保存します。たとえば、DataFlowPythonOperator が参照する py_file の場合は、dags/ または plugins/ に保存する必要があります。

データとログ: data/ フォルダと logs/ フォルダは容量制限の対象外です。

ウェブサーバーのエラーを回避するには、ウェブサーバーが DAG(未実行)を解析するのに必要なデータが dags/ フォルダに存在することを確認してください。存在しない場合は、ウェブサーバーがデータにアクセスできないか、Airflow ウェブ インターフェースを読み込めなくなります。

データの同期

Cloud Storage バケットの DAG やプラグインを変更すると、Cloud Composer によってクラスタ内のすべてのノードのデータが同期されます。

Cloud Composer による dags/ フォルダや plugins/ フォルダの同期は、ローカルにコピーすることによって一方向に行われます。一方向に同期されるため、これらのフォルダのローカルの変更は上書きされます。

data/ フォルダや logs/ フォルダは、Cloud Storage FUSE を使用することによって双方向に同期されます。

Cloud Composer 環境では、データはウェブサーバーと同期されません。容量が限られており、ウェブサーバーが DAG を解析するが実行はしないためです。DAG はワーカーによって実行されます。

ガイドライン

  1. ネストされたディレクトリの DAG の ZIP アーカイブにカスタム Python ライブラリを配置します。ライブラリは DAG ディレクトリの最上位には配置しないでください。

    Airflow が dags/ フォルダをスキャンするとき、DAG フォルダの最上位にある Python モジュールの DAG、および最上位の dags/ フォルダに配置された ZIP アーカイブの最上位にある Python モジュールの DAG のみがチェックされます。部分文字列 airflowDAG の両方を含まない ZIP アーカイブ内の Python モジュールが存在する場合、Airflow は ZIP アーカイブの処理を停止します。Airflow はその時点までに見つかった DAG のみを返します。

  2. フォールト トラレンスのために、同じ Python モジュール内に複数の DAG オブジェクトを定義しないでください。

  3. subDAGs を最上位オブジェクトとして定義しないでください。

    一般に、最上位 DAG としては、dags/ ディレクトリ内のモジュールのグローバル名前空間にある DAG オブジェクトが選択されます。最上位オブジェクトとして定義されているすべての subDag は、subDag を埋め込む他の DAG のスケジュールに加え、独自のスケジュールで実行されます。

  4. DAG 解析に必要なファイルは、data/ ディレクトリではなく、dags/ ディレクトリに配置します。data/ ディレクトリはウェブサーバーでマウントされません。

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...