我只想在我的AWS EMR集群中的任务节点上运行我的spark执行器,而纱线标签是实现这一点的方法之一。我可以在提交火花时指定标签。我想实现以下
- 在集群启动期间添加自定义标签
- 在自动缩放期间,将此标签与加入我的集群的任何节点关联
我想这样做,这样我就可以通过确保所有执行器都在现场实例上运行来降低集群的成本。
我们通过以下过程实现了它。
- 在Maser节点启动期间,我们运行自定义脚本,在其中创建一个新的TASK标签。EMR会自动创建Core级别
- 在核心和任务节点引导期间,我们从元数据API中识别节点类型,并根据实例类型将适当的标签附加到机器上。如果它是按需实例,我们会附加CORE,否则我们会将TASK标签添加到节点
- 当我们提交我们的spark作业时,我们向executor节点提到标签表达式为TASK,这确保了仅对TASK节点上的所有执行器