DataWorks には、コードがデプロイされてから 10 分後にインスタンスを生成する即時インスタンス生成機能があります。 オペレーションセンターでノード依存関係をリアルタイムに表示できます。

即時インスタンス生成ルール

  • ノードグループは、即時インスタンス生成をサポートしていません。
  • ノードはいつでもコミットおよびデプロイできます。 ただし、23:30~24:00 の時間は、即時インスタンス生成機能は有効になりません。
  • ノードに対して 1 つ以上のインスタンスが生成されており、そのインスタンス生成方法を [翌日] から [デプロイ直後] に変更した場合 、ノードのインスタンス生成は当日に有効になります。 実行されたインスタンスは保持されます。 実行されていないインスタンスは削除され、変更されたノードは、デプロイされた直後に生成された新しいインスタンスに置き換えられます。
  • 祖先ノードのインスタンス生成方法が翌日である場合、インスタンス生成方法がデプロイ直後である子孫ノードは分離され、スケジュールどおりに実行できません。
  • 祖先ノードと子孫ノードの両方のインスタンス生成方法がデプロイ直後である場合、通常、実行予定時刻がノードのデプロイ時間よりも 10 分遅いノードに対してインスタンスが生成されます。 ノードの実行予定時刻がノードのデプロイ後 10 分以内の場合、期限切れ状態のインスタンスが生成され、子孫ノードをスケジュールどおりに実行できます。
たとえば、ノードは 18:00 に実行するようにスケジュールされています。 スケジュールされた時刻を 17:00 に変更し、インスタンス生成方法を [デプロイ直後] に変更します。 16:50 より前にノードをデプロイすると、ノードに対してインスタンスが生成されます。 16:50 より後にノードをデプロイすると、[期限切れ] 状態のインスタンスが生成されます。ノード情報の表示

インスタンス生成方法

現在、ノードに対して、2 つのインスタンス生成方法が使用可能です。
  • 翌日

    23:30 より前にノードをコミット、デプロイすると、インスタンスは翌日以降に生成されます。 23:30~00:00 にノードをコミット、デプロイすると、インスタンスは明後日以降に生成されます。

  • デプロイ直後
    インスタンスは、コードをデプロイしてから 10 分後に生成されます。
    ノードの実行予定時刻が、コードをデプロイする時刻よりも 10 分遅い場合、ノードは正しく実行できます。

即時インスタンス生成方法を使用するノードの作成

  1. ワークフローを作成します。
    1. DataWorks コンソールにログインします。 左側のナビゲーションウィンドウで [ワークスペース] をクリックします。 ワークスペースページで、ターゲットのワークスペースを探し、[操作] 列の [データ分析] をクリックします。
    2. [データ分析] タブで、アイコンの作成アイコンの上にポインターを合わせ、[ワークフロー] をクリックします。
    3. 表示される [ワークフローの作成] ダイアログボックスで、[ワークフロー名] および [説明] を設定します。
    4. [作成] をクリックします。
  2. 左側のナビゲーションウィンドウで、作成したワークフローをクリックし、 [MaxCompute] を右クリックして、[作成] > [ODPS SQL] の順にクリックします。
  3. 表示される [ノードの作成] ダイアログボックスで、[ノード名] および [ロケーション] を設定し、[コミット] をクリックします。
  4. 表示されるノード構成タブで、コードを編集します。 次に、右側のナビゲーションウィンドウの [プロパティ] タブをクリックし、[インスタンス化の開始][デプロイ直後] に設定します。

シナリオ

