我正在使用java 1.8.0_45和Kafka直接流在Yarn(Apache发行版2.6.0)上运行spark streaming 1.4.0.我也使用scala 2.11支持spark.
我看到的问题是驱动程序和执行程序容器都在逐渐增加物理内存使用量,直到纱线容器杀死它为止.我在驱动程序中配置了高达192M堆和384堆堆空间,但它最终耗尽了它
对于常规GC循环,堆内存似乎很好.在任何此类运行中都没有遇到OutOffMemory
事实上,我仍然没有在卡夫卡队列上产生任何流量.这是我正在使用的代码
object SimpleSparkStreaming extends App {
val conf = new SparkConf()
val ssc = new StreamingContext(conf,Seconds(conf.getLong("spark.batch.window.size",1L)));
ssc.checkpoint("checkpoint")
val topics = Set(conf.get("spark.kafka.topic.name"));
val kafkaParams = Map[String, String]("metadata.broker.list" -> conf.get("spark.kafka.broker.list"))
val kafkaStream = KafkaUtils.createDirectStream[String,String,StringDecoder,StringDecoder](ssc, kafkaParams, topics)
kafkaStream.foreachRDD(rdd => {
rdd.foreach(x => {
println(x._2)
})
})
kafkaStream.print()
ssc.start()
ssc.awaitTermination()
}
Run Code Online (Sandbox Code Playgroud)
我在CentOS 7上运行它.用于spark提交的命令如下
./bin/spark-submit --class com.rasa.cloud.prototype.spark.SimpleSparkStreaming \
--conf spark.yarn.executor.memoryOverhead=256 \
--conf spark.yarn.driver.memoryOverhead=384 \
--conf spark.kafka.topic.name=test \
--conf spark.kafka.broker.list=172.31.45.218:9092 \
--conf spark.batch.window.size=1 \
--conf spark.app.name="Simple Spark Kafka application" …Run Code Online (Sandbox Code Playgroud) apache-kafka hadoop-yarn apache-spark spark-streaming apache-spark-1.4