我注意到,当我在Spark提交纱线中启动作业时,驱动程序和执行人节点会随机设置。是否可以手动设置此功能,以便当我收集数据并将其写入文件时,可以每次都将其写入相同的节点?
截至目前,我尝试使用的参数是:
spark.yarn.am.port <driver-ip-address>
和
spark.driver.hostname <driver-ip-address>
谢谢!
如果您用 --master yarn --deploy-mode client
提交纱线,则驱动程序将位于您要提交的节点上。
您也可以使用属性为执行者配置节点标签: spark.yarn.executor.nodeLabelExpression
将安排限制节点执行者集的纱线节点标签表达式。仅纱线的版本大于或等于2.6支持节点标签表达式,因此,在与较早版本相对时,此属性将被忽略。
文档 - 在纱线上运行火花 - 最新文档
火花群集可以以yarncluster或yarn-client模式运行。
在纱线群集模式下,Spark驱动程序在应用程序主过程中运行,该进程在集群上由YARN管理,并且客户端计算机在启动应用程序后可以消失。
在纱线 - 客户模式下,驱动程序在客户端中运行流程,应用程序主仅用于从纱线中请求资源。
如您所见,根据模式,火花拾取了应用程序主。直到这个阶段才随机发生。但是,应用程序主请求资源管理器执行任务的工人节点将根据工作节点的可用性随机选择。