Spark 記憶體問題
確認記憶體問題
記憶體問題通常會導致下列錯誤訊息:
SparkException: Job aborted due to stage failure: Task 3 in stage 0.0 failed 4 times, most recent failure: Lost task 3.3 in stage 0.0 (TID 30) (10.139.64.114 executor 4): ExecutorLostFailure (executor 4 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.
不過,這些錯誤訊息通常是泛型的,而且可能是由其他問題所造成。 因此,如果您懷疑有記憶體問題,您可以藉由將每個核心的記憶體加倍來確認問題,以查看它是否會影響您的問題。
例如,如果您有每個記憶體 4 個核心和 16 GB 的背景工作類型,您可以嘗試切換至具有 4 個核心和 32 GB 記憶體的背景工作類型。 相較於您以前擁有的每個核心 4GB,這可提供每個核心 8GB。 核心與記憶體的比例在這裡很重要。 如果需要較長的時間才能因額外的記憶體而失敗,或完全沒有失敗,這就是您處於正確軌道的好兆頭。
如果您可以藉由增加記憶體來修正您的問題,請非常出色! 也許這就是解決方案。 如果無法修正問題,或無法承擔額外的成本,您應該更深入地挖掘。
可能的原因
記憶體問題有很多可能的原因: