在最近的 AWS Re:Invent 大会上,Amazon发布了 AWS Batch 的预览版。通过 AWS Batch,用户可以对他们云端的调度服务和工作负载进行优化。Amazon 推出这项服务是为了满足大量 AWS 客户的需求,他们基于 EC2 实例、容器和 CloudWatch 建立他们自己的批处理平台。
批次和作业调度器并不是什么新的模式。一直以来,调度器都是运行在固定的本地基础设施集群上。人们要么过度构建基础设施,不能物尽其用,要么基础设施构建不足,造成机会的流失,这些都是不可避免的。AWS 首席布道师 Jeff Barr看到了基于云平台构建现代化调度平台的机会:
我们相信云计算可以让批处理计算模型变得更好,让它可以更快地访问更多不同类型的 EC2 实例,可以根据具体需求弹性地伸缩,并带来新的计费模型,这个计费模型根据实际处理能力来计费,经济实惠。
AWS Batch 不需要在服务器端安装任何东西,而且可以动态分配计算资源,它可以加入 Amazon Spot 实例,这样就可以抢占 Amazon EC2 空闲的计算资源。AWS Batch 服务还提供了作业优先级和依赖管理特性。Amazon 希望客户可以把精力集中在业务需求上,让 AWS Batch 来处理剩下的事情。
在 AWS re:Invent 大会的“ AWS Batch:在 AWS 上运行简单高效的批处理计算”讨论环节,AWS 首席产品经理 Jamie Kinney 介绍了有关 AWS Batch 的几个概念:
- Jobs是作业单元,它们被提交到 Job Queues,并按照优先级排序,一直待在队列里直到有计算资源来执行它们。
- Job Definitions指定如何执行 Jobs。每个作业都需要引用一个 Job Definition,Job Definition 的参数可以被覆盖,包括 vCPU、内存、挂载点和容器属性。
- Job Queues用来保存 Jobs,直到它们被执行。Jobs 会等待它们所依赖的 Jobs 执行完毕,或者等待分配系统资源。
- Compute Environments包括托管和非托管两种环境。在托管环境里,你可以提出业务需求(比如实例类型、对 vCPU 的需求量,等等),AWS 将会为你启动和扩展资源。而在非托管环境里,你可以启动和管理自己的资源,比如容器。
- Scheduler对已提交到 Job Queue 的 Jobs 进行评估,评估它们在何时、何处以及如何被执行。Jobs 几乎是按照它们提交的顺序来执行的,只要它们所依赖的条件得到满足。
Amazon 提供了 AWS Batch 适用性指南。对于需要大量传递数据的场景,比如ETL 或大数据处理,Amazon 建议客户使用EMR、数据管道、Redshift 或其它相关的数据处理工具。而对于存在很多小型调度作业的场景,可以使用AWS,不过Kinney认为客户“需要一个工作流或作业调度系统来管理这些作业。”
Kinney认为 AWS Batch 就是一个理想的工具,它特别适用于
那些在异构计算机上运行大量大大小小计算任务的客户。
AWS Batch 目前还处在预览版阶段,只在美国东部(弗吉尼亚北部)地区可用。等到服务的可用性达到通用标准,就会在其它地区开放。根据 AWS Batch 的路线图,AWS Batch 将在后期支持作业数组,并且可以使用 AWS Lambda 来执行作业。
评论