容器!利器!批量计算AWS Batch

AWS Batch 服务近期已在 AWS 中国区域上线运行。 AWS Batch 已在全球范围内 广泛服务于基因测序、数字媒体渲染、科学研究、金融服务等高性能计算(HPC)的 业务场景中。本文通过一个只需五个步骤的动手实践来示例如何利用 AWS Batch 快速 搭建 HPC 集群, 以帮助您快速上手运用 AWS Batch 服务

-- D.C

aws batch文档

AWS Batch 基本介绍

一句话理解:把分析流程打包成docker,批量提交到aws,不用去管开什么机器,batch会帮你搞定,跑完自动释放资源,随用随开,用完就关。

AWS Batch 让开发人员、科学家和工程师能够轻松高效地在 AWS 上运行成千上万个批 处理计算作业。 AWS Batch 可根据提交的批处理作业的卷和特定资源需求动态预置最 佳的计算资源(如 CPU 或内存优化实例)数量和类型。借助 AWS Batch,您无需安装 和管理运行您的作业所使用的批处理计算软件或服务器集群,从而使您能够专注于分 析结果和解决问题。 AWS Batch 有着丰富的功能特性,支持动态计算资源预置和扩 展,支持精细作业定义和权限控制, 支持紧密耦合型的 HPC 工作负载,可以基于优先 级来进行任务安排,具有集成的监控和日志记录。

AWS Batch 具有的优势包括:

应用场景(基因)

生命科学中 DNA 测序场景——生物信息学家进行基因组序列的二级分析时,利用 AWS Batch 服务来简化并加速测序分析的处理过程, 以批量处理的方式将原始 DNA 读数装配成完整基因组序列, 同时减少测序分析的数据偏差。

workflow

Let's do it 利用 AWS Batch 搭建高性能集群

你够格了么:

本实验利用 Batch 搭建一个简单抓取脚本运行的 Demo, 原理如下图流程所示。

workflow

上图中几个aws服务简单解释下:

具体操作步骤:

准备处理任务的 Docker 镜像。

本实验需要启动一个 EC2 实例来制作 Docker 镜像。 在中国区域实验时选择宁夏区域, 启动 EC2 环境时选取 Amazon Linux 2 类型的 AMI,如下图所示。 实例类型选择 t2.micro。

ami

[高能]一大波命令行来袭

ssh -i yourkey.pem ec2-user@your-ec2-public-ip

aws configure

sudo yum update -y
sudo yum install docker

sudo service docker start

wget https://github.com/awslabs/aws-batch-helpers/archive/master.zip
unzip master.zip

vim aws-batch-helpers-master/fetch-and-run/Dockerfile

文件内容如下所示:

FROM amazonlinux:latest   # 指定操作系统镜像
RUN yum -y install unzip aws-cli  # 安装aws 命令行工具
ADD fetch_and_run.sh /usr/local/bin/fetch_and_run.sh  # 把 fetch_and_run.sh 脚本拷贝至/usr/local/bin 路径下
WORKDIR /tmp # 指定工作目录
USER nobody  # 指定user
ENTRYPOINT ["/usr/local/bin/fetch_and_run.sh"]  # 指定容器运行的入口是调用/usr/local/bin/fetch_and_run.sh 脚本

vim aws-batch-helpers-master/fetch-and-run/fetch_and_run.sh

将 fetch_and_run_script()函数的第一句改成如下并保存退出编辑(修改中国区的S3地址):

aws s3 cp "${BATCH_FILE_S3_URL}" - > "${TMPFILE}" --endpoint "https://s3.cn-northwest-1.amazonaws.com.cn" || error_exit "Failed to download S3 script."

sudo usermod -a -G docker ec2-user

Docker 镜像传入 ECR 存储库

ecrbuild