首页 > 解决方案 > spark 独立集群模式下的 spark.driver.cores 设置

问题描述

我正在使用 Spark Standalone 集群模式并用于"spark.driver.cores"设置驱动程序的核心数。但是每次 UI 都显示为“0”,如图所示在此处输入图像描述

甚至在代码中设置这个值

.set("spark.driver.cores","14")                                                   

似乎不起作用。在独立集群模式下应该如何设置这个值?

谢谢 ===UPDATE=== 这是 spark-submit 命令

        spark-submit --jars "file:///<path to jar>" --master spark://$MASTER:7077 --conf "spark.cores.max=330" 
    --conf "spark.executor.core=5" 
    --conf "spark.sql.broadcastTimeout=10000000" 
    --conf "spark.sql.shuffle.partitions=1000" 
    --conf "spark.default.parallelism=1000"  
    --conf "spark.executor.memory=40g"  
    --conf "spark.driver.memory=40g" 
    --conf "spark.driver.extraJavaOptions=-XX:+UseCompressedOops -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps" 
    --conf "spark.driver.maxResultSize=40g" 
--conf "spark.network.timeout=10000000" 
--class "<my class>" "<path to jar>" <other parameters>....

集群中的每个节点都有 24 核和 64GB 内存。我希望这有帮助。谢谢你的帮助。

标签: apache-spark

解决方案


`--conf "spark.executor.core=5"` is wrong

应该是(缺少s)

--conf "spark.executor.cores=5" 

第二件事是如果你没有设置spark.driver.cores是火花提交。

.set("spark.driver.cores","14")应该像


val sparkConf = new SparkConf()
 .set("spark.driver.cores", "2")
   .setAppName(this.getClass.getSimpleName)
   .setMaster("local[*]")

   val spark: SparkSession = SparkSession.builder().config(sparkConf).appName(this.getClass.getName)
   .master("local[*]").getOrCreate()

提示:要验证您正在应用什么配置: spark.sparkContext.getConf.getAll.foreach(println)将打印应用于创建火花会话的所有配置。

在上面的例子中:

(spark.app.name,com.examples.DataFrameCSVExample$)
(spark.app.id,local-1558579973832)
(spark.driver.cores,2)
(spark.master,local[*])
(spark.executor.id,driver)
(spark.driver.host,192.168.19.1)
(spark.driver.port,53962)

如果你能在这里看到,spark-ui 应该显示相同的......

希望你明白!!!


推荐阅读