作者:Rostislav Markov 和 Matt Noyce 发表于 2022年12月21日 Amazon CloudWatch Amazon DynamoDB Amazon Simple Storage Service (S3) 架构 AWS Batch AWS Fargate AWS Lambda
在生物科学研究中,基因组工作流是高性能计算工作负载。研究团队通常会在每次调用时指定自定义的数据集和处理步骤,并将其转化为命令。此外,团队成员还需要监控进度和排查错误,这既繁琐又无差异化,纯粹是行政性工作。
在本系列的第三部分中,我们将介绍一种工作流管理器的架构,该管理器简化了生物信息学数据管道的管理。该工作流管理器根据用户输入动态生成启动命令并跟踪工作流状态。这个工作流管理器可以灵活适应许多科学工作负载,实际上成为每个项目的自定义工作流管理器。
在第一部分中,我们展示了生物科学研究团队如何利用亚马逊云服务来简化基因组研究的复杂工作。我们的设计模式基于AWS Step Functions与AWS Batch。我们提到已经与生命科学研究团队合作,将失败的作业日志存储到Amazon DynamoDB。一些团队更喜欢使用命令行工具,例如AWS 命令行界面;其他接口,如与Apache Spark结合使用的PyBDA,或是结合了Amazon Simple Storage Service (S3) API 的CWL实验语法,也在无法访问AWS 管理控制台的情况下使用。在我们的使用案例中,科学家们使用控制台轻松更新表项,并通过DynamoDB streams发起重试。
在这篇博客中,我们扩展了这个理念,增加了设计模式中的新前端层。该层自动生成命令并监控多种工作流的调用,从而构建一个工作流管理器。生命科学研究团队针对不同的数据集和使用案例使用多个工作流,每个工作流都具有不同的语法和命令。我们创建的工作流管理器消除了制定工作流特定命令和跟踪其启动的行政负担。

我们允许科学家将其请求的工作流配置作为对象上传到Amazon S3。我们使用S3 事件通知在PUT请求上调用AWS Lambda函数。该函数解析上传的S3对象,并使用[PutItem](https//docsawsamazoncom/amazondynamodb/latest/developerguide/WorkingWithItemshtml#WorkingWithItemsWritingData)操作将新的启动请求注册为DynamoDB项目。每个item对应一个独立的启动请求,存储为键值对。项目值存储如下信息:
iphone免费加速器项目内容说明S3 数据路径包含基因组数据集工作流端点数据处理工作流的终点首选计算服务可选用户可以选择的计算服务另一个Lambda函数监控DynamoDB流中的变更数据捕获见图1。每次有PutItem操作时,Lambda函数准备一个工作流调用,其中包括将用户输入转换为相应工作流的语法和启动命令。
针对Snakemake在第二部分中讨论,该函数创建一个Snakefile,声明了处理步骤和命令。然后,该函数启动一个AWS Fargate任务,构建计算任务,利用AWS Batch分配它们,并监控任务的完成情况。AWS Step Functions 状态机协调作业处理,例如,被Tibanna启动。
Amazon CloudWatch提供性能指标的综合视图,如经过的时间、失败的作业和错误类型。我们将日志数据,包括状态更新和错误,存储在Amazon CloudWatch Logs中。第三个Lambda函数解析这些日志,并更新相应DynamoDB项目中每个工作流启动请求的状态见图1。
图1 基因组工作流的工作流管理器
在这一部分,我们描述了一些以往实施中的考虑事项。
注册新的工作流请求DynamoDB项目是键值对。我们使用启动ID作为键,值包括工作流类型、计算引擎、S3数据路径、用户定义配置文件的S3对象路径和工作流状态。我们的Lambda函数解析配置文件并生成所有命令及辅助产物,如Snakefiles。
启动工作流启动请求由Lambda函数从DynamoDB流中提取。该函数有以下所需参数:
启动ID:每个工作流启动请求的唯一标识符配置文件:包含启动详细信息的Amazon S3路径以s3//bucket/object格式计算服务可选:我们的工作流管理器允许选择执行计算任务的特定服务,如Amazon Elastic Compute Cloud (Amazon EC2)或AWS ParallelCluster与Slurm 工作负载管理器。默认情况下为预定义的计算引擎。以上各点假设配置表已经上传到S3存储桶中的可访问位置。这将发起一个新的Snakemake Fargate启动任务。如果未提供任一参数或访问失败,工作流管理器将返回MissingRequiredParametersError。
记录工作流启动日志会自动写入CloudWatch Logs。我们将在DynamoDB表中写入CloudWatch日志组和日志流的位置。为了将日志发送到Amazon CloudWatch,需在Fargate任务定义设置中指定awslogs 驱动程序。
我们的Lambda函数将Fargate任务启动的日志从CloudWatch Logs写入DynamoDB表内。例如,如果进程使用的内存超过容器分配的内存,则可能会发生[OutOfMemoryError](https//docsawsamazoncom/AmazonECS/latest/userguide/stoppedtaskerrorcodeshtml)。
AWS Batch作业状态日志将写入CloudWatch Logs中的以下日志组:/aws/batch/job。我们的Lambda函数将状态更新写入DynamoDB表。AWS Batch作业可能会遇到如被卡在RUNNABLE状态的错误。
管理状态转换我们在DynamoDB中管理每个作业的状态。每当Fargate任务状态发生变化时,会被引用Fargate计算集群的CloudWatch规则捕获。该CloudWatch规则调用一个通知Lambda函数来更新DynamoDB中的工作流状态。
在这篇博客中,我们展示了生命科学研究团队如何通过一系列工作流简化基因组分析。这些工作流通常拥有各自的命令语法和工作流管理系统,例如Snakemake。所展示的工作流管理器消除了准备和制定工作流启动的行政负担,提高了可靠性。
该模式在任何科学工作流和相关高性能计算系统中都具有广泛的可重用性。工作流管理器提供持久性,以便进行历史分析和比较,从而使我们能够自动评估工作流启动的成本和性能。
敬请关注本系列的第四部分,我们将探讨如何使我们的工作流处理存储在Amazon Simple Storage Service Glacier的档案数据存储类别。
标签:基因组学
Rostislav是AWS专业服务的首席架构师。他作为AWS Industries的技术负责人,与AWS客户和合作伙伴在其云转型项目上合作。在工作之余,他喜欢与家人一起户外活动、打网球和滑雪。
Matt Noyce是高级应用架构师,主要为AWS专业服务中的医疗保健和生命科学客户提供服务。他与客户合作,构建、架构和设计满足其业务需求的解决方案。在闲暇时间,Matt喜欢跑步、远足和探索新城市及地点。
全国咨询热线
Super加速器(中国)官方网站|Super加速器
联系电话:13594780123
联系人:李总
邮箱:sworn@mac.com
公司地址:邵武市清塑囚牢483号
微信扫一扫
手机官网