Я запускаю искровой поток 1.4.0 на пряжу (дистрибутив Apache 2.6.0) с java 1.8.0_45, а также прямой поток Kafka. Я также использую искру с поддержкой scala 2.11.
Проблема, которую я вижу, заключается в том, что оба контейнера драйвера и исполнителя постепенно увеличивают использование физической памяти до момента, когда контейнер с пряжей убивает его. Я сконфигурировал до 192M Heap и 384 от места кучи в моем драйвере, но в итоге он исчерпал его
Память Heap выглядит нормально с обычными циклами GC. Не существует OutOffMemory, встречающегося когда-либо в любых таких прогонах
Infact Я не генерирую никакого трафика в очередях kafka, но это происходит. Вот код, который я использую
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()
}
Я запускаю это на CentOS 7. Команда, используемая для получения очереди, выглядит следующим образом
./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" \
--master yarn-cluster \
--num-executors 1 \
--driver-memory 192m \
--executor-memory 128m \
--executor-cores 1 \
/home/centos/spark-poc/target/lib/spark-streaming-prototype-0.0.1-SNAPSHOT.jar
Любая помощь приветствуется
Привет,
Апурва