Logview は、MaxCompute ジョブ向けのブラウザベースのツールです。ジョブ提出後に、ジョブの表示やデバッグに使用できます。Logview URL を開くと、ジョブのステータス確認、タスク結果の検査、障害の診断が可能です。
各 Logview URL は、ジョブ提出後 7 日で期限切れになります。期限切れになる前に、URL を保存するか、必要な結果をエクスポートしてください。
Logview の仕組み
MaxCompute がジョブを受信すると、一意の Logview URL が生成されます。URL をブラウザに貼り付け、Enter キーを押すと、ジョブの Logview ページが開きます。
Logview ページには、次の 2 つのセクションがあります。
-
ODPS Instance — 提出されたジョブのインスタンスレベルの詳細 (キューの位置や現在のステータスなど) を表示します。
-
ODPS Tasks — ジョブを構成する個々のタスクと、その結果および実行の詳細を表示します。
ODPS インスタンスセクション
ODPS インスタンスセクションには、次のフィールドが表示されます。
| フィールド | 説明 |
|---|---|
| URL | このインスタンスの Logview URL |
| Project | ジョブが属する MaxCompute プロジェクト |
| InstanceID | このインスタンスの一意の識別子 |
| Owner | ジョブを提出したアカウント |
| StartTime | ジョブの開始時刻 |
| EndTime | ジョブが終了したとき |
| Status | ジョブの現在のステータス |
ジョブのステータス値
[ステータス] の値をクリックして、キューの詳細を表示します。以下の表では、各ステータスと実行する操作について説明しています。
| ステータス | 意味 | 対応策 |
|---|---|---|
| Waiting | ジョブは MaxCompute によって処理中であり、ジョブスケジューラにはまだ到達していません。 | アクションは不要です。ジョブは自動的に進行します。 |
| Waiting List: *n* | ジョブはジョブスケジューラでキューに入っています。*n* はキュー内の位置です。 | キューの位置を監視してください。継続的に高い位置にある場合、リソース競合を示している可能性があります。ジョブの優先度を調整するか、オフピーク時にスケジューリングすることを検討してください。 |
| Running | ジョブはジョブスケジューラで実行中です。 | アクションは不要です。 |
| Terminated | ジョブは終了しました。キュー情報は利用できません。 | ODPS タスクセクションの [結果] 列と [標準エラー] 列を確認して、ジョブが成功したか失敗したかを判断します。 |
キューの詳細
「[ステータス]」の値(「[終了済み]」以外)をクリックすると、以下のキュー フィールドが表示されます:
| フィールド | 説明 |
|---|---|
| Sub Status | ジョブの現在のサブステータス |
| WaitPos | キュー内の位置。0 はジョブが実行中であることを意味し、- はジョブがまだジョブスケジューラに到達していないことを意味します。 |
| QueueLength | ジョブスケジューラキュー内のジョブの総数 |
| Total Priority | システムによって割り当てられた実行優先度 |
| SubStatus History | アイコンをクリックすると、ステータスコード、説明、開始時刻、期間を含む完全なステータス履歴が表示されます。一部のバージョンでは利用できません。 |
ODPS タスクセクション
ODPS タスクセクションには、インスタンスに関連付けられたすべてのタスクがリスト表示されます。各行は1つのタスクを表し、次の列が含まれます。
| 列 | 説明 |
|---|---|
| Name | タスク名 |
| Type | タスクタイプ |
| Status | タスクの現在のステータス |
| Result | アイコンをクリックすると、タスク結果が表示されます (タスク完了後に利用可能)。 |
| Detail | アイコンをクリックすると、実行詳細が表示されます (実行中および完了したタスクの両方で利用可能)。 |
| StartTime | タスクの開始時刻 |
| EndTime | タスクの終了時刻 |
| Latency (s) | 総実行時間 (秒) |
| TimeLine | タスクの視覚的なタイムライン |
タスク結果の表示
タスクが完了すると、[結果] 列のアイコンをクリックして出力を表示します。SELECT 文の場合、結果セットはテーブルに表示されます。
実行詳細の表示
[詳細] 列のアイコンをクリックして、タスク詳細ダイアログを開きます。このダイアログには、MaxCompute がタスクを実行するために使用する内部ジョブ階層が表示されます。
ジョブ階層
MaxCompute は、ジョブを次のレイヤーに分解します。
-
MaxCompute ジョブは、1 つ以上の Fuxi ジョブで構成されます。複雑な SQL ジョブは、複数の Fuxi ジョブを生成し、それぞれがジョブスケジューラに提出される場合があります。
-
各 Fuxi ジョブは、1 つ以上の Fuxi タスクで構成されます。シンプルな MapReduce ジョブは、マップタスク (M1) とリデュースタスク (R2) の 2 つの Fuxi タスクを生成します。複雑な SQL ジョブは、さらに多くのタスクを生成する可能性があります。
-
各 Fuxi タスクは、1 つ以上の Fuxi インスタンス (ノードあたり 1 インスタンス) で構成されます。入力データが増加するにつれて、MaxCompute は追加のノードを開始して作業を並列化します。
Fuxi タスクの命名
Fuxi タスク名は、タスクタイプとその依存関係の両方をエンコードします。
-
先頭の文字はタスクタイプを識別します。
Mはマップ、Rはリデュース、Jは結合です。 -
続く数字は、タスク ID とその依存関係をエンコードします。例:
-
R5_4— このリデュースタスクは、タスク J4 が完了した後にのみ実行されます。 -
J4_1_2_3— この結合タスクは、タスク M1、M2、M3 が完了した後にのみ実行されます。
-
"[I/O レコード] 列には、各 Fuxi タスクの入力および出力レコード数が表示されます。
Fuxi インスタンスの詳細
個別の Fuxi インスタンスを確認するには、[詳細の表示] 列のアイコンをクリックするか、Fuxi タスク行をダブルクリックします。
ダイアログの下部では、Fuxi インスタンスがステージごとにグループ化されます。[失敗] タブをクリックすると、エラーが発生したノードを表示できます。各インスタンスの標準出力およびエラー出力を表示するには、[StdOut] および [StdErr] 列を使用します。送信されたジョブで明示的に記述された出力もここに表示されます。
トラブルシューティング
エラーのあるタスク
タスクが失敗した場合:
-
ODPS タスクセクションで、失敗したタスクを見つけます。
-
[結果] 列のアイコンをクリックして、エラーメッセージを表示します。
-
あるいは、[詳細] ダイアログを開き、[失敗] タブをクリックし、失敗した Fuxi インスタンスの [StdErr] 列にあるアイコンをクリックして、詳細情報を確認できます。
データスキュー
データスキューは、レコードが Fuxi インスタンス間で不均一に分散されている場合に発生します。一部のインスタンスが他のインスタンスよりもはるかに多くのデータを処理するため、タスク全体が遅くなります。
タスク完了後にデータスキューを確認するには:
-
タスクの[詳細]ダイアログを開きます。
-
「[概要]」タブをクリックします。
-
出力レコードの分布を確認します。例:
output records: R2_1_Stg1: 199998999 (min: 22552459, max: 177446540, avg: 99999499)
max 値が min 値よりも著しく大きい場合、データスキューが存在します。上記の例では、最も多くのレコードを持つインスタンスが、最も少ないインスタンスの約 8 倍のレコードを処理しました。一般的な原因は、1 つの値が他の値よりもはるかに頻繁に現れる列での JOIN です。