Apache spark Spark:理解动态分配

Apache spark Spark:理解动态分配,apache-spark,hadoop,yarn,Apache Spark,Hadoop,Yarn,我已启动具有以下配置的spark作业: --master yarn --deploy-mode cluster --conf spark.scheduler.mode=FAIR --conf spark.dynamicAllocation.enabled=true --conf spark.dynamicAllocation.maxExecutors=19 --conf spark.dynamicAllocation.minExecutors=0 它运行良好并成功完成,但在检查spark hi

我已启动具有以下配置的spark作业:

--master yarn --deploy-mode cluster --conf spark.scheduler.mode=FAIR --conf spark.dynamicAllocation.enabled=true --conf spark.dynamicAllocation.maxExecutors=19 --conf spark.dynamicAllocation.minExecutors=0
它运行良好并成功完成,但在检查spark history ui后,我看到:

我的问题是(我关心的不仅仅是理解问题的答案):

如果spark没有任务要做,为什么要请求最后一个执行者? 如何在动态分配模式下优化作业请求的群集资源


我在纱线上使用Spark 2.3.0。

如果不知道你提交的工作内容,就很难知道Spark在那里做了什么。不幸的是,您提供的配置字符串没有说明Spark在提交作业时实际执行的操作

通过查看历史UI的“SQL”部分(顶部栏的右侧)以及标准输出日志,您可能会更好地了解任务期间发生的事情

通常,阅读Spark工作原理的一个更好的地方是官方页面:


快乐的火花;)

如果不知道你提交的工作内容,就很难知道Spark在那里做了什么。不幸的是,您提供的配置字符串没有说明Spark在提交作业时实际执行的操作

通过查看历史UI的“SQL”部分(顶部栏的右侧)以及标准输出日志,您可能会更好地了解任务期间发生的事情

通常,阅读Spark工作原理的一个更好的地方是官方页面:


快乐的火花;)

您需要遵守使用spark动态分配的两项要求:

  • spark.dynamicAllocation.enable
  • spark.shuffle.service.enabled=>外部洗牌服务的目的是允许在不删除洗牌文件的情况下删除执行者
根据工作负载动态调整资源。如果您不再使用该应用程序,该应用程序将返还资源

我不确定是否有顺序,它只会以整数和指数形式请求执行者,即:一个应用程序将在第一轮中添加1个执行者,然后添加2、4、8等等


您需要遵守使用spark动态分配的两项要求:

  • spark.dynamicAllocation.enable
  • spark.shuffle.service.enabled=>外部洗牌服务的目的是允许在不删除洗牌文件的情况下删除执行者
根据工作负载动态调整资源。如果您不再使用该应用程序,该应用程序将返还资源

我不确定是否有顺序,它只会以整数和指数形式请求执行者,即:一个应用程序将在第一轮中添加1个执行者,然后添加2、4、8等等


由于分配政策:

此外,每轮请求的执行者数量 与上一轮相比呈指数级增长


由于分配政策:

此外,每轮请求的执行者数量 与上一轮相比呈指数级增长


您需要尊重2 req=>它已经配置好并且工作正常,但是您需要了解其行为。thxy您需要尊重2 req=>它已经配置好并且工作正常,但是您需要了解其行为。谢谢