aws batch 理解和使用batch进行批处理计算

news2024/11/15 15:38:54

文档

  • Compute Resource Memory Management
  • Running Workload on AWS Batch

aws batch 是云上的批处理平台,通过托管环境减少了管理成本。包括配置大量计算资源,更具任务负载优化资源分配。

基本概念

  • job(任务),提交到batch的工作单元,可以是shell脚本,二进制或docker容器。job之间可以引用和依赖

  • job definition(任务定义),类似于ecs中的任务定义,主要是对负载的资源,环境变量,文件系统等进行配置。

  • job queues,容纳作业的队列,通过队列将任务和计算环境关联。可以指定优先级

  • compute environment,托管的计算环境,可以指定平台类型,计算资源数量等

计算环境

选择和配置

batch计算环境实际上就是在配置ecs环境(不考虑eks的情况下),可以将ec2类型的计算环境视作ecs实例,同样使用ecs优化的ami,同样需要访问ecs服务。

计算环境有以下分类

  • 托管计算环境
  • 非托管计算环境,需要保证ami符合ecs规范

对于ec2类型的自定义计算环境支持,有两种方式

  • 自定义ami,需要符合ecs规范

  • 启动模板支持,避免对ami进行定制

    https://docs.amazonaws.cn/en_us/batch/latest/userguide/launch-templates.html

计算环境的选择

如果需要访问特定实例配置(特定处理器、GPU 或基础架构)或非常大规模的工作负载,则应该在 EC2 中运行作业。

Fargate 作业在初始扩展停止工作的情况下启动更快,因为不需要等待 EC2 实例启动。然而,对于较大的工作负载,EC2 实例可能更快,因为 Batch 重用实例和容器映像来运行后续作业。

如果有以下情景推荐使用ec2计算环境

  • More than four vCPUs
  • More than 30 gibibytes (GiB) of memory
  • A GPU
  • An Arm-based Amazon Web Services Graviton CPU
  • A custom Amazon Machine Image (AMI)
  • Any of the linuxParameters parameters

初次使用batch会创建一个service role,这个角色代表batch调用其他aws service

Amazon Batch uses a service-linked role that includes all the permissions Batch requires to call other Amazon Web Services services on your behalf. If you do not have a Batch service-linked role, we will create it for you.

最少vcpu数量,最小vcpu为0则无任务时无实例配置

By keeping this set to 0 you will not have instance time wasted when there is no work to be run. If you set this above zero you will maintain that number of vCPUs at all times.

实例类型,默认为Optimal类型,即CRM实例

Optimal chooses the best fit of M4, C4, and R4 instance types available in the region. Jobs define their vCPU and memory requirements at submission and that information is used to match the job with the most appropriately sized instance.

分配策略

Allocation Strategies allow you to choose how Batch launches instances on your behalf. We recommend Best Fit Progressive for On-Demand CEs and Spot Capacity Optimized for Spot CEs

网络要求,batch计算环境必须和ecs终端节点通信

计算环境更新

计算环境的更新有一定限制

https://docs.amazonaws.cn/en_us/batch/latest/userguide/updating-compute-environments.html

  • fargate环境的更新,只能更新安全组和子网
  • ec2环境的更新,可能会导致实例的替换
  • 缩放更新和基础设施更新的区别
  • 对于amiid的设置,由于有优先级顺序( first the launch template, then the imageId setting, and finally the imageIdOverride setting.),需要额外关注

计算实例的具体配置

创建一个托管ec2的计算环境,创建计算队列关联这个计算环境,保持默认调度策略为FIFO,提交测试任务查看启动的实例。实例的userdata如下

  • 配置特定的环境变量
  • 启动实例加入ecs集群
Content-Type: multipart/mixed; boundary="==BOUNDARY==" 
MIME-Version: 1.0 

--==BOUNDARY== 
MIME-Version: 1.0 
Content-Type: text/x-shellscript; charset="us-ascii"

