美文网首页
Spark Executor数量设置

Spark Executor数量设置

作者: chenxk | 来源:发表于2019-06-19 10:50 被阅读0次

    我们知道Spark application的运行单元是task,资源分配单元是executor。task数的多少是和RDD的分区数相关的,整个application的并行度是 Executor数 * Task。这里整理一下executor的个数是如何设置的。

    我们通常都使用spark-submit 来提交任务,对于不同的部署模式,需要使用不同的参数来指定executor数,实际生产环境中最常使用的部署模式就是 ON YARN 和 Standalone两种模式。

    Spark ON YARN

    ON YARN模式下可以使用选项 –num-executors 来直接设置application的executor数,该选项默认值是2.。 该选项对应的配置参数是 spark.executor.instances

    如下,我们可以在启动spark-shell时指定executor数

    $ spark-shell --num-executors 5
    

    通过web监控页面可以看到有5个executor


    20190409210940936.png

    Spark Standalone

    在standalone模式下,并没有参数直接指定使用多少个executor数。而是按照如下方式计算而来

    executor 数量 = spark.cores.max/spark.executor.cores

    spark.cores.max 默认没有设置,这时它使用的是 spark.deploy.defaultCores,而这个的默认值是Int.max,也就是不限制,这样应用就会获取所有可用的CPU资源,所以为了限制应用程序使用CPU资源,用户需要设置spark.core.max配置项,约束每个应用程序所能申请的最大CPU核数。
    spark.executor.cores 该参数用以设置每个executor使用的CPU资源,在 ON YARN模式下,默认是1,而standalone模式下是worker节点上所有可用的CPU的资源,显然在实际生产环境中,这样做也不合理,因此需要设置spark.executor.cores配置项,用于设置在standalone模式下每个Executor使用的CPU核数。

    最后补充说明一下单个executor的资源配置,也就是一个executor使用的CPU和内存资源

    选项 –executor-memory 可以指定每个executor的内存,默认是 1G,对应的配置项是 spark.executor.memory,该配置项默认单位是MB,也可以显示指定单位 (如2g,8g)
    选项 –executor-cores (适用于ON YARN和standalone模式) 可以指定每个executor的内存,对应的配置项是 spark.executor.cores

    相关文章

      网友评论

          本文标题:Spark Executor数量设置

          本文链接:https://www.haomeiwen.com/subject/umshqctx.html