![](/img/trans.png)
[英]How to resolved “Error running job streaming job” in Spark streaming program?
[英]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。
有幾種方法可以解決此問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.