火花與司機工作失敗是暫時不可用

工作失敗由於司機不可用或沒有響應。

寫的亞當Pavlacka

去年發表在:2023年4月17日

問題

在集群上運行筆記本或工作時,多次成功運行,但有時司機停止工作,將顯示錯誤消息,如:

司機暫時不可用。
意外引發司機已經停止並重新啟動。
失去了連接到集群。筆記本可能是分離的。

如果你檢查集群事件日誌,你會發現Driver_Not_Responding事件與消息相關的垃圾收集(GC):

驅動程序,但沒有反應,可能由於GC。

如果你檢查Ganglia指標當問題發生時,你會注意到司機經曆高負載節點(例如,顯示一個橙色/紅色)。

讓司機的IP,這樣您就可以過濾Ganglia指標指示板,可以導航到集群的火花集群UI >主選項卡並得到司機的IP(火花主)從第一行:“火花大師在火花:/ / x.x.x.x:港口”。

導致

這個錯誤的一個常見原因是,司機正在內存瓶頸。,當這一切發生的時候,司機崩潰的內存(伯父)條件,重新啟動或無法響應,由於頻繁的完整的垃圾收集。內存瓶頸的原因可以有下列:

  • 司機實例類型不是最優加載驅動程序上執行的。
  • 有內存密集型操作上執行的司機。
  • 有許多筆記本電腦或者工作並行運行在同一集群。

解決方案

解決方案例子的情況各不相同。解決這個問題最簡單的方法在缺乏具體細節是提高司機的記憶。你可以增加司機記憶隻需升級驅動節點類型在集群上你的磚的工作區中編輯頁麵。

其他重要的事情需要考慮:

  • 避免內存密集型操作,比如:
    • 收集()操作符,給司機帶來了大量的數據。
    • 轉換的一個大型DataFrame熊貓DataFrame使用toPandas()函數。
    • 如果這些操作是必不可少的,確保足夠的司機內存可用;否則,尋找替代能源,可以並行化執行你的代碼。例如,為數據處理用火花而不是熊貓,火花毫升代替常規的Python機器學習庫(例如,scikit-learn)。
  • 避免共享互動集群上運行批處理作業。
  • 分發工作負載到不同的集群。無論多大的集群,火花的功能驅動程序不能被分布在一個集群。
  • 做一個定期重新啟動集群互動(例如每天)在低負載清除剩餘的內存中的對象從之前的運行。您可以使用集群重啟REST API端點還有你最喜歡的自動化工具來自動化。
  • 在一個集群上運行特定的筆記本在隔離評估究竟需要多少內存來執行成功的筆記本。
這篇文章有用嗎?