发布于: Feb 7, 2022

在客户运用云端计算集群来处理诸如分子匹配分析或中小规模基因分析的任务时,首先需要及时响应样本输入,由于有任务完成时限的要求,所以在较短的一段时间内对于 HPC 的算力需求仍会达到几千到几万个 vCPU 的较大规模,这些 vCPU 根据数据并行的方式进行分片计算,在 Amazon Web Services Batch 批量处理任务管理服务或 Amazon Web Services ParallelCluster 开源集群管理工具来配置集群的方式之外,需要能有一个更轻量级的、可自定义并行规则的集群调度方式。同时客户非常关注成本控制,需要将单个输入样本的计算成本尽可能压低。

概括地看,客户希望设计一种灵巧型的 HPC 来同时满足以下场景特点:

  • 弱耦合型:计算过程中间很少数据交互;
  • 随来随算: HPC 的算力构建基于事件触发,能即时响应;
  • 数据切分:计算任务可基于数据维度来分解并行的;
  • 运维零压:部署完成后,平时基本是零维护和零管理;
  • 足够节省:平时运维低费用,且算完及时回收资源以降成本。

架构设计

从降低配置运维的角度出发,我们考虑尽可能多地采用托管型服务来构建,计算集群的调度由 Lambda 函数来串接,分析任务的切片对应关系和各数据片的状态基于 DynamoDB 数据库来存储,计算节点调用 Spot 实例来降低成本,计算任务的参数配置通过 API Gateway 提供给前后端来调用。整个架构设计图如下所示。

本场景里的计算是将样本文件与海量已知样本数据做匹配分析计算,我们将一个计算任务(Mission)按照不同的样本比对区间切分成多个分片计算事务(Transactions)。数据处理的流程:

  • 分析任务的输入是由样本文件上传至 S3 源端 Src 桶来触发,处理 Lambda 函数(lightScheduler)负责划分计算事务并将 Mission Transactions 的信息记入 DynamoDB 的任务信息表(tblMission)和事务信息表(tblTrans)中,并发起启动对应数量的 Spot 实例。
  • Spot 实例根据计算节点的AMI镜像启动,根据源文件名和事务表记录信息执行计算脚本,计算完成后结果文件输出至 S3 存储的 Result 桶,并自行终止实例。
  • 结果文件以消息驱动结果处理函数(RsltProc)来进行结果汇集和计算任务完成通知。
  • 计算任务的配置通过 Lambda 配置函数(MissionCfg)来写入 tblMission 表。

相关文章