我使用HDP 2.5,運行spark-submit作爲紗線集羣模式。紗線上的火花,帶有非零退出碼的集裝箱退出143
我試圖使用數據幀交叉連接生成數據。 即
val generatedData = df1.join(df2).join(df3).join(df4)
generatedData.saveAsTable(...)....
DF1存儲水平MEMORY_AND_DISK
DF2,DF3,DF4存儲水平MEMORY_ONLY
DF1有更多的記錄,即500萬,而DF2到DF4至多100條記錄。 這樣做我解釋明白會導致更好的性能使用BroadcastNestedLoopJoin解釋計劃。
由於某種原因,它總是失敗。我不知道如何調試它以及內存在哪裏爆炸。
錯誤日誌輸出:
16/12/06 19:44:08 WARN YarnAllocator: Container marked as failed: container_e33_1480922439133_0845_02_000002 on host: hdp4. Exit status: 143. Diagnostics: Container killed on request. Exit code is 143
Container exited with a non-zero exit code 143
Killed by external signal
16/12/06 19:44:08 WARN YarnSchedulerBackend$YarnSchedulerEndpoint: Container marked as failed: container_e33_1480922439133_0845_02_000002 on host: hdp4. Exit status: 143. Diagnostics: Container killed on request. Exit code is 143
Container exited with a non-zero exit code 143
Killed by external signal
16/12/06 19:44:08 ERROR YarnClusterScheduler: Lost executor 1 on hdp4: Container marked as failed: container_e33_1480922439133_0845_02_000002 on host: hdp4. Exit status: 143. Diagnostics: Container killed on request. Exit code is 143
Container exited with a non-zero exit code 143
Killed by external signal
16/12/06 19:44:08 WARN TaskSetManager: Lost task 1.0 in stage 12.0 (TID 19, hdp4): ExecutorLostFailure (executor 1 exited caused by one of the running tasks) Reason: Container marked as failed: container_e33_1480922439133_0845_02_000002 on host: hdp4. Exit status: 143. Diagnostics: Container killed on request. Exit code is 143
Container exited with a non-zero exit code 143
Killed by external signal
我沒有看到這個錯誤之前的任何警告或錯誤日誌。 問題是什麼?我應該在哪裏尋找內存消耗? 我看不到任何東西存儲 SparkUI的選項卡。 日誌從紗資源管理器UI採取HDP 2.5
編輯 看着在容器日誌,好像它是一個java.lang.OutOfMemoryError: GC overhead limit exceeded
我知道如何增加內存,但我不沒有任何記憶了。 如何在沒有出現此錯誤的情況下使用4個數據框執行笛卡爾/產品連接?所有容器的
如果數據框的大小與您所建議的一樣(5e6,100,100,100),則笛卡爾產品將具有大約5e12條記錄,即5萬億條記錄。您沒有提及列的數量,但是如果您有一個整數列,這將需要數TB的存儲空間。如果你有多個列,聯合數據庫可能需要數百或數千兆字節。這真的是你想要的嗎? – abeboparebop
1欄。這是一個數據生成器工具,導致內存爆炸。 –