3

例如,我的 Spark 集群有 100 个节点(工作者),当我运行一项作业时,我只想让它在 10 个特定节点上运行,我应该如何实现这一点。顺便说一句,我正在使用 Spark 独立模块。

为什么我需要上述要求:

One of my Spark job needs to access NFS, but there are only 10 nodes were
permitted to access NFS, so if the job was distributed on each Worker nodes(100 nodes),
then access deny exception would happen and the job would failed.
4

2 回答 2

3

Spark 工作人员由数据位置“选择”。这意味着数据所在节点上唯一的工作人员将工作。因此,一种方法是仅将文件保存在这些节点上。在独立模式下没有直接选择特定节点的方法。此外,这意味着作业总是需要通过在节点之间移动大量数据来开始,这不是很有效。

于 2016-05-29T18:25:28.150 回答
2

您可以使用此处的文档。
当您使用引导节点执行集群安装时,这些说明和以下文件存在 您首先需要添加MESOS_ATTRIBUTES,如下所示
只需在您想要的节点上添加以下行/var/lib/dcos/mesos-slave-common(或您的节点是什么类型(slave|master|public))并重新启动代理服务systemctl restart dcos-mesos-slave.service

提示:您可以检查单元文件上加载的环境文件/etc/systemd/system/dcos-mesos-<mesos-node-type>.service

MESOS_ATTRIBUTES=<attribute>:<value>,<attribute>:<value> ... 

然后按照文档,您可以提交您的火花作业:

docker run mesosphere/spark:2.3.1-2.2.1-2-hadoop-2.6 /opt/spark/dist/bin/spark-submit --deploy-mode cluster   ... --conf spark.mesos.constraints="<attribute>:<value>" --conf spark.mesos.driver.constraints="<attribute>:<value>"  ... 

请记住, :
spark.mesos.constraints适用于执行
spark.mesos.driver.constraints程序,适用于驱动程序,
具体取决于您是否希望驱动程序或执行程序访问您想要的数据,并且将在具有您指定的属性的节点上创建 docker 图像。

于 2018-10-22T13:47:07.417 回答