例如,我的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.
答案 0 :(得分:2)
数据位置“选择”Spark工作人员。这意味着数据所在节点上的唯一工作人员将正常工作。因此,一种方法是仅将文件保存在这些节点上。在独立模式下没有直接选择特定节点的方法。而且,这意味着工作总是需要从节点之间移动大量数据开始,这不是非常有效。
答案 1 :(得分:1)
您可以使用文档here。
当您使用引导节点执行集群安装时,这些说明和以下文件存在
您首先需要将 MESOS_ATTRIBUTES 添加为here。
只需将以下行添加到SELECT last_name, salary, department_id, ROWNUM as RANK
FROM (SELECT last_name, salary, department_id
FROM employees
ORDER BY salary DESC)
WHERE ROWNUM <= 3;
下您想要的节点上(或您的节点是(slave | master | public)的任何类型),然后重新启动代理服务/var/lib/dcos/mesos-slave-common
>
提示:您可以检查单元文件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
适用于驾驶员
取决于您是希望驱动程序还是执行程序访问所需数据,并且将在具有指定属性的节点上创建docker映像。