簡體   English   中英

當我增加資源時,Spark Streaming Job OOM

[英]Spark Streaming Job OOM when I increase resources

我有一個4節點的Spark Standalone集群,上面運行着Spark Streaming作業。

當我以每個執行者提交具有7個核心的作業時,一切運行順利:

spark-submit --class com.test.StreamingJob --supervise --master spark://{SPARK_MASTER_IP}:7077 --executor-memory 30G --executor-cores 7 --total-executor-cores 28 /path/to/jar/spark-job.jar

當我將每個執行器的內核數增加到24個時,沒有批處理得到處理,並且我看到java.lang.OutOfMemoryError:無法在執行器日志中創建新的本機線程。 執行者然后繼續失敗:

spark-submit --class com.test.StreamingJob --supervise --master spark://{SPARK_MASTER_IP}:7077 --executor-memory 30G --executor-cores 24 --total-executor-cores 96 /path/to/jar/spark-job.jar

錯誤:

17/01/12 16:01:00 ERROR SparkUncaughtExceptionHandler: Uncaught exception in thread Thread[Shutdown-checker,5,main]
java.lang.OutOfMemoryError: unable to create new native thread
        at java.lang.Thread.start0(Native Method)
        at java.lang.Thread.start(Thread.java:714)
        at io.netty.util.concurrent.SingleThreadEventExecutor.shutdownGracefully(SingleThreadEventExecutor.java:534)
        at io.netty.util.concurrent.MultithreadEventExecutorGroup.shutdownGracefully(MultithreadEventExecutorGroup.java:146)
        at io.netty.util.concurrent.AbstractEventExecutorGroup.shutdownGracefully(AbstractEventExecutorGroup.java:69)
        at com.datastax.driver.core.NettyOptions.onClusterClose(NettyOptions.java:190)
        at com.datastax.driver.core.Connection$Factory.shutdown(Connection.java:844)
        at com.datastax.driver.core.Cluster$Manager$ClusterCloseFuture$1.run(Cluster.java:2488)

我發現了這個問題,並嘗試大幅提高上限,但沒有效果。

每個盒子都有32個核心和61.8 GB內存。 流作業是用Java編寫的,並在Spark 2.0.0上運行,並通過spark-cassandra-connector-java_2.10 1.5.0-M2連接到Cassandra 3.7.0。

數據是非常小的滴流,每秒少於100個事件,每個事件小於200B。

聽起來您內存不足;)。

更詳細一點,Spark使用的內核數量與並行處理的信息量直接相關。 您基本上可以將每個Core視為正在處理完整的Spark Partition數據,並且可能需要將完整的內容駐留在內存中。

每個執行程序7個內核意味着7個Spark分區正在同時工作。 將該數字最多提高到24,意味着將使用大約4倍的內存。 這很容易在各個地方引起OOM。

有幾種方法可以解決此問題。

  1. 向執行器JVM分配更多內存
  2. 縮小Spark分區的大小(較小的分區意味着在任何給定時間內存中的數據更少)
  3. 確保您沒有在內存中緩存任何RDD(從而耗盡了系統資源)
  4. 在遇到麻煩之前,請減少正在使用的數據量,獲取子集或嘗試在服務器上進行過濾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM