如何解決 Amazon EMR 中失敗或卡住的 Spark SQL 查詢?

2 分的閱讀內容
0

我想收集資訊,以便在 Amazon EMR 中對 Spark SQL 查詢進行疑難排解。

解決方法

Spark SQL 完成的查詢位於 EMR 叢集 Spark History Server的應用程式使用者介面索引標籤上。如需詳細資訊,請參閱檢視持續應用程式使用者介面

若要存取已完成的 Spark SQL 查詢,請執行下列動作:

  1. 在 Spark History Server 上,選取 SQL/DataFrame 以查看完成的 Spark SQL 查詢。
  2. 選取查詢的 Spark SQL 工作應用程式 ID,以在工作索引標籤上開啟已完成的工作 ID 資訊。請注意,SQL 查詢可能有多個工作 ID。

下列資訊可從工作索引標籤取得:

  • 工作索引標籤上,您可以查看工作的狀態、工作持續時間以及相關的 SQL 查詢。
  • 工作索引標籤上,您可以檢閱應用程式 ID 的時間表。時間表按時間順序顯示 Spark 執行者的新增和移除。
  • 向下捲動以查看 DAG (Direct Acyclic Graph)。DAG 是 Spark SQL 查詢的視覺化。您還可以看到 RDD 依賴關係鏈。
  • 進一步捲動以查看 Spark SQL 工作的完成階段。
  • 選取階段 ID 說明,以查看查詢在所有工作中的總時間、地區層級摘要以及相關聯的工作 ID。階段檢視會提供與此階段對應之所有 RDD 的詳細資訊。此檢視也提供與高層級 Spark SQL 作業相關的較低層級 RDD 作業的資訊。
  • 展開按執行者分類的匯總指標,以檢視執行者日誌。執行者日誌提供關於 Spark SQL 工作的其他詳細資訊。

下面是範例日誌:

23/01/17 18:10:17 INFO Executor: Finished task 0.0 in stage 16.0 (TID 16). 1882 bytes result sent to driver
23/01/17 18:10:17 INFO YarnCoarseGrainedExecutorBackend: Got assigned task 17
23/01/17 18:10:17 INFO Executor: Running task 0.0 in stage 17.0 (TID 17)
23/01/17 18:10:17 INFO TorrentBroadcast: Started reading broadcast variable 17 with 1 pieces (estimated total size 4.0 MiB)
23/01/17 18:10:17 INFO MemoryStore: Block broadcast_17_piece0 stored as bytes in memory (estimated size 7.2 KiB, free 4.8 GiB)
23/01/17 18:10:17 INFO TorrentBroadcast: Reading broadcast variable 17 took 8 ms
23/01/17 18:10:17 INFO MemoryStore: Block broadcast_17 stored as values in memory (estimated size 13.8 KiB, free 4.8 GiB)
23/01/17 18:10:17 INFO PythonRunner: Times: total = 52, boot = -31, init = 83, finish = 0
23/01/17 18:10:17 INFO Executor: Finished task 0.0 in stage 17.0 (TID 17). 1883 bytes result sent to driver
23/01/17 18:11:20 ERROR CoarseGrainedExecutorBackend: RECEIVED SIGNAL TERM
23/01/17 18:11:20 INFO MemoryStore: MemoryStore cleared
23/01/17 18:11:20 INFO BlockManager: BlockManager stopped
23/01/17 18:11:20 INFO ShutdownHookManager: Shutdown hook called

如需詳細資訊,請參閱 Apache Spark 文件中 Web UI 一節的工作索引標籤

相關資訊

檢查日誌檔

AWS 官方
AWS 官方已更新 1 年前