すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:ジョブレベルのリソース分析のベストプラクティス

最終更新日:Jan 20, 2025

このトピックでは、MaxComputeコンソールのジョブ分析機能を使用して、ジョブレベルのリソースを分析し、一般的なシナリオでのジョブのリソース消費について学習する方法について説明します。 このトピックでは、ジョブの実行が遅い場合にジョブ実行時の問題を処理する方法についても説明します。

背景情報

ジョブが長時間実行され、LogViewを使用して原因を特定できない場合、または完了したジョブのランタイムが期待どおりでない場合は、問題がリソース不足によるものかどうかを分析する必要があります。

MaxComputeはジョブ分析機能を提供します。 データ開発者と管理者は、MaxComputeコンソールのジョブ分析ページで、ジョブの履歴と実行中のジョブのリソース消費情報を表示できます。

注意事項

単純な評価方法は、以下の典型的な場合に用いられる。 実際の業務実装プロセスでは、実際の状況に基づいてジョブ属性を調整し、調整の効果に注意することをお勧めします。

シナリオ1: 予約済みサブスクリプションリソースが不十分なため、ジョブの実行が遅くなります

会社は、ジョブのサブスクリプション課金方法の50計算ユニット (CU) を購入しました。 これらのリソースでは、毎日10バッチ以上のジョブ (1,000ジョブ以上) が定期的に実行されています。

データ開発エンジニアは、インスタンスIDがxxxxxxxxxxxx 20240717020015831のジョブの実行時間が長すぎて、後続の処理に影響を与えることを発見しました。 エンジニアは次の操作を実行して、ジョブの詳細を表示します。MaxComputeコンソールにログインします。 左側のナビゲーションウィンドウで、[ワークスペース] > [ジョブ] を選択します。 [ジョブ] ページでジョブを検索し、[操作] 列の [分析] をクリックします。image

image

ジョブのリソース消費チャートは、50のCUすべてが占有されており、ほとんどのコンピューティングリソースが現在のジョブによって使用されていることを示しています。 ただし、ジョブがクォータレベルで待機しているCUの数は、リソースが限られているために高いままです。 これは、予約されたコンピューティングリソースがすべてのジョブの要求をタイムリーに処理するには不十分であることを示します。 現在のジョブに割り当てられているコンピューティングリソースも不足しています。 その結果、ジョブの実行が遅くなります。

上記の問題を処理するには、次のいずれかの方法を使用します。

  • リソースを必要とするリクエストが多い場合に予約リソースが不足しないようにジョブの開始時間を変更できるかどうかを評価します。

  • ジョブ要求のリソースを調整できない場合は、サブスクリプションリソースの数を増やす必要があります。 [コスト最適化] ページに移動し、ジョブの完了予定時刻を指定してから、推奨されるリソース割り当てプランを表示します。

シナリオ2: ジョブは、リソースの競合により長期間リソースを待機します。

会社は、ジョブのサブスクリプション課金方法を50 CU購入しました。 これらのリソースでは、毎日10バッチ以上のジョブ (1,000ジョブ以上) が定期的に実行されています。

データ開発エンジニアは、インスタンスIDがxxxxxxxxxxxx 20240717020020365のジョブの実行時間が長すぎて、後続の処理に影響を与えることを発見しました。 エンジニアは次の操作を実行して、問題の原因を特定します。MaxComputeコンソールにログインします。 左側のナビゲーションウィンドウで、[ワークスペース] > [ジョブ] を選択します。 [ジョブ] ページでジョブを検索し、[操作] 列の [分析] をクリックします。 ジョブ情報は、ジョブが21分17秒間実行されているが、半分以上の時間がリソースの待機に費やされていることを示しています。image

image

ジョブのリソース消費チャートは、ジョブが送信されてから最初の13分以内にジョブがリソースを待機しているが、クォータレベルでのリソース使用量が上限に達していることを示しています。 これは、他のジョブがすべてのリソースを占有することを示します。 その結果、ジョブは実行するコンピューティングリソースを取得できません。 13分後、ジョブはゆっくりとリソースを取得しますが、クォータレベルでのリソース使用量は上限に達しません。

リソース消費チャートのx軸の時点をクリックすると、実行中のすべてのジョブのリソース割り当てや待機中のすべてのジョブのリソース割り当てなど、その時点でのクォータレベルのリソース割り当てが表示されます。 次の図は、現在のジョブがリソースを取得せず、優先度9の3つのジョブがコンピューティングリソースを消費しており、10:04に5つのジョブがリソースを待機していることを示しています。image

[待機ジョブのリソース割り当て] のカラーバーをクリックして、リソースを待機しているジョブのリストを表示します。 インスタンスIDが20240717020015831gza7jdf21uv3のジョブが, その時点で大量のリソースを占有していることを次の図に示します。image

ジョブのリソース消費量は、その時点でジョブが大量のコンピューティングリソースを占有していることを示します。image

上記の問題を処理するには、次のいずれかの方法を使用します。

  • リソースの競合によるリソース不足を回避するために、ジョブの開始時間を変更できるかどうかを評価します。

  • ジョブの優先度を調整できるかどうかを評価します。 複数のジョブを同時に開始する必要がある場合は、重要なジョブの優先順位を上げることができます。 これにより、複数のジョブが同時にリソースを要求する場合に、優先度の高いジョブに優先的にリソースが割り当てられる。

  • サブスクリプションリソースの数を増やします。 [コスト最適化] ページに移動し、ジョブの完了予定時刻を指定してから、推奨されるリソース割り当てプランを表示します。

データ開発エンジニアは、ノードのタスク優先度を0に変更します。 調整後、ジョブがリソースを待つ時間が減少し、ジョブは、コンピューティングのために予約されたコンピューティングリソースの50% を迅速に取得する。 ジョブの合計実行時間は21分から6分に短縮されます。