我使用以下配置启动了火花作业:
--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
它运行良好并成功完成,但是在检查了火花历史ui之后,这就是我看到的:
我的问题是(我对解决方案的了解不止于此):
如果没有任务可做,为什么spark请最后一个执行者执行? 如何在动态分配模式下优化作业请求的群集资源?
我在纱线上使用Spark 2.3.0。
答案 0 :(得分:0)
不知道您提交的工作的内容就很难知道Spark在这里做了什么。不幸的是,您提供的配置字符串并没有说明提交作业后Spark实际执行的操作。
通过查看历史记录UI(顶部栏的右侧)的“ SQL”部分以及标准输出日志,您可能会更好地了解任务期间发生的情况。
一般来说,了解Spark工作原理的更好的地方之一是官方页面:https://spark.apache.org/docs/latest/cluster-overview.html
快乐的火花;)
答案 1 :(得分:0)
您需要遵守2个使用Spark动态分配的要求:
根据工作量动态调整资源。如果您不再使用该应用程序,它将退还资源。
我不确定是否有命令,它只会按轮数和指数地请求执行者,即:一个应用程序将在第一轮中添加1个执行者,然后依次添加2、4、8等。 >
答案 2 :(得分:0)