#!/bin/bash 
echo ECS_CLUSTER=AWSBatch-first-ec2-environment-9378b7bb-cecc-378f-8eeb-e99e9a80dee7>>/etc/ecs/ecs.config 
echo ECS_DISABLE_IMAGE_CLEANUP=false>>/etc/ecs/ecs.config 
echo ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION=2m>>/etc/ecs/ecs.config 
echo ECS_IMAGE_CLEANUP_INTERVAL=10m>>/etc/ecs/ecs.config 
echo ECS_IMAGE_MINIMUM_CLEANUP_AGE=10m>>/etc/ecs/ecs.config 
echo ECS_NUM_IMAGES_DELETE_PER_CYCLE=5>>/etc/ecs/ecs.config
echo ECS_RESERVED_MEMORY=32>>/etc/ecs/ecs.config
echo ECS_INSTANCE_ATTRIBUTES={\"com.amazonaws.batch.compute-environment-revision\":\"0\"}>>/etc/ecs/ecs.config
--==BOUNDARY==
MIME-Version: 1.0
Content-Type: text/x-shellscript; charset="us-ascii"

#!/bin/bash
echo ECS_CLUSTER=AWSBatch-first-ec2-environment-9378b7bb-cecc-378f-8eeb-e99e9a80dee7>>/etc/ecs/ecs.config

--==BOUNDARY==--

计算环境的资源

batch为ecs-agent和其他关键系统进程保留了32 MiB 的内存。此内存不可用于作业分配

https://docs.amazonaws.cn/en_us/batch/latest/userguide/memory-management.html

eks环境的资源预留在启动脚本里有所体现

https://docs.amazonaws.cn/en_us/batch/latest/userguide/memory-cpu-batch-eks.html

相关错误

任务始终出于runnable状态,表示当前没有资源可用,ecs实例未能成功加入集群。手动登录到ec2实例上,查看ecs-agent日志

说明计算环境的实例角色配置错误,需要设置为ecs实例角色

https://docs.amazonaws.cn/zh_cn/AmazonECS/latest/developerguide/instance_IAM_role.html

level=error time=2023-03-01T05:23:40Z msg="Error registering container instance" error="AccessDeniedException: User: arn:aws-cn:sts::xxxxxxxxxx:assumed-role/AmazonSSMRoleForInstancesQuickSetup/i-0696aa64beb712118 is not authorized to perform: ecs:RegisterContainerInstance on resource: arn:aws-cn:ecs:cn-north-1:xxxxxxxxxx:cluster/AWSBatch-first-ec2-environment-9378b7bb-cecc-378f-8eeb-e99e9a80dee7 because no identity-based policy allows the ecs:RegisterContainerInstance action"

任务配置

job role和task role的区别,batch的任务角色实际上就是ecs任务的角色,对于fargate任务类型是必须的

note:A job role is required for jobs that runs on Fargate resources.

任务状态

  • SUBMITTED,任务提交但未调度,调度器判断依赖,存在依赖进入pending状态

  • PENDING,存在对其他任务的依赖,满足依赖关系后进入runnable状态

  • RUNNABLE,等待计算环境有可用计算资源

    任务始终处于runnable的错误排查

  • STARTING,任务正在启动,下载image运行任务后进入running状态

  • RUNNING,任务运行,失败是根据重试策略重试并进入runnable状态

    任务重试的情形:容器退出非0退出码,实例故障,aws服务故障

  • SUCCEEDED,任务成功结束,至少持续7天

  • FAILED,任务失败结束,至少持续7天

注意:计算环境中运行 GPU 任务的所有实例类型都必须来自p2``p3p4``g3g3sg4、或g5实例系列。如果不这样做,GPU 作业可能会停留在RUNNABLE状态中

在这里插入图片描述

在这里插入图片描述

任务超时时,容器会收到 SIGTERM 信号,以便为应用程序提供正常关闭的机会。如果容器在 30 秒后仍在运行,则会发送 SIGKILL 信号以强制关闭容器。batch任务没有最大超时时间的限制,但是fargate任务运行时间超过14天可能不可用。

数组和多节点任务

数组任务共享参数(如作业定义、vCPU 和内存),任务分布在多个主机上并行运行。

https://docs.amazonaws.cn/batch/latest/userguide/array_jobs.html

batch可以在多节点运行 parallel 任务,但是有诸多限制

支持基于 IP 的节点间通信的框架兼容。示例包括 Apache MXNet TensorFlow、Caffe2 或消息传递接口 (MPI)。每个多节点并行作业都包含一个主节点,这是最先启动的节点。主节点启动之后,子节点会启动并开始运行。只有当主节点退出时,任务才会完成。然后所有子节点都将停止

创建任务定义

任务定义类似于ecs中的任务定义,指定了任务的一些属性(image,内存和cpu,运行命令,数据卷,角色等),任务启动时可以对任务定义中的一些参数进行修改

任务定义的参数说明

任务定义的完整json模板

任务定义同样需要区分计算环境,并且分为单节点和多节点任务定义

batch任务定义几乎能够控制容器的所有可用参数

  • 基本配置,计算平台(ec2,fargate,eks),超时设置,调度优先级,重试策略
  • 容器配置,容器image,入口指令,角色和执行角色,cpu和内存
  • 系统配置,用户名,文件系统,共享内存,交换内存,交换行为控制,设备卷映射,日志驱动

对于ec2类型的任务,支持的配置相对更多,例如日志驱动的数量上

总的来说batch的任务定义和ecs任务定义大同小异,区别在于参数的灵活性和多节点的支持

batch任务定义允许使用参数对任务定义动态配置,在任务定义中指定占位符,然后通过参数进行替换即可

https://docs.amazonaws.cn/en_us/batch/latest/userguide/example-job-definitions.html#example-use-parameters

多节点并行任务不支持fargate,相对单节点任务定义的区别如下

  • 需要指定node数量和主节点索引值

    在这里插入图片描述

  • 增加了一项叫做node range的配置

    使用节点索引值的节点范围。范围 0:3 表示索引值为 0 到 3 的节点。如果省略起始范围值(:n),则将使用 0 来开始范围。如果省略结束范围值(n:),则将使用可能的最高节点索引来结束范围。

    在这里插入图片描述

任务队列

任务提交后存在在任务队列中,并由batch调度程序调度到计算环境中运行

队列可以设置优先级,调度程序会根据队列的优先级,选择高优先级队列中的任务执行

任务的调度

batch任务调度器,决定了任务的运行时间,地点以及运行的方式

队列的默认调度策略为FIFO,如果不设置调度策略则创建后无法再次添加,添加调度策略后可以替换但不能删除

调度策略的共享标识符设置,能够对工作负载进行区分

Amazon Batch 调度程序使用(T * weightFactor)公式跟踪每个公平共享标识符的使用情况,其中 T 是 vCPU 随时间的使用情况。调度程序从共享标识符中选择使用率最低的作业

调度策略可以手动创建和定制,参数如下

"fairsharePolicy": {
   "computeReservation": number,
   "shareDecaySeconds": number,
   "shareDistribution": [
      {
         "shareIdentifier": "string",
         "weightFactor": number
      }
   ]
}

故障排查的参考

  • https://aws.amazon.com/cn/premiumsupport/knowledge-center/batch-docker-timeout-error/
  • https://docs.aws.amazon.com/zh_cn/batch/latest/userguide/troubleshooting.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/381962.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言-结构体【详解】

一、 结构体的基础知识 结构是一些值的集合,这些值称为成员变量结构的每个成员可以是不同类型的变量 (1)结构体的声明 写法一: 注: 括号后边的分号不能忘结构体末尾可以不创建变量,在主函数中再创建 struc…

【ChatGPT】sqlachmey 多表连表查询语句

感受下科技带来的魅力,这篇文章是通过ChatGPT自动生成的,不得不说技术强大!!! 在SQLAlchemy中进行多表连接查询可以使用join()方法或join()函数,具体用法如下: join()方法 join()方法可以在SQLAlchemy ORM中的查询中使用。假设…

根据指定函数对DataFrame中各元素进行计算

【小白从小学Python、C、Java】【计算机等级考试500强双证书】【Python-数据分析】根据指定函数对DataFrame中各元素进行计算以下错误的一项是?import numpy as npimport pandas as pdmyDict{A:[1,2],B:[3,4]}myDfpd.DataFrame(myDict)print(【显示】myDf)print(myDf)print(【…

SMILES标准化方法以及其中的一个坑(手性)

rdkit.Chem.MolToSmiles()方法是用于将RDKit分子对象转换为SMILES字符串的方法。它的参数如下: mol:必需,要转换为SMILES字符串的RDKit分子对象。isomericSmiles:bool类型,是否生成同分异构体SMILES,默认为…

培训班出身的同学简历怎么做?面试要注意哪些?来自资深大厂HR的忠告

目录 1 不少培训班候选人的简历中,缺乏足够的商业项目年限 2 直接描述培训班学习经历会带来的负面影响 3 大龄转行Vs年轻的初级程序员,公司一般会如何选择? 4 经过培训班突击后,可以先面试小公司 5 面试官怎么面试有培训班经历…

安卓开发到底是做什么的

前言 在某平台看到了这样一个问题: 要知道,安卓开发是当前软件行业中的一个热门方向,它涉及到使用 Java 或 Kotlin 语言开发应用程序,运行在安卓操作系统上的手机、平板电脑、电视等设备上。在过去的几年中,随着智能…

追溯ChatGPT

ChatGPT 国内趋势 在国际学术界看来,ChatGPT / GPT-3.5 是一种划时代的产物 它与之前常见的语言模型 (Bert/ Bart/ T5) 的区别,几乎是导弹与弓箭的区别,一定要引起最高程度的重视 国际上的主流学术机构 (如斯坦福大学,伯克利加…

Ep_计网面试题-UDP实现TCP?

其实把TCP优点拿过来就行 直接上答案: 1、添加seq/ack机制,确保数据发送到对端 2、添加发送和接收缓冲区 3、添加超时重传机制 视频讲解: https://edu.csdn.net/course/detail/38090 点我进入 面试宝典 很多人不知道面试问什么,或者其他的XXGuide,那里边的太多没…

示波器上位机软件下载安装教程

软件:示波器软件NS-Scope 语言:简体中文 环境:NI-VISA安装环境:Win10以上版本(特殊需求请后台私信联系客服) 硬件要求:CPU2GHz 内存4G(或更高)硬盘500G(或更高) 驱动…

第十二 代码块、设计模式(懒汉、饿汉)

代码块概述 ●代码块是类的5大成分之一(成员变量、构造器,方法,代码块,内部类),定义在类中方法外。 ●在ava类下,使用{}括起来的代码被称为代码块。 代码块分为 静态代码块: 格式:static{ 特点:需要通过static关键字修…

企业个人,没有品牌不好混

企业、个人没品牌没法持续混下去 “品牌资产”需要持续积累 频繁切换,品牌无法立 趣讲大白话:没点品牌没法混 【安志强趣讲信息科技91期】 ******************************* 企业品牌资产:指能给企业带来效益的消费者品牌认知,包括…

『C/C++养成计划』C++中的双冒号::名解析(Scope Resolution Operator)

C中的双冒号::名解析(Scope Resolution Operator)! 文章目录1. 访问命名空间中的成员2. 访问类中的静态成员3. 嵌套类访问4. 在类之外定义函数5. 当存在具有相同名称的局部变量时,要访问全局变量6. C模板参数的自动推导参考文献C中的双冒号名解析&#…

外贸人如何写出优秀的开发信?附详细思路

如何写出优秀的开发信?最近做出口生意的客户都在抱怨,开发信的回复率越来越低,其实原因有很多,有时候并非自己的能力实在很欠缺。原因总结如图:第一:市场不景气这个就是就属于客观因素了,这也许…

InstructGPT论文笔记

论文链接:https://arxiv.org/pdf/2203.02155.pdf 1 摘要 做的事: 1、标注了数据,问题和答案写出来,然后训练模型 2、收集数据集,排序模型的输出,使用强化学习训练这个排序的过程 效果层面来说&#xff1…

思迅软件端口不通导致软件和软锁报错的问题

一、端口不通导致软件和软锁报错的问题 问题说明:打开软件提示到:xxx.xxx.xxx.xxx失败! 处理步骤1: 假设软锁服务器IP为192.168.0.1,分别在服务器本机和客户端电脑测试软锁服务: 在服务器的浏览器中访问地址: http:/…

ChatGPT(GPT3.5) OpenAI官方API正式发布

OpenAI社区今天凌晨4点多发送的邮件,介绍了ChatGPT官方API的发布。官方介绍文档地址为“OpenAI API”和“OpenAI API”。 ChatGPT(GPT3.5)官方API模型名称为“gpt-3.5-turbo”和“gpt-3.5-turbo-0301”。API调用价格比GPT text-davinci-003模型便宜10倍。调用费用为…

补档:红黑树代码实现+简略讲解

红黑树讲解和实现1 红黑树介绍1.1 红黑树特性1.2 红黑树的插入1.3 红黑树的删除2 完整代码实现2.1 rtbtree.h头文件2.2 main.c源文件1 红黑树介绍 红黑树( Red-Black tree,简称RB树)是一种自平衡二叉查找树,是计算机科学中常见的一种数据结构&#xff0c…

python画直方图,刻画数据分布

先展示效果 准备一维数据 n 个数据元素计算最大值,最小值、均值、标准差、以及直方图分组 import numpy as np data list() for i in range(640):data.append(np.random.normal(1)) print(data)z np.histogram(data, bins64) print(list(z[0])) ### 对应 x 轴数据…

【C语言】LeetCode 27. 移除元素 的n种解法

文章目录题目描述解法一 快慢下标解法二 数组移位题目描述 OJ链接:27. 移除元素 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(…

帮助100w人成功入职的软件测试面试常见问题以及答案

测试面试题怎么来设计测试方案根据测试需求(包括功能需求和非功能性需求),识别测试要点,识别测试环境要求,安排测试轮次,根据项目计划和开发计划做整体的测试安排。被测试的特性:通过对需求规格…