1. 程式人生 > >關於Spark執行流式計算程式中跑一段時間出現GC overhead limit exceeded

關於Spark執行流式計算程式中跑一段時間出現GC overhead limit exceeded

最近在升級一個框架的時候,發現某個流式計算程式每隔一定的時間就會出現GC overhead limit exceeded的錯誤問題。

這個問題肯定是記憶體不夠,但是初始設定的記憶體是夠的啊,於是進行各種記憶體優化,如將變數定義在迴圈體外等控制,但是發現只是將這個間隔時間往後推了一下而已。

還是沒有找到癥結所在。

後來再分析了下,可能是哪些變數佔了記憶體沒有及時釋放掉,

看到了好幾個dataframe的cache程式碼,但這個cache應該 spark有個自動釋放清理的機制的。

為了進行測試,手動新增unpersist進行記憶體釋放,再上線,發現問題果然消失了。

原來這個問題真的是記憶體的問題。

再仔細看了下官方說明。

Spark automatically monitors cache usage on each node and drops out old data partitions in a least-recently-used (LRU) fashion. If you would like to manually remove an RDD instead of waiting for it to fall out of the cache, use the RDD.unpersist() method.

可能還是這個自動機制在流式計算中有點趕不上,導致出現的錯誤。這個坑還是非常深。

相關推薦

關於Spark執行計算程式時間出現GC overhead limit exceeded

最近在升級一個框架的時候,發現某個流式計算程式每隔一定的時間就會出現GC overhead limit exceeded的錯誤問題。 這個問題肯定是記憶體不夠,但是初始設定的記憶體是夠的啊,於是進行各種記憶體優化,如將變數定義在迴圈體外等控制,但是發現只是將這個間隔時間往

spark streming計算架構設計

      每一次分享文章都會糾結到底該從哪個地方開始講起,為了組織語言和文章引體會想很長時間。引體寫好後卻沒有了分享文章的慾望,最後就放棄了要寫一篇文章的想法。流式計算技術分享也是想了很久,好幾回編輯框都打開了最後還是放棄編寫了。今天,終於決定要寫一篇關於流式計算資料一致性

實時計算系統的幾個陷阱

