定期スケジューリングの特殊なシナリオは、ノード依存ループとノードの隔離です。どちらのシナリオもタスクスケジューリングで問題を引き起こす可能性があります。このトピックでは、これら 2 つのシナリオと解決策について説明します。
シナリオ 1:ノード依存ループ
原因と解決策
ノードが他のノードの先祖ノードとして機能するだけでなく、1 つ以上の子孫ノードにも依存している場合、ノード依存ループが形成されます。この場合、ワークフローを分析し、ループの原因となっている依存関係をできるだけ早く削除する必要があります。
たとえば、先祖ノードが同じスケジューリングサイクルで子孫ノードによって生成されたテーブルのデータに依存し、データ処理結果をテーブルに書き込む場合、ノード依存ループが形成されます。この場合、ビジネスシナリオを確認し、依存関係を変更して、先祖ノードが前のスケジューリングサイクルで子孫ノードによって生成されたテーブルのデータに依存できるようにします。
サンプルシナリオ: ノード A が実行されてテーブル C のデータがクエリされ、テーブル A が生成されます。ノード B はテーブル A のデータをクレンジングし、取得したデータをテーブル B に書き込みます。次に、ノード C はテーブル B のデータをクレンジングし、取得したデータをテーブル C に書き込みます。この場合、ノード依存ループが形成されます。次の図は、ノード依存ループを示しています。
解決策: ワークフローを分析し、ループの原因となっている依存関係を削除します。先祖ノードに前のスケジューリングサイクルで子孫ノードによって生成されたデータをクレンジングさせたい場合は、サイクル間スケジューリング依存関係を構成できます。次の図に示すサンプルシナリオでは、ノード A とノード C の間にサイクル間スケジューリング依存関係を構成できます。
監視とアラート
DataWorks は、自動トリガーされたタスクを定期的に監視およびスキャンするための組み込みアラートルールを提供します。これにより、自動トリガーされたタスクをスケジュールどおりに実行し、自動トリガーされたタスクのインスタンスを生成できます。例外が発生した場合、アラートがトリガーされます。ノード依存ループが形成されると、アラート通知が自動的に送信されます。できるだけ早くアラートを処理することをお勧めします。
DataWorks は毎日 09:00、12:00、16:00、20:00、22:00 に自動トリガーされたタスクをスキャンします。例外が発生した場合、DataWorks はアラート通知を送信します。ただし、スキャンの開始 10 分前に例外が発生した場合、その例外は現在のスキャンのスキャン範囲外となり、次のスキャンまで検出されません。
ノード依存ループのアラートルールは、DataWorks によって提供される組み込みルールです。アラートルールがトリガーされると、ショートメッセージまたはメールでノードオーナーにアラート通知が送信されます。[ルール管理] ページでアラート連絡先を変更できます。詳細については、「カスタムアラートルールを作成する」をご参照ください。
シナリオ 2:ノードの隔離
定義
隔離されたノードとは、先祖ノードを持たないノードです。[自動トリガーノード] ページまたは [自動トリガーインスタンス] ページで隔離されたノードを右クリックし、[先祖ノードの表示] を選択すると、先祖ノードは表示されません。隔離されたノードは自動的にスケジュールできません。複数のノードが隔離されたノードに依存している場合、ビジネスに深刻な影響を与える可能性があります。隔離されたノードが識別されると、アラート通知が自動的に送信されます。できるだけ早くアラートを処理することをお勧めします。
DataWorks では、ワークスペースのルートノードを除き、作成した各自動トリガーノードには先祖ノードが必要です。自動トリガーノードの先祖ノードを構成しない場合、自動トリガーノードは期待どおりにスケジュールできません。
原因と解決策
原因 | 説明 | 解決策 |
自動トリガーノードとその先祖ノードのインスタンス生成モードが異なります。 | 自動トリガーノードは、[インスタンス生成モード] パラメーターが [デプロイ直後] に設定されて新しく作成されます。このノードは、[インスタンス生成モード] パラメーターが [翌日] に設定されている新しく作成された別のノードにのみ依存します。この場合、現在の日に先祖ノードのインスタンスが生成されないため、現在の自動トリガーノードは隔離されたノードになります。 | 先祖ノードの [インスタンス生成モード] パラメーターを変更し、先祖ノードを再度デプロイします。詳細については、「シナリオ 3:自動トリガータスクとその先祖タスクに異なるインスタンス生成モードを構成する」をご参照ください。 |
自動トリガーノードの先祖ノードが、指定されたスケジューリングの有効期間外です。 | DataWorks では、指定されたスケジューリングの有効期間外のノードのインスタンスは生成されません。自動トリガーノードが 1 つのノードにのみ依存し、先祖ノードが指定されたスケジューリングの有効期間外の場合、自動トリガーノードは隔離されたノードになります。 | 先祖ノードの構成タブの [プロパティ] タブの [スケジューリング時間] セクションで、[有効期間] パラメーターを変更します。 |
自動トリガーノードの先祖ノードの出力が変更されています。 | 自動トリガーノードは 1 つのノードにのみ依存します。先祖ノードのビジネスが変更されると、先祖ノードの出力もそれに応じて変更されます。その結果、自動トリガーノードとその先祖ノード間の依存関係が無効になり、自動トリガーノードは隔離されたノードになります。 | 自動トリガーノードのスケジューリング依存関係を再構成します。 |
自動トリガーノードにワークスペース間の依存関係が構成されていますが、自動トリガーノードの先祖ノードが存在するワークスペースで定期スケジューリングが有効になっていません。 | 自動トリガーノードが 1 つのノードにのみ依存し、自動トリガーノードとその先祖ノードが異なるワークスペースに存在し、先祖ノードが存在するワークスペースで定期スケジューリングが有効になっていない場合、自動トリガーノードは隔離されたノードになります。 | ワークスペースのオーナーに連絡して定期スケジューリングを有効にするか、ワークスペース間の依存関係を削除します。 |
中間タスクのスケジューリング時間が、指定されたデータバックフィルの期間内ではありません。 | アップストリームとダウンストリームのスケジューリング依存関係が構成されている中間タスクのスケジューリング時間がデータバックフィルの期間内にない場合、中間タスクを実行するノードの子孫ノードが隔離されたノードになる可能性があります。 サンプルシナリオ:
| 同じ指定期間内に中間タスクのデータをバックフィルします。詳細については、「データとデータバックフィルインスタンスをバックフィルして表示する (新バージョン)」をご参照ください。 この例では、 |
監視とアラート
DataWorks は、毎晩 [自動トリガーノード] の [自動トリガーノードインスタンス] を生成します。自動トリガーノードインスタンスは翌日実行するようにスケジュールされています。DataWorks は、自動トリガーノードを定期的に監視およびスキャンするための組み込みアラートルールを提供します。これにより、自動トリガーノードをスケジュールどおりに実行し、自動トリガーノードのインスタンスを生成できます。例外が発生した場合、アラートがトリガーされます。隔離されたノードが識別されると、アラート通知が自動的に送信されます。できるだけ早くアラートを処理することをお勧めします。
DataWorks は毎日 09:00、12:00、16:00 に自動トリガーノードをスキャンします。例外が発生した場合、DataWorks はアラート通知を送信します。ただし、スキャンの開始 10 分前に例外が発生した場合、その例外は現在のスキャンのスキャン範囲外となり、次のスキャンまで検出されません。
隔離されたノードのアラートルールは、DataWorks によって提供される組み込みルールです。アラートルールがトリガーされると、ショートメッセージまたはメールでノードオーナーにアラート通知が送信されます。[ルール管理] ページでアラート連絡先を変更できます。詳細については、「カスタムアラートルールを作成する」をご参照ください。
隔離されたノードを表示する
[オペレーションセンター] で、O&M ダッシュボード ページの [ワークベンチの概要] タブの [注目] セクションに移動して、隔離されたノードの数と詳細を表示できます。