このトピックでは、MaxCompute 上の Proxima CE における一般的なタスク失敗について、各エラーの原因と解決策を説明します。
シークフェーズにおける重複するプライマリキー
エラーメッセージ
2019-11-19 22:52:51 M1_job0:0/650/650[100%] R2_1_job0:0/8004/8000(+4 backups)[100%] R3_2_job0:1/12000/12000(+1 backups)[0%]
2019-11-19 22:52:59 M1_job0:0/650/650[100%] R2_1_job0:0/8004/8000(+4 backups)[100%] R3_2_job0:1/12000/12000(+1 backups)[0%]
2019-11-19 22:53:07 M1_job0:0/650/650[100%] R2_1_job0:0/8004/8000(+4 backups)[100%] R3_2_job0:1/12000/12000(+1 backups)[0%]
2019-11-19 22:53:15 M1_job0:0/650/650[100%] R2_1_job0:0/8004/8000(+4 backups)[100%] R3_2_job0:1/12000/12000(+1 backups)[0%]
2019-11-19 22:53:24 M1_job0:0/650/650[100%] R2_1_job0:0/8004/8000(+4 backups)[100%] R3_2_job0:1/12000/12000(+1 backups)[0%]
2019-11-19 22:53:32 M1_job0:0/650/650[100%] R2_1_job0:0/8004/8000(+4 backups)[100%] R3_2_job0:1/12000/12000(+1 backups)[0%]
2019-11-19 22:53:40 M1_job0:0/650/650[100%] R2_1_job0:0/8004/8000(+4 backups)[100%] R3_2_job0:1/12000/12000(+1 backups)[0%]
2019-11-19 22:53:48 M1_job0:0/650/650[100%] R2_1_job0:0/8004/8000(+4 backups)[100%] R3_2_job0:1/12000/12000(+1 backups)[0%]
2019-11-19 22:53:56 M1_job0:0/650/650[100%] R2_1_job0:0/8004/8000(+4 backups)[100%] R3_2_job0:1/12000/12000(+1 backups)[0%]
2019-11-19 22:54:05 M1_job0:0/650/650[100%] R2_1_job0:0/8004/8000(+4 backups)[100%] R3_2_job0:0/12000/12000(+1 backups)[0%]
2019-11-19 22:54:14 M1_job0:0/650/650[100%] R2_1_job0:0/8004/8000(+4 backups)[100%] R3_2_job0:0/12000/12000(+1 backups)[0%]
2019-11-19 22:54:22 M1_job0:0/650/650[100%] R2_1_job0:0/8004/8000(+4 backups)[100%] R3_2_job0:0/12000/12000(+1 backups)[0%]
2019-11-19 22:54:30 M1_job0:0/650/650[100%] R2_1_job0:0/8004/8000(+4 backups)[100%] R3_2_job0:0/12000/12000(+1 backups)[0%]
...
FAILED: ODPS-0123144: Fuxi job failed - WorkerRestart errCode:252,errMsg:kInstanceMonitorTimeout, usually caused by bad udf performance.
CentauriException(code=20005, msg=odps任务运行失败, detailMsg=SeekJobWorker Job running error.)
at com.alibaba.proxima.pipeline.worker.odps.SeekJobWorker.apply(SeekJobWorker.java:90)
at com.alibaba.proxima.pipeline.runner.OdpsPipelineRunner.run(OdpsPipelineRunner.java:40)
at com.alibaba.proxima.pipeline.CentauriPipelineExecutor.execute(CentauriPipelineExecutor.java:30)
at com.alibaba.proxima.CentauriRunner.runWithNormal(CentauriRunner.java:35)
at com.alibaba.proxima.CentauriRunner.main(CentauriRunner.java:208)
最も一般的な原因: ドキュメントテーブルに、同じプライマリキーを持つが値が異なるベクターが含まれています。シークフェーズの Mapper-Reducer1-Reducer2 (MRR) 処理中に、同じプライマリキーを持つすべてのレコードは同じリデューサーにルーティングされます。データが重複排除されていない場合、1 つのリデューサーが他のリデューサーよりもはるかに多くのレコードを処理し、データスキューが発生してリデュースタスクが終了します。
問題の診断方法:
-
失敗した MaxCompute タスクの LogView を開きます。手順については、「LogView を使用してジョブ情報を表示する」をご参照ください。
-
Fuxi タスクモニタリングページで、失敗したインスタンスをフィルターし、対応する StdOut をクリックして標準出力ログを表示します。たとえば、インスタンス
R3_2#48の StdOut ログには、次のような出力が表示されます。[2019-11-19 21:48:38.306215] ---------- Run Task: R3_2#48 ---------- [2019-11-19 21:48:50.571175] total input size is 2327967432708 bytes. [2019-11-19 21:48:50.571175] total input record number is 793592600. Task ID: R3_2_000048 -
あるインスタンスの入力レコード数が他のインスタンスよりもはるかに多い場合は、ご利用のドキュメントテーブルのデータが重複排除されていません。
データを重複排除し、各プライマリキーが単一のベクター値にマッピングされるようにしてください。
検索準備フェーズで GetSmallCategoryDocNum が空を返す
エラーメッセージ
java.lang.NullPointerException
at com.alibaba.proxima.utils.OdpsUtil.getSmallCategoryDocNum(OdpsUtil.java:719)
at com.alibaba.proxima.pipeline.worker.odps.SmallCategoryPrepareWorker.apply(SmallCategoryPrepareWorker.java:62)
at com.alibaba.proxima.pipeline.runner.OdpsPipelineRunner.run(OdpsPipelineRunner.java:40)
at com.alibaba.proxima.pipeline.CentauriPipelineExecutor.execute(CentauriPipelineExecutor.java:30)
at com.alibaba.proxima.CentauriRunner.runWithMultiCategory(CentauriRunner.java:62)
at com.alibaba.proxima.CentauriRunner.main(CentauriRunner.java:210)
テーブル内のフィールド(通常は category または pk)に空の値が含まれています。SQL ステートメントを使用して、該当フィールドが空であるレコードを削除してください。
小カテゴリの検索フェーズでスキーマ検証が失敗する
エラーメッセージ
2020-07-28 16:58:15.221 [main] INFO p.a.p.p.ProximaCEPipelineExecutor - [] - execute SmallCategorySeek worker start ..........
[400] com.aliyun.odps.OdpsException: ODPS-0420031: Invalid xml in HTTP request body - The request body is malformed or the server version doesn't match this sdk/client. XML Schema validation failed: Element 'Value': [facet 'maxLength'] The value has a length of '4952955'; this exceeds the allowed maximum length of '2097152'.
Element 'Value': '{"MaxCompute.pipeline.0.output.key.schema":"instId:BIGINT,type:BIGINT,pk:STRING,category:BIGINT","MaxCompute.pipeline.0.output.value.schema":"v
ドキュメントテーブルにカテゴリが多すぎるため、スキーマペイロードが 2,097,152 文字の上限を超えています。ドキュメントテーブルを複数のテーブル(カテゴリグループごとに 1 つ)に分割し、それぞれに対して個別のタスクを実行してください。
テーブルデータの解析中に "-nan" が出現する
エラーメッセージ
ODPS-0123131:User defined function exception — Traceback:
java.lang.NumberFormatException: For input string: "-nan"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
at java.lang.Double.parseDouble(Double.java:538)
at java.lang.Double.valueOf(Double.java:502)
at com.alibaba.proxima.mr.SeekMergeReducer.reduce(SeekMergeReducer.java:73)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.aliyun.odps.mapred.bridge.utils.MapReduceUtils.runReducer(MapReduceUtils.java:160)
at com.aliyun.odps.mapred.bridge.LotReducerUDTF.run(LotReducerUDTF.java:330)
at com.aliyun.odps.udf.impl.batch.BatchStandaloneUDTFEvaluator.run(BatchStandaloneUDTFEvaluator.java:53)
ドキュメントテーブルまたはクエリテーブルに無効なベクター値が含まれています。これは、表現できないほど大きな数値(オーバーフロー)またはゼロに近すぎて除算が失敗する値です。無効な値の例を以下に示します。
-
1.23~4.56~7.89~nan~4.21 -
1.1~2.2~127197893781729178311928739179222121.23128767846816278193456789087654~0.000000000000000000000000000000000000000001~5.5
MaxCompute SQL のユーザー定義関数 (UDF) を使用して、ドキュメントテーブルおよびクエリテーブルの両方をスキャンし、無効な値を削除または修正してから再実行してください。
マルチカテゴリ検索時の JNI 呼び出し例外(ドキュメントテーブルにカテゴリのドキュメントが 0 件)
エラーメッセージ
2021-08-16 10:36:31 M1_U1_job0:0/1/1[100%] M1_U0_job0:0/24067/24067[100%] R2_1_job0:0/0/3000[0%] R3_2_job0:0/0/4500[0%]
2021-08-16 10:36:39 M1_U1_job0:0/1/1[100%] M1_U0_job0:0/24067/24067[100%] R2_1_job0:0/0/3000[0%] R3_2_job0:0/0/4500[0%]
2021-08-16 10:36:47 M1_U1_job0:0/1/1[100%] M1_U0_job0:0/24067/24067[100%] R2_1_job0:0/0/3000[0%] R3_2_job0:0/0/4500[0%]
2021-08-16 10:36:56 M1_U1_job0:0/1/1[100%] M1_U0_job0:0/24067/24067[100%] R2_1_job0:351/0/3000[0%] R3_2_job0:0/0/4500[0%]
2021-08-16 10:37:04 M1_U1_job0:0/1/1[100%] M1_U0_job0:0/24067/24067[100%] R2_1_job0:2766/234/3000[95%] R3_2_job0:0/0/4500[0%]
2021-08-16 10:37:12 M1_U1_job0:0/1/1[100%] M1_U0_job0:0/24067/24067[100%] R2_1_job0:2766/234/3000[95%] R3_2_job0:0/0/4500[0%]
2021-08-16 10:37:21 M1_U1_job0:0/1/1[100%] M1_U0_job0:0/24067/24067[100%] R2_1_job0:1431/313/3000[100%] R3_2_job0:0/0/4500[0%]
2021-08-16 10:37:31 M1_U1_job0:0/1/1[100%] M1_U0_job0:0/24067/24067[100%] R2_1_job0:1323/317/3000[100%] R3_2_job0:0/0/4500[0%]
2021-08-16 10:37:35 M1_U1_job0:0/1/1[100%] M1_U0_job0:0/24067/24067[100%] R2_1_job0:0/317/3000[99%] R3_2_job0:0/0/4500[0%]
2021-08-16 10:37:43 M1_U1_job0:0/1/1[100%] M1_U0_job0:0/24067/24067[100%] R2_1_job0:0/317/3000[99%] R3_2_job0:0/0/4500[0%]
2021-08-16 10:37:51 M1_U1_job0:0/1/1[100%] M1_U0_job0:0/24067/24067[100%] R2_1_job0:0/317/3000[99%] R3_2_job0:0/0/4500[0%]
2021-08-16 10:38:00 M1_U1_job0:0/1/1[100%] M1_U0_job0:0/24067/24067[100%] R2_1_job0:0/317/3000[99%] R3_2_job0:0/0/4500[0%]
2021-08-16 10:38:08 M1_U1_job0:0/1/1[100%] M1_U0_job0:0/24067/24067[100%] R2_1_job0:0/317/3000[99%] R3_2_job0:0/0/4500[0%]
...
FAILED: ODPS-0123131:User defined function exception - Traceback:
CentauriException(code=20006, msg=jni调用异常, detailMsg=linearJni init method call exception , code:-2)
at com.alibaba.proxima.mr.SmallCategorySeekTopnReducer.initLinearJni(SmallCategorySeekTopnReducer.java:162)
at com.alibaba.proxima.mr.SmallCategorySeekTopnReducer.reduce(SmallCategorySeekTopnReducer.java:111)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.aliyun.odps.mapred.bridge.utils.MapReduceUtils.runReducer(MapReduceUtils.java:160)
at com.aliyun.odps.mapred.bridge.LotReducerUDTF.run(LotReducerUDTF.java:330)
at com.aliyun.odps.udf.impl.batch.BatchStandaloneUDTFEvaluator.run(BatchStandaloneUDTFEvaluator.java:53)
CentauriException(code=20005, msg=odps任务运行失败, detailMsg=SmallCategorySeekWorker Job running error.)
at com.alibaba.proxima.pipeline.worker.odps.SmallCategorySeekWorker.apply(SmallCategorySeekWorker.java:116)
at com.alibaba.proxima.pipeline.runner.OdpsPipelineRunner.run(OdpsPipelineRunner.java:41)
at com.alibaba.proxima.pipeline.CentauriPipelineExecutor.execute(CentauriPipelineExecutor.java:30)
at com.alibaba.proxima.CentauriRunner.runWithMultiCategory(CentauriRunner.java:60)
at com.alibaba.proxima.CentauriRunner.main(CentauriRunner.java:232)
2021-08-16 10:38:14.133 [main] INFO c.a.p.p.CentauriPipelineExecutor - [] - execute CleanUpWorker worker start .........
2021-08-16 10:38:14.279 [main] INFO com.alibaba.proxima.utils.OdpsUtil - [] - drop table dmp_mind_shop_user_norm_doc_table_0_tmp_1629081006420 start ...
2021-08-16 10:38:15 INFO - DQC Hook:begin
2021-08-16 10:38:16 INFO - getJsonSummary is null, retry 3
2021-08-16 10:38:19 INFO - getJsonSummary is null, retry 2
2021-08-16 10:38:22 INFO - getJsonSummary is null, retry 1
2021-08-16 10:38:25 INFO - 该Job没有发生数据变化,所以不需要DQC校验。(Code:1)
2021-08-16 10:38:25 INFO - DQC Hook:end
2021-08-16 10:38:25.737 [main] INFO com.alibaba.proxima.utils.OdpsUtil - [] - drop table dmp_mind_shop_user_norm_doc_table_0_tmp_1629081006420 end ...
2021-08-16 10:38:25.893 [main] INFO com.alibaba.proxima.utils.OdpsUtil - [] - drop table dmp_mind_shop_norm_query_table2_tmp_1629081166805 start ...
2021-08-16 10:38:27 INFO - DQC Hook:begin
2021-08-16 10:38:27 INFO - getJsonSummary is null, retry 3
StdErr ログ内の主要なエラーメッセージは linear params category_info is invalid であり、これが CentauriException(code=20006, msg=jni调用异常) を引き起こしています。完全なログは次のとおりです。
ERROR: ld.so: object '${LD_PRELOAD}' from LD_PRELOAD cannot be preloaded: ignored.
Heap Size: 1024M
native library 'libcentauri-1.1.2.so' loaded
[JVM Heap Memory] maximum = 10379526144
[JVM Heap Memory] used: 103077912, init stat info
SeekJni System.loadLibrary(centauri-1.1.2) start ...
SeekJni System.loadLibrary(centauri-1.1.2) end ...
[JVM Heap Memory] used: 137437232, after processed 1 keys, 1 values
[ERROR] 2021-08-16 18:37:06 140363264742864 linear_singleton.cc:273] linear params category_info is invalid
[ERROR] 2021-08-16 18:37:15 140363264742864 linear_singleton.cc:19] validate linear params failed.
[ERROR] 2021-08-16 18:37:15 140363264742864 linear_jni.cc:23] LinearSingleton init failed with ret -2.
Exception in thread "main" CentauriException(code=20006, msg=jni调用异常, detailMsg=linearJni init method call exception , code:-2)
at com.alibaba.proxima.mr.SmallCategorySeekTopnReducer.initLinearJni(SmallCategorySeekTopnReducer.java:162)
at com.alibaba.proxima.mr.SmallCategorySeekTopnReducer.reduce(SmallCategorySeekTopnReducer.java:111)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.aliyun.odps.mapred.bridge.utils.MapReduceUtils.runCounter(MapReduceUtils.java:160)
at com.aliyun.odps.mapred.bridge.LotReducerUDTF.run(LotReducerUDTF.java:330)
at com.aliyun.odps.udf.impl.batch.BatchStandaloneUDTFEvaluator.run(BatchStandaloneUDTFEvaluator.java:53)
ERROR: ld.so: object '${LD_PRELOAD}' from LD_PRELOAD cannot be preloaded: ignored.
Heap Size: 1024M
native library 'libcentauri-1.1.2.so' loaded
[JVM Heap Memory] maximum = 10379526144
[JVM Heap Memory] used: 103077912, init stat info
SeekJni System.loadLibrary(centauri-1.1.2) start ...
SeekJni System.loadLibrary(centauri-1.1.2) end ...
[JVM Heap Memory] used: 137437144, after processed 1 keys, 1 values
[ERROR] 2021-08-16 18:37:15 140475475331776 linear_singleton.cc:273] linear params category_info is invalid
[ERROR] 2021-08-16 18:37:15 140475475331776 linear_singleton.cc:19] validate linear params failed.
[ERROR] 2021-08-16 18:37:15 140475475331776 linear_jni.cc:23] LinearSingleton init failed with ret -2.
Exception in thread "main" CentauriException(code=20006, msg=jni调用异常, detailMsg=linearJni init method call exception , code:-2)
at com.alibaba.proxima.mr.SmallCategorySeekTopnReducer.initLinearJni(SmallCategorySeekTopnReducer.java:162)
at com.alibaba.proxima.mr.SmallCategorySeekTopnReducer.reduce(SmallCategorySeekTopnReducer.java:111)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
クエリテーブルが、ドキュメントテーブルにドキュメントが 0 件のカテゴリを参照しています。Proxima CE はこれをユーザー入力エラーと見なし、カテゴリを黙ってスキップせずにタスクを終了します。続行すると、そのカテゴリに対して再現率結果が一切返されず、隠れたバグが発生するためです。
ドキュメントテーブルまたはクエリテーブルから空のカテゴリを削除してから、再度実行してください。
MaxCompute Tunnel エンドポイントへのアクセス失敗
エラーメッセージ
Failed to create DownloadSession ErrorCode=Local Error, ErrorMessage=Failed to create download session with tunnel endpoint
Proxima CE はテーブルデータの読み取りに MaxCompute Tunnel インターフェイスを呼び出します。このエラーには、次の 2 つの一般的な原因があります。
-
ネットワークの問題: ダウンロードセッションが一時的に失敗しました。ダウンロードセッションを再作成してリトライしてください。
-
無効な Tunnel エンドポイント: 設定されたエンドポイントがご利用のネットワーク環境と一致していません(たとえば、パブリックネットワークプロジェクトでクラシックネットワークのエンドポイントを使用している場合)。詳細については、「クラシックネットワークの Tunnel エンドポイントを設定したのに、MaxCompute プロジェクトがパブリック Tunnel エンドポイントを使用するのはなぜですか?」をご参照ください。
-tunnel_endpointスタートアップパラメーターを追加して有効な Tunnel エンドポイントを指定し、再度実行してください。
MapReduce タスクでの "java.lang.NullPointerException"
原因が異なる 3 種類のエラーパターンがあります。
エラー例 1(setKey() によるもの)
2021-11-17 14:56:15 M1_job0:2/3/5[100%] R2_1_job0:0/0/5000[0%] R3_2_job0:0/0/7500[0%]
2021-11-17 14:56:21 M1_job0:2/3/5[100%] R2_1_job0:0/0/5000[0%] R3_2_job0:0/0/7500[0%]
2021-11-17 14:56:30 M1_job0:0/5/5[100%] R2_1_job0:0/0/5000[0%] R3_2_job0:0/0/7500[0%]
2021-11-17 14:56:38 M1_job0:0/5/5[100%] R2_1_job0:11/0/5000[0%] R3_2_job0:0/0/7500[0%]
2021-11-17 14:56:47 M1_job0:0/5/5[100%] R2_1_job0:109/0/5000[0%] R3_2_job0:0/0/7500[0%]
...
FAILED: ODPS-0123131:User defined function exception - Traceback:
java.lang.NullPointerException
at com.alibaba.proxima.proto.ParamsInfo$InputKVSBuilder.setKey(ParamsInfo.java:408)
at com.alibaba.proxima.mr.SeekTopnReducer.reduce(SeekTopnReducer.java:114)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.aliyun.odps.mapred.bridge.utils.MapReduceUtils.runReducer(MapReduceUtils.java:160)
at com.aliyun.odps.mapred.bridge.LotReducerUDTF.run(LotReducerUDTF.java:330)
at com.aliyun.odps.udf.impl.batch.BatchStandaloneUDTFEvaluator.run(BatchStandaloneUDTFEvaluator.java:53)
CentauriException(code=20005, msg=odps任务运行失败, detailMsg=SeekJobWorker Job running error.)
at com.alibaba.proxima.pipeline.worker.odps.SeekJobWorker.apply(SeekJobWorker.java:90)
at com.alibaba.proxima.pipeline.runner.OdpsPipelineRunner.run(OdpsPipelineRunner.java:41)
at com.alibaba.proxima.pipeline.CentauriPipelineExecutor.execute(CentauriPipelineExecutor.java:30)
at com.alibaba.proxima.CentauriRunner.runWithNormal(CentauriRunner.java:33)
at com.alibaba.proxima.CentauriRunner.main(CentauriRunner.java:244)
エラー例 2(VectorConvert.convert() によるもの)
2021-11-15 17:40:08 M1_job0:0/0/45[0%] R2_1_job0:0/0/2[0%]
2021-11-15 17:40:16 M1_job0:18/0/45[0%] R2_1_job0:0/0/2[0%]
2021-11-15 17:40:25 M1_job0:18/2/45[0%] R2_1_job0:0/0/2[0%]
...
FAILED: ODPS-0123131:User defined function exception – Traceback:
REPORT:
https://dm.guide/report/ODPS-0123131?data-dm-guide-action=4&data-dm-guide-extra-msg=ID:750eebc1-b999-4e90-8820-1d006aadd0c7
java.lang.NullPointerException
at com.alibaba.proxima.utils.VectorConvert.convert(VectorConvert.java:15)
at com.alibaba.proxima.mr.BuildMapper.map(BuildMapper.java:63)
at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.aliyun.odps.mapred.bridge.utils.MapReduceUtils.runMapper(MapReduceUtils.java:120)
at com.aliyun.odps.mapred.bridge.LotMapperUDTF.run(LotMapperUDTF.java:807)
at com.aliyun.odps.udf.impl.batch.BatchStandaloneUDTFEvaluator.run(BatchStandaloneUDTFEvaluator.java:53)
CentauriException(code=20005, msg=odps任务运行失败, detailMsg=BuildJobWorker Job running error.)
at com.alibaba.proxima.pipeline.worker.odps.BuildJobWorker.apply(BuildJobWorker.java:81)
at com.alibaba.proxima.pipeline.runner.OdpsPipelineRunner.run(OdpsPipelineRunner.java:41)
at com.alibaba.proxima.pipeline.CentauriPipelineExecutor.execute(CentauriPipelineExecutor.java:30)
at com.alibaba.proxima.CentauriRunner.runWithNormal(CentauriRunner.java:30)
at com.alibaba.proxima.CentauriRunner.main(CentauriRunner.java:230)
2021-11-15 17:40:30.777 [main] INFO c.a.p.CentauriPipelineExecutor – [] – execute CleanUpWorker worker start ..........
2021-11-15 17:40:30.949 [main] INFO com.alibaba.proxima.utils.OdpsUtil – [] – drop table
tmp_mumei_proxima_doc_split_tmp_1636968696798_start
エラー例 3(getInputVolumeFileSystem() によるもの)
2021-12-03 13:12:26 M1_job_0:0/8/8[100%] R2_1_job_0:3/0/3[0%] R3_2_job_0:0/0/3[0%]
2021-12-03 13:12:34 M1_job_0:0/8/8[100%] R2_1_job_0:3/0/3[0%] R3_2_job_0:0/0/3[0%]
...
FAILED: ODPS-0123131: Fuxi job failed — Failed in UDF/UDTF/UDAF com.aliyun.odps.mapred.bridge.LotReducerUDTF class, at query location of line 21, column 12
ODPS-0123131:User defined function exception — Traceback:
java.lang.NullPointerException
at com.aliyun.odps.udf.impl.NativeExecutionContext.getInputVolumeFileSystem(NativeExecutionContext.java:373)
at com.aliyun.odps.mapred.bridge.UDTFTaskContextImpl.getInputVolumeFileSystem(UDTFTaskContextImpl.java:481)
at com.alibaba.proxima2.ce.pipeline.odps.mr.SeekTopNReducer.setup(SeekTopNReducer.java:58)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.aliyun.odps.mapred.bridge.utils.MapReduceUtils.runReducer(MapReduceUtils.java:155)
at com.aliyun.odps.mapred.bridge.LotReducerUDTF.run(LotReducerUDTF.java:330)
at com.aliyun.odps.udf.impl.batch.StandaloneUserThreadForEE.run(StandaloneUserThreadForEE.java:22)
ProximaCEException(code=20005, msg=odps任务运行失败, detailMsg=SeekJobWorker Job running error.)
at com.alibaba.proxima2.ce.pipeline.odps.worker.SeekJobWorker.apply(SeekJobWorker.java:90)
at com.alibaba.proxima2.ce.pipeline.odps.runner.OdpsPipelineRunner.run(OdpsPipelineRunner.java:31)
at com.alibaba.proxima2.ce.pipeline.PipelineExecutor.execute(PipelineExecutor.java:27)
at com.alibaba.proxima2.ce.ProximaCERunner.runWithNormal(ProximaCERunner.java:28)
at com.alibaba.proxima2.ce.ProximaCERunner.main(ProximaCERunner.java:147)
13:12:40.884 [main] INFO com.alibaba.proxima2.ce.pipeline.PipelineExecutor — Start to execute CleanUpWorker worker...
13:12:41.038 [main] INFO com.alibaba.proxima2.ce.utils.OdpsUtil — drop table
cp_crowd_lookalike_result_doc_b364d0605b5a4f348725785c911b56ad_split_tmp_AevgmUxjpN_665 start ...
エラー例 1 および 2
これらのエラーは、MapReduce タスクが入力テーブルの列を読み取れない場合に発生します。考えられる原因は次のとおりです。
-
テーブルに該当列が存在しません。
-
列の行に null 値が含まれています。
-
列の行に解析エラーを引き起こす無効な値が含まれています。
エラーログには、どのフェーズで失敗したかが記録されています。
-
ビルドフェーズ(Mapper-Reducer プロセス):上記の問題についてドキュメントテーブルを確認してください。
-
シークフェーズ(Mapper-Reducer1-Reducer2 プロセス):クエリテーブルを確認してください。
エラー例 2 は Mapper-Reducer(ビルド)フェーズ中に記録され、エラー例 1 は Mapper-Reducer1-Reducer2(シーク)フェーズ中に記録されています。
エラー例 3
このエラーは、マッパーのタスクがシークフェーズでボリュームまたはボリュームパーティション情報を読み取れない場合に発生します。考えられる原因は次のとおりです。
-
同じドキュメントテーブルを共有する並行タスク: ボリュームパーティションは、ドキュメントテーブル名およびパーティション名に基づいて命名されます。複数のタスクが同時に同じドキュメントテーブルを使用すると、インデックスファイルが互いに上書きまたは削除され、ボリュームの読み取りが失敗し、インデックスがロードできなくなります。 衝突を防ぐために、各タスクに一意のドキュメントテーブル名を付けてください。
-
-column_numまたは-row_numが高すぎること: MRR タスクのリデューサーインスタンス数はcolumn_num x row_numに等しくなります。MaxCompute では、最大 99,999 個のリデューサーインスタンスがサポートされています。この上限を超えると、特定のリデューサーインスタンスが正しいボリュームパーティションを見つけられなくなるなど、予測不能なエラーが発生します。両方のパラメーターに有効な値を設定してください。推奨値については、「クラスターシャーディング」をご参照ください。
パーティションキー列 pt が getPartitionColumn によって見つからない
エラーメッセージ
13:09:30.929 [main] INFO com.alibaba.proxima2.ce.utils.OdpsUtil - check doc result false
13:09:31.237 [main] INFO com.alibaba.proxima2.ce.utils.OdpsUtil - check table:proxima_doc_table , column: pk , odpsType:BIGINT.
13:09:31.237 [main] INFO com.alibaba.proxima2.ce.utils.OdpsUtil - check table:proxima_doc_table , column: vector , odpsType:STRING pass.
java.lang.NullPointerException
at com.aliyun.odps.TableSchema.getPartitionColumnIndex(TableSchema.java:206)
at com.aliyun.odps.TableSchema.getPartitionColumn(TableSchema.java:195)
at com.alibaba.proxima2.ce.utils.OdpsUtil.checkDocQueryTable(OdpsUtil.java:677)
at com.alibaba.proxima2.ce.utils.ConfigParser.checkTableInfo(ConfigParser.java:227)
at com.alibaba.proxima2.ce.utils.ConfigParser.parse(ConfigParser.java:46)
at com.alibaba.proxima2.ce.ProximaCERunner.main(ProximaCERunner.java:139)
FAILED: Run job failed.
REPORT:
https://dm.guide/report/Run job fail?data-dm-guide-action=4&data-dm-guide-extra-msg=ID:e6962785-f4eb-4c27-bc76-2600f2ff8d8d
2021-12-28 13:09:31 INFO ========================================================================
2021-12-28 13:09:31 INFO Exit code of the Shell command 1
2021-12-28 13:09:31 INFO --- Invocation of Shell command completed ---
ドキュメントテーブルおよびクエリテーブルのスキーマには厳格な要件があります。パーティションキー列の名前は pt で、データの型は STRING である必要があります。pt がパーティションキー列ではなく通常の列として定義されている場合、このエラーが発生します。
pt がパーティションキー列として指定されていることを確認してください。必要なスキーマフォーマットについては、「入力テーブルデータのインポート」をご参照ください。
"ShuffleServiceMode: Dump checkpoint failed"
エラーメッセージ
0010000:System internal error - fuxi job failed, caused by: ShuffleServiceMode: Dump checkpoint failed
単一のマッパーまたはリデューサーインスタンスの出力が 400 GB を超えました。これは、単一のインスタンスが処理するデータ量が多すぎるか、マッパーまたはリデューサータスクの内部ロジックによってデータ肥大化が発生した場合に起こります。
各マッパーが処理するデータ量を減らすために、-mapper_split_size パラメーター(単位:MB)を設定してください。
"MaxCompute-0430071: Rejected by policy - rejected by system throttling rule"
エラーメッセージ
FAILED: MaxCompute-0430071: Rejected by policy - rejected by system throttling rule
MaxCompute により、タスク実行リクエストが速度制限されました。これは通常、クラスターで他のワークロード(ストレステストなど)が実行されている場合や、セキュリティポリシーにより一定期間タスク実行が制限されている場合に発生します。
しばらく待ってからタスクを再実行してください。制限が解除されるタイミングについては、プロジェクトオーナーまたはクラスター管理者にお問い合わせください。
テーブル読み取り失敗による "java.lang.ArrayIndexOutOfBoundException"
エラーメッセージ
...
FAILED: ODPS-0123131: Fuxi job failed – Failed in UDF/UDTF/UDAF com.aliyun.odps.mapred.bridge.LotMapperUDTF class, at query location of line 8, column 26
ODPS-0123131:User defined function exception – Traceback:
java.lang.ArrayIndexOutOfBoundsException: 5560
at com.alibaba.proxima2.ce.pipeline.odps.mr.GeneratePkMapper.map(GeneratePkMapper.java:50)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.aliyun.odps.mapred.bridge.utils.MapReduceUtils.runMapper(MapReduceUtils.java:120)
at com.aliyun.odps.mapred.bridge.LotMapperUDTF.run(LotMapperUDTF.java:807)
at com.aliyun.odps.udf.impl.batch.StandaloneUserThreadForEE.run(StandaloneUserThreadForEE.java:22)
ProximaCEException(code=20005, msg=odps任务运行失败, detailMsg=PrimaryKeyProcess Job running error.)
at com.alibaba.proxima2.ce.pipeline.odps.worker.TmpTableJobWorker.apply(TmpTableJobWorker.java:103)
at com.alibaba.proxima2.ce.pipeline.odps.runner.OdpsPipelineRunner.run(OdpsPipelineRunner.java:31)
at com.alibaba.proxima2.ce.pipeline.PipelineExecutor.execute(PipelineExecutor.java:27)
at com.alibaba.proxima2.ce.ProximaCERunner.runWithNormal(ProximaCERunner.java:25)
at com.alibaba.proxima2.ce.ProximaCERunner.main(ProximaCERunner.java:147)
17:24:49.914 [main] INFO com.alibaba.proxima2.ce.pipeline.PipelineExecutor – Start to execute CleanUpWorker worker...
17:24:50.025 [main] INFO com.alibaba.proxima2.ce.utils.OdpsUtil – drop table dwd_gx_pkg_kg_C2M_PDD_alldoc_by_swintransformerv2_df_split_tmp_MZzSCqbREB_214 start ...
2022-09-28 17:24:51 INFO – DQC Hook:begin
GeneratePkMapper タスクがテーブルの読み取りに失敗し、有効な配列長を取得できませんでした。考えられる原因は次のとおりです。
-
不安定なクラスターネットワーク(タイムアウト): 読み取りがタイムアウトしました。タスクを数回リトライするか、ネットワークが安定するまで待ってから再実行してください。
16:53:55.898 [main] INFO com.alibaba.proxima2.ce.utils.OdpsUtil - getDocSplitCountArray : dwd_gx_pkg_kg_ [ODPS] 获取ODPS表记录失败 java.io.IOException: ErrorCode=Local Error, ErrorMessage=Read timed out 17:22:14.380 [main] INFO com.alibaba.proxima2.ce.pipeline.odps.worker.TmpTableJobWorker - PrimaryKey job gbPFR_214 -
Tunnel 例外: Proxima CE は Tunnel コマンドを介してテーブルを読み取るため、Tunnel エラーもこの失敗の原因となります。「MaxCompute Tunnel エンドポイントへのアクセス失敗」のトラブルシューティング手順をご参照ください。
クラスターシャーディング中のタイムアウト
エラーメッセージ
FAILED: ODPS-0010000:System internal error - Timeout when graph master wait all workers start
java.io.IOException: Job failed!
at com.aliyun.odps.graph.GraphJob.run(GraphJob.java:429)
at com.alibaba.proxima2.ce.pipeline.odps.worker.KmeansGraphJobWorker.apply(KmeansGraphJobWorker.java:131)
at com.alibaba.proxima2.ce.pipeline.odps.runner.OdpsPipelineRunner.run(OdpsPipelineRunner.java:31)
at com.alibaba.proxima2.ce.pipeline.PipelineExecutor.execute(PipelineExecutor.java:27)
at com.alibaba.proxima2.ce.ProximaCERunner.runWithNormal(ProximaCERunner.java:28)
at com.alibaba.proxima2.ce.ProximaCERunner.main(ProximaCERunner.java:149)
クラスターシャーディング中、Proxima CE はデータのクラスタリングにGraph エンジンを使用します。GraphJob はデフォルトで一定数のワーカーノードをリクエストします。クラスターに十分な利用可能なリソースがない場合、ワーカーの起動待ちでジョブがタイムアウトします。
Proxima CE スタートアップコマンドの前に、次のパラメーターを追加して GraphJob がリクエストできるワーカーノード数を制限してください。
set odps.graph.worker.num=400; -- 400 は例です。ご利用のクラスターの利用可能リソースに基づいて設定してください。
完全なコマンド例を以下に示します。
set odps.graph.worker.num=400;
jar -resources kmeans_center_resource_cl,proxima-ce-aliyun-1.0.0.jar
-classpath http://schedule@{env}inside.cheetah.alibaba-inc.com/scheduler/res?id=251678818 com.alibaba.proxima2.ce com.alibaba.proxima2.ce.ProximaCERunner
-doc_table doc_table_pailitao
-doc_table_partition 20210707
-query_table query_table_pailitao
-query_table_partition 20210707
-output_table output_table_pailitao_cluster_2000w
-output_table_partition 20210707
-data_type float
-dimension 512
-oss_access_id xxx
-oss_access_key xxx
-oss_endpoint xxx
-oss_bucket xxx
-owner_id 123456
-vector_separator blank
-pk_type int64
-row_num 10
-column_num 10
-job_mode build:seek:recall
-topk 1,50,100,200
-sharding_mode cluster
-kmeans_resource_name kmeans_center_resource_cl
-kmeans_cluster_num 1000;