如何在Spark Streaming中运行并发活动作业以及在执行程序之间执行公平任务调度

时间:2016-12-08 08:19:06

标签: hadoop apache-spark spark-streaming yarn

我在纱线上使用Spark Streaming,我面临以下问题。

问题1:

我在纱线上使用火花流(1.6.1),我总是看到活动作业数为1,这意味着一次只能运行一个作业。我使用了“--conf spark. streaming. concurrentJobs=3”参数,但没有运气,我总能看到只有1个活动作业。

enter image description here

问题2:

我有50个Kafka分区,spark spark创建了50个RDD分区,但我可以看到95%的任务只分配给1个执行程序,其余的执行程序大部分都没有活动任务。

enter image description here

My Spark Submit命令如下:

spark-submit \
--verbose \
--master yarn-cluster \
--num-executors 3  \
--executor-memory 7g \
--executor-cores 3 \
--conf spark.driver.memory=1024m  \
--conf spark.streaming.backpressure.enabled=false \
--conf spark.streaming.kafka.maxRatePerPartition=3 \
--conf spark.streaming.concurrentJobs=3 \
--conf spark.speculation=true \
--conf spark.hadoop.fs.hdfs.impl.disable.cache=true \
--files kafka_jaas.conf#kafka_jaas.conf,user.headless.keytab#user.headless.keytab \
--driver-java-options "-Djava.security.auth.login.config=./kafka_jaas.conf -Dhttp.proxyHost=PROXY_IP -Dhttp.proxyPort=8080 -Dhttps.proxyHost=PROXY_IP -Dhttps.proxyPort=8080 -Dlog4j.configuration=file:/home/user/spark-log4j/log4j-topic_name-driver.properties" \
--conf "spark.executor.extraJavaOptions=-Djava.security.auth.login.config=./kafka_jaas.conf -Dlog4j.configuration=file:/home/user/spark-log4j/log4j-topic_name-executor.properties" \
--class com.spark.demo.StreamProcessor /home/user/demo.jar /tmp/data/out 30 KAFKA_BROKER:6667 "groupid" topic_name

1 个答案:

答案 0 :(得分:-1)

-conf spark.streaming.kafka.maxRatePerPartition = 3

又为什么每个分区的最大速率这么低?这意味着每个分区每秒仅处理3条记录!!!因此,如果微批处理间隔为30秒,并说您有3个分区,它将处理30 * 3 * 3,这是270条记录,似乎很低。