2016-12-15 92 views
0

我在250GB或內存和40個內核的一臺機器上運行獨立羣集,並且有幾個TB或硬盤空間。SPARK獨立羣集:執行程序退出,如何跟蹤錯誤的來源?

我正在初始化一個由8個執行程序組成的集羣,每個執行程序有5個內核和28GB內存。

我在讀數據,我的持久性策略是MEMORY_AND_DISK。

我正在閱讀parquet文件,處理它們,並生成一個DataFrame,然後將它傳遞給管道以提取特徵並訓練一個隨機森林分類器。

在生成DataFrame時,我失去了執行者,但我無法找到原因。

我看到錯誤爲以下之一:

16/12/15 11:07:30 ERROR TaskSchedulerImpl: Lost executor 3 on XXXX: Remote RPC client disassociated. Likely due to containers exceeding thresholds, or network issues. Check driver logs for WARN messages. 
16/12/15 11:07:30 WARN TaskSetManager: Lost task 172.0 in stage 171.0 (TID 7757, XXXX): ExecutorLostFailure (executor 3 exited caused by one of the running tasks) Reason: Remote RPC client disassociated. Likely due to containers exceeding thresholds, or network issues. Check driver logs for WARN messages. 

我已經看過關於星火UI執行人的標準錯誤日誌,但我不能發現任何東西(INFO日誌記錄級別啓用),只有INFO消息沒有任何警告或錯誤。

我監視執行程序上的可用內存(再次使用Spark UI),執行程序退出前還有可用內存,並且有足夠的磁盤空間可用。

  • 如何跟蹤此問題?
  • 執行人退出的原因是什麼?
+1

您必須記錄您的應用程序並監視內存和網絡。您可以使用像jvisualvm這樣的工具爲您的獨立羣集。你也可以增加火花日誌級別。 – eliasah

回答

1

如果你有8個執行者,每個你指定的內存只有26克,那麼不同的開銷總是快速增加,完全有可能這個數量太少,執行者因爲佔用內存而死亡。

嘗試使用類似20克每個執行者的東西,或者只是通常玩弄值。你還在失去執行者嗎?

相關問題