Spark streaming 2.0.0 - 在加载几天后冻结

时间:2016-09-02 09:44:58

标签: apache-spark spark-streaming

我们使用Spark 2.0.0在AWS EMR 5.0.0上运行。 从125片碎片Kinesis流消耗。 使用2个消息生成器提供19k个事件/ s,每个消息大小约为1k。 使用20台机器的集群消耗。 代码有一个flatMap(),groupByKey(),persist(StorageLevel.MEMORY_AND_DISK_SER_2())和 重新分区(19); 然后使用foreachRDD()存储到s3; 使用背压和Kryo​​:

sparkConf.set("spark.streaming.backpressure.enabled", "true");
sparkConf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer");

在运行时,Ganglia显示在没有GC的情况下使用内存不断增加。 在某些时候,当没有更多可用内存可供分配时,Spark会停止处理微批,并且传入队列正在增长。 这就是冻结点 - 火花流无法恢复。 在我们的案例中,Spark在压力下运行3.5天后冻结。

问题:我们需要流式传输至少运行一周(最好是更长时间),而不需要重新启动。

Spark cofiguration:

spark.executor.extraJavaOptions -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70 -XX:MaxHeapFreeRatio=70 -XX:PermSize=256M -XX:MaxPermSize=256M -XX:OnOutOfMemoryError='kill -9 %p' 
spark.driver.extraJavaOptions -Dspark.driver.log.level=INFO -XX:+UseConcMarkSweepGC -XX:PermSize=256M -XX:MaxPermSize=256M -XX:OnOutOfMemoryError='kill -9 %p' 
spark.master yarn-cluster
spark.executor.instances 19
spark.executor.cores 7
spark.executor.memory 7500M
spark.driver.memory 7500M
spark.default.parallelism 133
spark.yarn.executor.memoryOverhead 2950
spark.yarn.driver.memoryOverhead 2950
spark.eventLog.enabled false
spark.eventLog.dir hdfs:///spark-logs/

提前致谢。

0 个答案:

没有答案