通常、即時インスタンス生成機能は、次のシナリオで使用されます。祖先ノードのインスタンス生成方法は翌日であるが、子孫ノードのインスタンス生成方法がデプロイ直後である場合です。 次の図は、これらのノード間の依存関係を示しています。即時インスタンス生成
このシナリオには、次の状況が含まれます。
  • 祖先ノードと子孫ノードを両方とも当日新たに作成する場合。
    • 日単位でスケジュールされた子孫ノード: インスタンスは、ノードがデプロイされた直後に生成されます。 このインスタンスは、祖先ノードとは無関係です。 このノードがその最後のサイクルのインスタンスに依存するように設定されている場合、インスタンス生成は当日に影響を受けません。 このノードは、カスタムノードの最後のサイクルの既存インスタンスにも依存します。
    • 時間または分単位でスケジュールされた子孫ノード: このノードが最後のサイクルのインスタンスに依存するように設定されている場合、最初のインスタンスを除くすべての生成されたインスタンスに、依存する最後のサイクルのインスタンスがあります。
    • 週または月単位でスケジュールされた子孫ノード: ノードがデプロイされた直後にインスタンスが生成されます。 このインスタンスは、祖先ノードとは無関係です。
      このシナリオでは、翌日以降に祖先ノードのインスタンスが生成されます。 子孫ノードに対して即時生成されたインスタンスは分離されます。 これらのインスタンスは当日に実行できません。

      子孫ノードが自身の最後のサイクルのインスタンスに依存する場合、翌日に生成されるインスタンスは、分離され、実行されていない前日の最後のサイクルのインスタンスに依存します。 翌日に祖先ノードに対してインスタンスが生成される場合でも、子孫ノードは実行されません。

    結論: 新しいノードが即時インスタンス生成方法を使用し、その最後のサイクルのインスタンスに依存している場合、最初のインスタンスを除くすべての生成されたインスタンスに、依存する最後のサイクルのインスタンスがあります。 しかし、ノードはすべてのインスタンスを実行できないため、スケジュールどおりに実行できません。

  • 日単位でスケジュールされた祖先ノードに対してインスタンスが生成されており、即時インスタンス生成方法を使用する子孫ノードを当日に作成する場合。
    • 日単位でスケジュールされた子孫ノード: インスタンスが生成され、祖先ノードの既存インスタンスに依存します。 このノードがその最後のサイクルのインスタンスに依存するように設定されている場合、インスタンス生成は当日に影響を受けません。
    • 時間または分単位でスケジュールされた子孫ノード: インスタンスが生成され、祖先ノードの既存インスタンスに依存します。 このノードが最後のサイクルのインスタンスに依存するように設定されている場合、最初のインスタンスを除くすべての生成されたインスタンスに、依存する最後のサイクルのインスタンスがあります。
    • 週または月単位でスケジュールされた子孫ノード: インスタンスが生成され、祖先ノードの既存インスタンスに依存します。 このノードがその最後のサイクルのインスタンスに依存するように設定されている場合、インスタンス生成は当日に影響を受けません。

    結論: 最後のサイクルのインスタンスに依存するように設定されたノードを実行するために、ノードのインスタンスが前日に正しく実行されることを確認する必要があります。

  • 日単位でスケジュールされた祖先ノードのインスタンスが生成されており、時間単位でスケジュールされた 2 つの子孫ノードを、即時インスタンス生成方法を使用する、日単位でスケジュールされた子孫ノードに変更する場合。
    • 変更前: 日単位でスケジュールされた祖先ノードの子孫ノードはすべて、時間単位でスケジュールされ、翌日インスタンス生成方法を使用します。翌日
    • 更新: 時間単位でスケジュールされた 2 つの子孫ノードを、日単位でスケジュールされた子孫ノードに変更します。 インスタンス生成方法を [翌日] から [デプロイ直後] に変更します。
    • 変更後のインスタンス生成とノード依存関係: 日単位でスケジュールされた新しい子孫ノードを、破線で示した時間にコミット、デプロイすると仮定します。 時間単位でスケジュールされた元の 2 つの子孫ノードがこの時間の後 10 分以内に実行するようにスケジュールされている場合、生成されたインスタンスは削除されます。 代わりに、日単位でスケジュールされた新しい子孫ノードに対してインスタンスが生成されます。 時間単位でスケジュールされた元の 2 つのノードの 2 つの子孫ノードは、変更後の日単位でスケジュールされた新しいノードに依存します。 新しいノードがその最後のサイクルのインスタンスに依存するように設定されている場合、そのノードに対して生成されたインスタンスは、破線で示した時間の 1 時間前にスケジュールされた元の 2 つのノードの最後のサイクルのインスタンスに依存します。変更後
    • 変更後の当日のインスタンス: 新しいノードをデプロイする前に、時間単位でスケジュールされた元の 2 つのノードのインスタンスが生成されます。 新しいノードのデプロイ後、日単位でスケジュールされた新しいノードに対してインスタンスが生成されます。

    結論: 新しいノードは、元のノードの依存関係を引き継ぎます。 ただし、当日のインスタンス生成は影響を受けます。