2017-08-08 52 views
1

我使用spark 2.1.0,并且在我的火花流应用程序中发现了奇怪的行为。在第一次运行时,我无法更改执行程序的内核数量。应用程序在火花独立群集上运行。第一次运行后无法更改火花执行程序的核心数

第一次我跑我的火花流应用程序以这种方式

spark-submit --driver-java-options -Denv=test --master spark://my_server:6066 --deploy-mode cluster --driver-memory 3G --driver-cores 4 --executor-memory 3G --executor-cores 4 --conf spark.metrics.conf=/usr/lib/spark/conf/metrics_analytics.properties --class com.MyApp hdfs:///apps/app.jar 

比我停止我的应用程序

spark-submit --master spark://my_server:6066 --kill driver-20170807163818-0051 

,我跑我的火花(3%执行核心)

spark-submit --driver-java-options -Denv=test --master spark://my_server:6066 --deploy-mode cluster --driver-memory 3G --driver-cores 4 --executor-memory 3G --executor-cores 3 --conf spark.metrics.conf=/usr/lib/spark/conf/metrics_analytics.properties --class com.MyApp hdfs:///apps/app.jar 

{[my_server] out: "action" : "CreateSubmissionResponse", 
[my_server] out: "message" : "Driver successfully submitted as driver-20170808093847-0052", 
[my_servero] out: "serverSparkVersion" : "2.1.0", 
[my_server] out: "submissionId" : "driver-20170808093847-0052", 
[my_server] out: "success" : true 
[my_server] out: } 

这是我的火花配置

.setMaster(configuration.spark.master) //it is better to set master as a spark submit param 
    .set("spark.cassandra.connection.host", configuration.cassandra.server) 
    .set("spark.cassandra.auth.username", configuration.cassandra.user) 
    .set("spark.cassandra.auth.password", configuration.cassandra.password) 
    .set("spark.cassandra.connection.keep_alive_ms", configuration.cassandra.timeout.toString) 
    .set("spark.streaming.backpressure.enabled", "true") 
    .set("spark.streaming.kafka.maxRatePerPartition", configuration.spark.maxRatePerPartition.toString) 
    .set("spark.streaming.stopGracefullyOnShutdown", "true") 
    .set("spark.metrics.namespace", "my-app") 
    .set("spark.cassandra.output.consistency.level", "LOCAL_QUORUM") 

即使当我更改执行程序的内核数时,我的应用程序仍然使用4个内核而不是3个。 我也删除了检查点数据,但它没有帮助。

我想知道,如果它只是UI问题,或者由于某种原因我无法为我的应用程序更改配置(某些元数据按应用程序名称为作业存储?)。

这里是我的 Spark UI

+0

能否请您包含Spark UI环境选项卡的屏幕截图,以验证您是否已正确设置作业,以在3个执行器核心而不是4个核心上运行? –

+0

是的,这里是我的Spark UI [屏幕](https://i.stack.imgur.com/oxVBQ.png) – Marious

回答

1

最后,我已经解决了这个问题,有其产生问题的两个问题。

  1. --num-executors似乎不适用于独立群集。我不得不使用--total-executor-cores。
  2. 为了让Spark看到更改,我必须在更改核心数后清理检查点目录。

这个检查点对于部署应用程序,改变配置,广播等是非常痛苦的。好的结构化流解决了一些问题,但仍然不是每个人都会使用这个新的API。

相关问题