结论:部署方式为local时,master参数为local;否则master参数为yarm。
今天把在dolphinscheduler提spark任务配置通了,但是在实例任务的日志中,我发现spark任务的提交命令spark-submit中--master参数总是yarm,而且任务配置页面也无该阐述的配置,遂,去分析源码去了。
一、首先,定位源码文件路径:dolphinscheduler-task-plugin\dolphinscheduler-task-spark\src\main\java。
二、可以先扫一眼SparkConstants.java,里面是定义的一些配置常量,混个眼熟,方便后面分析。

三、定位SparkTask.java的populateSparkOptions函数,下面图片已批注一些关键信息

无外乎,两种情况嘛:
deployMode!="local"时,args列表里的值为 --master yarn --deploy-mode deployMode
deployMode=="local"时,args列表里的值为 --master local
后面其他的配置阐述就不详细说了,本文关注 --master 参数。
populateSparkOptions函数最后return args;
四、定位调用populateSparkOptions函数的地方,看args参数怎么融入spark-submit任务提交命令中的。

可以看到它用空格将args这个list对象里的元素连接起来了,为拼接成提交命令做准备。
文章讲述了在DolphinScheduler中配置Spark任务时遇到的问题,即--master参数始终为YARM。作者通过分析源码发现,在deployMode不等于local时,master参数设为yarm,否则设为local。问题出现在populateSparkOptions函数,该函数构造了spark-submit命令的参数。最后,作者指出args列表中的元素会被用于构建最终的提交命令。

被折叠的 条评论
为什么被折叠?



