Azure Data Factory ワークフロー オーケストレーション マネージャーのしくみは?

適用対象: Azure Data Factory Azure Synapse Analytics

ヒント

企業向けのオールインワン分析ソリューション、Microsoft Fabric の Data Factory をお試しください。 Microsoft Fabric は、データ移動からデータ サイエンス、リアルタイム分析、ビジネス インテリジェンス、レポートまで、あらゆるものをカバーしています。 無料で新しい試用版を開始する方法について説明します。

Note

ワークフロー オーケストレーション マネージャーは Apache Airflow を利用しています。

Note

Azure Data Factory 用のワークフロー オーケストレーション マネージャーは、オープンソースの Apache Airflow アプリケーションに依存しています。 Airflow のドキュメントとその他のチュートリアルについては、Apache Airflow のドキュメントまたはコミュニティのページを参照してください。

Azure Data Factory のワークフロー オーケストレーション マネージャーでは、Python ベースの有向非巡回グラフ (DAG) を使用してオーケストレーション ワークフローを実行します。 この機能を使用するには、Azure Blob Storage で DAG とプラグインを提供する必要があります。 コマンド ライン インターフェイス (CLI) またはソフトウェア開発キット (SDK) を使用して ADF から Airflow UI を起動して、DAG を管理できます。

ワークフロー オーケストレーション マネージャー環境を作成する

次の手順では、ワークフロー オーケストレーション マネージャー環境をセットアップして構成します。

前提条件

Azure サブスクリプション:Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。 既存の Data Factory を、ワークフロー オーケストレーション マネージャー プレビューがサポートされているリージョンで作成または選択します。

環境の作成手順

  1. 新しいワークフロー オーケストレーション マネージャー環境を作成します。 [管理] ハブ ->[Airflow (プレビュー)] ->[+ 新規] を選択して新しい Airflow 環境を作成する

    新しいマネージド Apache Airflow 環境の作成方法を示すスクリーンショット。

  2. 詳細を指定する (Airflow の構成)

    ワークフロー オーケストレーション マネージャー環境の詳細を示すスクリーンショット。

    重要

    基本認証を使用する場合は、この画面で指定したユーザー名とパスワードを覚えておいてください。 後でワークフロー オーケストレーション マネージャー UI にログインするために必要になります。 既定のオプションは Microsoft Entra ID で、Airflow 環境用のユーザー名とパスワードを作成する必要はありませんが、その代わりに、Azure Data Factory にログイン済みのユーザーの資格情報を使用して DAG にログインし、監視します。

  3. 環境変数は、任意のコンテンツまたは設定を保存および取得するための、Airflow 内部の単純キー値ストアです。

  4. 要件は、Python ライブラリをプレインストールするために使用できます。 これらは後で更新することもできます。

DAG のインポート

次の手順では、ワークフロー オーケストレーション マネージャーに DAG をインポートする方法について説明します。

前提条件

アクセス可能なストレージ アカウントにサンプル DAG をアップロードする必要があります (dags フォルダーの下にあります)。

注意

プレビュー期間中、仮想ネットワークの背後にある Blob Storage はサポートされていません。
dags をインポートする場合、storageLinkedServices の KeyVault 構成はサポートされません。

Apache Airflow v2.x DAG のサンプルApache Airflow v1.10 DAG のサンプル

インポートする手順

  1. (セットアップした Airflow 環境に応じて、v2.x または v1.10 のいずれかの) 内容をコピーし、tutorial.py という名前の新しいファイルに貼り付けます。

    tutorial.py を BLOB ストレージにアップロードします。 (ファイルを BLOB にアップロードする方法)

    注意

    それらを Airflow 環境にインポートするには、dags および plugins という名前のフォルダーを含むディレクトリ パスを BLOB ストレージ アカウントから選択する必要があります。 プラグインは必須ではありません。 dags という名前のコンテナーを作成し、すべての Airflow ファイルをその中にアップロードすることもできます。

  2. [管理] ハブで [Airflow (プレビュー)] を選択します。 次に、以前に作成した Airflow 環境にマウス ポインターを合わせて [ファイルのインポート] を選択し、すべての DAG と依存関係を Airflow 環境にインポートします。

    [管理] ハブでのファイルのインポートを示すスクリーンショット。

  3. 前提条件に記載されているアクセス可能なストレージ アカウントへの新しいリンク サービスを作成します (または、独自の DAG が既にある場合は既存のものを使用します)。

    新しいリンク サービスの作成方法を示すスクリーンショット。

  4. DAG をアップロードしたストレージ アカウントを使用します (前提条件を確認してください)。 接続をテストし、[作成] を選択します。

    いくつかのリンク サービスの詳細を示すスクリーンショット。

  5. サンプル SAS URL を使用している場合は airflow を参照して選択するか、DAG ファイルがある dags フォルダーを含むフォルダーを選択します。

    注意

    このインターフェイスを使用して、DAG とその依存関係をインポートできます。 それらを Airflow 環境にインポートするには、dags および plugins という名前のフォルダーを含むディレクトリ パスを BLOB ストレージ アカウントから選択する必要があります。 プラグインは必須ではありません。

    ファイルのインポート時のストレージの参照を示すスクリーンショット。

    Airflow での参照を示すスクリーンショット。

    ファイルのインポート時のインポートを示すスクリーンショット。

    DAG のインポートを示すスクリーンショット。

注意

プレビュー期間中は、DAG のインポートに数分かかる場合があります。 通知センター (ADF UI のベル アイコン) を使用して、インポート状態の更新を追跡できます。

DAG のインポートの問題のトラブルシューティング

  • 問題: DAG のインポートに 5 分以上かかります。対策: 1 回のインポートでインポートする DAG のサイズを小さくします。 これを実現する 1 つの方法は、DAG の数を減らした複数の DAG フォルダーを複数のコンテナーにまたがって作成することです。

  • 問題: Airflow UI にサインインすると、インポートされた DAG が表示されません。 対策: Airflow UI にサインインし、DAG 解析エラーがないかどうか確認します。 これは、互換性のないコードが DAG ファイルに含まれている場合に発生する可能性があります。 問題のある正確な行番号とファイルは Airflow UI を使用して確認できます。

    DAG のインポートの問題を示すスクリーンショット。

DAG の実行を監視する

Airflow DAG を監視するには、以前に作成したユーザー名とパスワードを使用して Airflow UI にサインインします。

  1. 作成された Airflow 環境を選択します。

    作成された Airflow 環境を示すスクリーンショット。

  2. Airflow 統合ランタイムの作成時に指定したユーザー名とパスワードを使用してサインインします。 (必要に応じて、Airflow 統合ランタイムを編集してユーザー名またはパスワードをリセットできます)

    Airflow 統合ランタイムの作成時に指定したユーザー名とパスワードを使用したサインインを示すスクリーンショット。

Airflow 環境から DAG を削除する

Airflow バージョン 1.x を使用している場合、すべての Airflow 環境 (IR) にデプロイされている DAG を削除します。2 つの異なる場所で DAG を削除する必要があります。

  1. Airflow UI から DAG を削除する
  2. ADF UI で DAG を削除する

注意

これは現在のパブリック プレビュー期間中の問題であり、修正を予定しています。