Apache spark 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
--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=>外部洗牌服务的目的是允许在不删除洗牌文件的情况下删除执行者
您需要遵守使用spark动态分配的两项要求:
- spark.dynamicAllocation.enable
- spark.shuffle.service.enabled=>外部洗牌服务的目的是允许在不删除洗牌文件的情况下删除执行者
由于分配政策: 此外,每轮请求的执行者数量 与上一轮相比呈指数级增长
由于分配政策: 此外,每轮请求的执行者数量 与上一轮相比呈指数级增长
您需要尊重2 req=>它已经配置好并且工作正常,但是您需要了解其行为。thxy您需要尊重2 req=>它已经配置好并且工作正常,但是您需要了解其行为。谢谢