![file](https://img2020.cnblogs.com/other/1089984/202005/1089984-20200508094546754-907266824.jpg) 隨著諸如Apache Flink,Apache Spark,Apache Storm之類的開源框架以及諸如Goog

Flink 計算框架(學習

        開源流計算引擎,兼顧效能和可靠性。   Flink資料集型別         有邊資料集:最終不再發生改變         無邊資料集

setTimeout() 實現程式每隔時間自動執行

定義和用法 setTimeout() 方法用於在指定的毫秒數後呼叫函式或計算表示式。 語法 setTimeout(code,millisec) 引數 描述 code 必需。要呼叫的函式後要執行的 J

spark 讀取mongodb失敗,報executor time out 和GC overhead limit exceeded 異常

資源 base for read 就是 conn context mon getc 代碼: import com.mongodb.spark.config.ReadConfig import com.mongodb.spark.sql._ val config = sql

js間隔時間列印陣列的值

間隔一段時間列印陣列中的一個值 在我們的實際操作中,時常會遇到這樣一個問題,比如:有一個數組 arr = [1,2,3,4,5]; 要求間隔1s中列印陣列中的一個值,與停止1s在列印陣列中的值 先列舉兩個停止1s列印陣列中的值 利用for迴圈和定時器來實現

Spark OOM:java heap space,OOM:GC overhead limit exceeded解決方法

問題描述: 在使用spark過程中,有時會因為資料增大,而出現下面兩種錯誤: java.lang.OutOfMemoryError: Java heap space java.lang.OutOfMemoryError:GC overhead limit exceeded 這兩種錯誤之前我一直認為是e

獲取tomcat日誌檔案時間的日誌

隨筆,就一條命令 sed -n '/2017:00:00:/,/2017:01:00:/p' localhost_access_logtime.2017-11-20.txt >test01.log sed -n '/起始時間/,/結束時間/p' 日誌檔名 >

GC overhead limit exceeded : Spark

我在執行Spark程式的時候報錯 java.lang.OutOfMemoryError:GC overhead limit exceeded 伴隨著通常有: java.lang.OutOfMemoryError:Java heap space o

Spark Streaming 整合 SparkSQL處理計算

Spark Streaming之所以成為現在主流的流處理開發計算框架,不僅僅是因為它具有流處理和批處理的能力及支援離線和實時計算雙重特點,更重要的是Spark具有良好的生態,它不僅可以整合Hadoop生態的Hive,使用Hive on Spark進行離線分析,整合Yarn模式,使用Spark

java實現spark streaming與kafka整合進行計算

背景:網上關於spark streaming的文章還是比較多的,可是大多數用scala實現,因我們的電商實時推薦專案以java為主,就踩了些坑,寫了java版的實現,程式碼比較意識流,輕噴,歡迎討論。流程:spark streaming從kafka讀使用者實時點選資料,過濾資

關於java8計算

集合的流式操作 流有序列和並行兩種,序列流上的操作是在一個執行緒中依次完成,而並行流則是在多個執行緒上同時執行。並行與序列的流可以相互切換:通過 stream.sequential() 返回序列的流,通過 stream.parallel() 返回並行的流。相比較序列的流,並行

SODBASE CEP學習(五):計算的類SQL語言EPL

(本文中類SQL語句建模、單元測試建議使用SODBASE Studio,參考示例見視訊教程。 SODBASE CEP中,類SQL語言EPL(事件處理語言)也叫做SODSQL。其基本寫法為 CREATE QUERY 查詢名稱 SELECT 查詢欄位 FROM 流 PAT

計算】Twitter Storm原始碼分析之ZooKeeper的目錄結構

作者: xumingming | 可以轉載, 但必須以超連結形式標明文章原始出處和作者資訊及版權宣告   我們知道Twitter Storm的所有的狀態資訊都是儲存在Zookeeper裡面,nimbus通過在zookeeper上面寫狀態資訊來分配任務,supervisor

Storm和Spark 學習實時分散式計算的設計

0. 背景 最近我在做流式實時分散式計算系統的架構設計,而正好又要參加CSDN博文大賽的決賽。本來想就寫Spark原始碼分析的文章吧。但是又想畢竟是決賽,要拿出一些自己的乾貨出來,僅僅是原始碼分析貌似分量不夠。因此,我將最近一直在做的系統架構的思路整理出來,形成此文。為

spark讀取hdfs資料

名詞解釋: spark streaming: 定義:一個對實時資料進行高容通量、容錯處理的流式處理系統,可以對多種資料來源進行Map、reduce和join等複雜操作,並將結果儲存到外部檔案系統、

SODBASE CEP學習(六):計算的儲存和ETL

許多流式計算應用離不開儲存,也就是把資料存在硬碟上,例如歷史資料的儲存。畢竟硬碟適合長期地儲存大量資料。在介紹具體方法之前,先講一個實際專案裡經常要用到的原則,那就是:儲存讀寫速度要和記憶體計算速度匹配。 怎麼理解呢?例如記憶體計算速度是10萬events/s,儲存讀寫速度

storm 計算框架

大數據 storm 流式計算 一:storm 簡介 二:storm 的原理與架構 三:storm 的 安裝配置 四:storm 的啟動腳本 一: storm 的簡介: 1.1 storm 是什麽: 1. Storm是Twitter開源的分布式實時大數據處理框架,被業界稱為實時版Hadoo

Storm簡介——實時計算介紹

大數據 bsp 要求 角度 size 計算 spa 流量 使用場景 概念 實時流式計算: 大數據環境下,流式數據將作為一種新型的數據類型,這種數據具有連續性、無限性和瞬時性。是實時數據處理所面向的數據類型,對這種流式數據的實時計算就是實時流式計算。 特