取消
顯示的結果
而不是尋找
你的意思是:

如何控製垃圾收集在使用自動裝卸機文件通知?

nolanlavender00
新的因素

我用自動裝卸機加載文件從一個目錄。我有設置文件通知事件訂閱。

我有一個回填時間間隔設置為1天並沒有運行流一個星期。隻應該有~ 100新文件去接的階段狀態完成火花UI。

然而,這項工作並不編寫和停滯了很長一段時間。然後不完整的寫。要司機日誌的時候,我看到這樣的消息。

2023 - 02 - 10 - t18:35:04.867 + 0000: [GC堆(檢查啟動GC) [PSYoungGen: 2625154 k - > 11041 k (15486464 k)] 2861020 k - > 2861020 k (46883840 k), 0.0116171秒][:用戶= 0.09 sys = 0.00,真實= 0.01秒)2023 - 02 - 10 - t18:35:04.878 + 0000:[完整GC堆(檢查啟動GC) [PSYoungGen: 11041 k - > 0 k (15486464 k)] [ParOldGen: 235874 k - > 231400 k (31397376 k)] 246915 k - > 246915 k (46883840 k), [Metaspace: 291018 k - > 291018 k (313344 k)], 0.1842356秒][:用戶= 0.79 sys = 0.00,真實= 0.18秒)

大約每20分鍾。

工作已經停滯了好幾個小時,我已經嚐試增加和減少集群。

我不想要重置檢查點和重新開始。

謝謝

2回答2

匿名
不適用

@nolanlavender008:

看起來工作經曆頻繁的垃圾收集(GC),這可能導致重大延誤和影響工作的性能。在這種情況下,似乎這個問題可能與堆的大小,這是JVM的內存存儲對象的一部分。

為了解決這個問題,你可以嚐試以下步驟:

  1. 堆的大小增加添加- conf spark.driver。memoryOverhead = * * *, conf spark.driver。內存= * * * spark-submit命令選項,* * *在哪裏你想分配的內存數量。例如,您可以設置司機16 GB內存2 GB的開銷通過使用下麵的命令:- conf spark.driver。memoryOverhead = 2 g - conf spark.driver.memory = 16 g
  2. 如果增加司機內存不解決這個問題,你可以試著調整垃圾收集設置。你可以添加以下選項spark-submit命令來啟用詳細GC日誌記錄並設置G1GC GC算法:
- - - conf spark.executor。extraJavaOptions = - verbose: gc - xx: + PrintGCDetails - xx: + PrintGCDateStamps - xx: + UseG1GC - conf spark.driver。extraJavaOptions = - verbose: gc - xx: + PrintGCDetails - xx: + PrintGCDateStamps - xx: + UseG1GC

這些選項將打印詳細的垃圾收集信息到控製台,可以幫助您識別問題的根源。

  1. 如果這兩個方案解決這個問題,你可能需要優化你的代碼來減少內存的使用。這可能涉及重組代碼使用更高效的算法,在內存中緩存數據,或者使用更高效的數據結構。

重要的是要注意,重新設置檢查點和重新開始可能是必要的在某些情況下,特別是在工作已經停滯了一段時間。然而,采取這一步驟之前,值得探索其他選項,看看沒有重新開始的問題可以解決。

Vidula_Khanna
主持人
主持人

嗨@nolanlavender008

謝謝你發布你的問題在我們的社區!我們很高興幫助你。

幫助我們為您提供最準確的信息,請您花一些時間來回顧反應和選擇一個最好的回答了你的問題嗎?

這也將有助於其他社區成員可能也有類似的問題在未來。謝謝你的參與,讓我們知道如果你需要任何進一步的援助!

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map