如何使用Argo Workflows编排基因计算工作流?

本文涉及的产品
对象存储 OSS,OSS 加速器 50 GB 1个月
简介: 为了高效、准确地整合和分析大量基因计算数据,工作流的自动化编排成为了一项关键技术,而容器化、灵活、易用的工作流引擎Argo Workflows在其中脱颖而出,成为串联基因计算各个环节的得力助手。

【阅读原文】戳:如何使用Argo Workflows编排基因计算工作流?

在基因计算这一高度复杂且数据密集型的领域,科研人员和生物信息分析师面临着非常大的挑战,这不仅仅体现在数据量的爆炸性增长上,也在于如何高效、准确地整合和分析这些数据,以揭示生命的奥秘。为了应对这些挑战,工作流的自动化编排成为了一项关键技术,而容器化、灵活、易用的工作流引擎Argo Workflows在其中脱颖而出,成为串联基因计算各个环节的得力助手。本文介绍如何使用Argo Workflows编排基因计算工作流。

 

 

基因计算工作流

 

基因计算工作流是指在基因组学研究中,为了完成特定的分析目标,将一系列相互依赖的计算任务和数据处理步骤组织在一起,形成有序执行的流程。这些工作流通常包括数据预处理、序列比对、变异检测、基因表达分析、进化树构建等多种复杂步骤。

 

 

 

 

 

Argo Workflows基因计算工作流的价值

 

 

Argo Workflows是一个开源的Kubernetes原生工作流引擎,它专为容器化环境设计,能够灵活、高效地编排复杂的工作流程。在基因计算场景中,Argo的优势尤为显著:

 

容器化与环境一致性:基因分析涉及众多软件工具和依赖库,通过将每个分析步骤封装进Docker容器,确保了跨平台的一致性和可复现性,减少了“它只在我机器上能跑”的问题。

 

灵活的编排能力:基因组学研究中的工作流往往包含多步骤、条件分支和并行处理需求,Argo Workflows支持复杂逻辑和条件控制,使得按需定制工作流程变得简单直接。

 

尽管开源Argo Workflows在基因计算工作流的编排领域展现了显著的实力,但在实际应用中仍需克服若干挑战:

 

大规模运维难题:面对庞大的任务规模,加之科研背景的用户可能缺乏深度的集群运维经验,导致难以实施高效的集群优化与维护策略。

 

复杂工作流编排挑战:科研实验的特性决定了参数空间的广阔及流程步骤的繁多,往往涉及成千上万的作业项,开源工作流引擎难于支持。

 

资源优化与弹性伸缩困难:基因数据分析往往消耗大量计算资源,用户希望能够根据工作负载智能调度资源,实现资源的高效利用,并支持根据需求自动扩展计算能力,开源方案难以满足。

 

面对基因计算场景下大规模运维、复杂工作流编排、资源优化与弹性伸缩等挑战,阿里云ACK One团队推出了分布式工作流Argo集群。

 

 

 

分布式工作流Argo集群

 

 

阿里云分布式工作流Argo集群基于开源项目Argo Workflows实现,采用无服务器模式,使用阿里云弹性容器实例ECI运行工作流,通过优化Kubernetes集群参数,实现大规模工作流的高效弹性调度,同时配合抢占式ECI实例,优化成本。支持并发、循环、重试等多种执行策略等典型的基因计算过程和高度复杂的工作流任务编排。

 

 

 

 

使用Argo Workflows编排基因计算工作流

 

 

以一个经典的BWA测序比对流程来展示如何使用Argo Workflows编辑并运行基因计算工作流:

 

1. 创建分布式工作流Argo集群。

 

2. 挂载阿里云OSS存储卷,以便工作流可以像操作本地文件一样操作OSS上的文件。

 

具体操作,请参见使用存储卷。

 

3. 使用以下YAML创建一个工作流。具体操作,请参见创建工作流。

 

流程主要包括三个阶段:

 

1)bwaprepare: 数据准备阶段,下载并解压fastq、reference文件,对参考基因组建立索引。

 

2)bwamap:将测序数据与参考基因组进行比对并生成对齐结果,该阶段并行处理多个文件。

 

3)bwaindex:从原始测序数据比对到参考基因组,生成、排序、索引BAM文件,并浏览比对结果。

 

apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  generateName: bwa-oss-
spec:
  entrypoint: bwa-oss
  arguments: 
    parameters:
    - name: fastqFolder # 下载文件的保存路径
      value: /gene
    - name: reference # 参考基因组文件
      value: https://ags-public.oss-cn-beijing.aliyuncs.com/alignment/subset_assembly.fa.gz
    - name: fastq1 # 原始测序数据
      value: https://ags-public.oss-cn-beijing.aliyuncs.com/alignment/SRR1976948_1.fastq.gz
    - name: fastq2
      value: https://ags-public.oss-cn-beijing.aliyuncs.com/alignment/SRR1976948_2.fastq.gz
  volumes: # 远端存储路径挂载
  - name: ossdir
    persistentVolumeClaim:
      claimName: pvc-oss
  templates:
  - name: bwaprepare #数据准备阶段,下载并解压fastq、reference文件,对参考基因组建立索引。
    container:
      image: registry.cn-beijing.aliyuncs.com/geno/alltools:v0.2
      imagePullPolicy: Always
      command: [sh,-c]
      args:
      - mkdir -p /bwa{{workflow.parameters.fastqFolder}}; cd /bwa{{workflow.parameters.fastqFolder}}; rm -rf SRR1976948*;
        wget {{workflow.parameters.reference}};
        wget {{workflow.parameters.fastq1}};
        wget {{workflow.parameters.fastq2}};
        gzip -d subset_assembly.fa.gz;
        gunzip -c SRR1976948_1.fastq.gz | head -800000 > SRR1976948.1;
        gunzip -c SRR1976948_2.fastq.gz | head -800000 > SRR1976948.2;
        bwa index subset_assembly.fa;
      volumeMounts:
      - name: ossdir
        mountPath: /bwa
    retryStrategy: # 重试机制
      limit: 3
  - name: bwamap # 将测序数据与参考基因组进行比对预处理并生成对齐结果。
    inputs:
      parameters:
      - name: object
    container:
      image: registry.cn-beijing.aliyuncs.com/geno/alltools:v0.2
      imagePullPolicy: Always
      command:
      - sh
      - -c
      args:
      - cd /bwa{{workflow.parameters.fastqFolder}};
        bwa aln subset_assembly.fa {{inputs.parameters.object}} > {{inputs.parameters.object}}.untrimmed.sai;
      volumeMounts:
      - name: ossdir
        mountPath: /bwa
    retryStrategy:
      limit: 3
  - name: bwaindex # 从原始测序数据比对到参考基因组,生成、排序、索引BAM文件,并浏览比对结果。
    container:
      args:
      - cd /bwa{{workflow.parameters.fastqFolder}};
        bwa sampe subset_assembly.fa SRR1976948.1.untrimmed.sai SRR1976948.2.untrimmed.sai SRR1976948.1 SRR1976948.2 > SRR1976948.untrimmed.sam;
        samtools import subset_assembly.fa SRR1976948.untrimmed.sam SRR1976948.untrimmed.sam.bam;
        samtools sort SRR1976948.untrimmed.sam.bam -o SRR1976948.untrimmed.sam.bam.sorted.bam;
        samtools index SRR1976948.untrimmed.sam.bam.sorted.bam;
        samtools tview SRR1976948.untrimmed.sam.bam.sorted.bam subset_assembly.fa -p k99_13588:1000 -d T;
      command:
      - sh
      - -c
      image: registry.cn-beijing.aliyuncs.com/geno/alltools:v0.2
      imagePullPolicy: Always
      volumeMounts:
      - mountPath: /bwa/
        name: ossdir
    retryStrategy:
      limit: 3
  - name: bwa-oss # 各阶段流程编排
    dag:
      tasks:
      - name: bwaprepare # 先执行数据准备
        template: bwaprepare
      - name: bwamap # 预处理,并生成对齐结果
        template: bwamap
        dependencies: [bwaprepare] # 依赖数据准备阶段
        arguments:
          parameters:
          - name: object
            value: "{{item}}"
        withItems: ["SRR1976948.1","SRR1976948.2"] # 并行处理多个文件
      - name: bwaindex # 比对并浏览比对结果
        template: bwaindex
        dependencies: [bwamap] # 依赖预处理阶段

 

4. 查看工作流状态:

 

 

可以看到工作流状态成功,在oss对应文件夹中也能发现,比对结果文件已经顺利产生:

 

 

 

 

总结

 

 

Argo Workflows以其容器化、灵活编排、简单易用等特性在基因计算领域及其他数据密集型科研领域展现出了显著的优势,能够极大地提升基因计算的自动化水平、资源利用率和分析效率。阿里云ACK One团队是国内最早使用Argo Workflows进行大规模任务编排的团队之一,并在基因计算、自动驾驶、金融模拟等场景下积累了诸多的最佳实践,欢迎联系ACKOne团队,加入钉钉群号一同交流:35688562

 

参考:

 

分布式Argo工作流:

https://www.alibabacloud.com/help/zh/ack/distributed-cloud-container-platform-for-kubernetes/user-guide/overview-12

 

Argo Workflows:

https://github.com/argoproj/argo-workflows

 

创建工作流:

https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/user-guide/create-a-workflow-cluster

 

使用存储卷:

https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/user-guide/use-volumes


我们是阿里巴巴云计算和大数据技术幕后的核心技术输出者。

欢迎关注 “阿里云基础设施”同名微信微博知乎

获取关于我们的更多信息~

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
8月前
|
机器学习/深度学习 人工智能 Kubernetes
Argo Workflows 加速在 Kubernetes 上构建机器学习 Pipelines
Argo Workflows 是 Kubernetes 上的工作流引擎,支持机器学习、数据处理、基础设施自动化及 CI/CD 等场景。作为 CNCF 毕业项目,其扩展性强、云原生轻量化,受到广泛采用。近期更新包括性能优化、调度策略增强、Python SDK 支持及 AI/大数据任务集成,助力企业高效构建 AI、ML、Data Pipelines。
850 0
|
1月前
|
人工智能 JSON 自然语言处理
Agent Skills 究竟是什么?从玩具到工程化的必经之路
AI应用开发正从“Prompt驱动”迈向“技能驱动”。本文详解Agent Skills标准化实践:以Claude Code Skills为范本,用SKILL.md实现自描述技能;借MCP协议统一多源工具调用,解决兼容与安全难题;结合DeepSeek+OpenAI实战,展现可插拔、可审计、可演进的工业级Agent构建路径。
|
10月前
|
存储 消息中间件 OLAP
基于 Flink+Paimon+Hologres 搭建淘天集团湖仓一体数据链路
本文整理自淘天集团高级数据开发工程师朱奥在Flink Forward Asia 2024的分享,围绕实时数仓优化展开。内容涵盖项目背景、核心策略、解决方案、项目价值及未来计划五部分。通过引入Paimon和Hologres技术,解决当前流批存储不统一、实时数据可见性差等痛点,实现流批一体存储与高效近实时数据加工。项目显著提升了数据时效性和开发运维效率,降低了使用门槛与成本,并规划未来在集团内推广湖仓一体架构,探索更多技术创新场景。
1752 3
基于 Flink+Paimon+Hologres 搭建淘天集团湖仓一体数据链路
|
Cloud Native Devops Shell
ArgoWorkflow教程(六)---无缝实现步骤间参数传递
本文为ArangoWorkflow系列教程第六篇,详细介绍了在同一Workflow中不同步骤间如何实现参数传递,避免了通过文件传递的不便。文章重点讲解了导出结果和导入参数的方法,并演示了如何将上一步骤的输出参数作为下一步骤的输入参数。此外,还介绍了ArgoWorkflow内置的`result`参数,可用于捕获容器的标准输出。通过具体示例和代码片段,读者可轻松掌握这一重要功能。
355 0
|
8月前
|
存储 安全 NoSQL
【干货满满】API安全加固指南:签名防篡改+Access Token管理最佳实践
API 安全关乎业务与用户隐私,签名机制防篡改、伪造请求,Access Token 管理身份与权限。本文详解签名生成、Token 类型与管理、常见安全问题及最佳实践,助开发者构建安全可靠的 API 体系。
|
Kubernetes Cloud Native 调度
云原生批量任务编排引擎Argo Workflows发布3.6,一文解析关键新特性
Argo Workflows是CNCF毕业项目,最受欢迎的云原生工作流引擎,专为Kubernetes上编排批量任务而设计,本文主要对最新发布的Argo Workflows 3.6版本的关键新特性做一个深入的解析。
|
运维 Kubernetes Serverless
阿里云Argo X K8s玩转工作流引擎,实现大规模并行计算
本文基于2024云栖大会田双坤的演讲,介绍了Kubernetes作为云原生操作系统的角色及其在各类任务中的应用,重点探讨了Argo Workflows在Kubernetes上编排并行任务的能力。面对自建Argo Workflows的挑战,如稳定性、成本和安全性等问题,阿里巴巴云推出了全托管的Serverless Argo工作流,提供全托管、免运维、可观测和易集成的特点,显著提升了任务编排的效率和稳定性。适用于数据处理、科学计算、自动驾驶仿真等多个领域。
|
机器学习/深度学习 分布式计算 Kubernetes
YAML焦虑再见:PythonSDK助力大规模Argo Workflows构建
Hera优雅的对接Python生态体系与Argo Workflows框架,将繁琐复杂的工作流设计转化为直观简明的创作体验。它不仅为大规模任务编排开创了一条免受YAML复杂性困扰的通途,还为数据工程师铺设了平滑的桥梁,让他们能够借助熟悉的Python语言,无缝构造和优化机器学习工作流。
|
Kubernetes 容器 Perl
在k8S中,如何实现Pod中容器的文件和宿主机之间相互拷贝?
在k8S中,如何实现Pod中容器的文件和宿主机之间相互拷贝?

热门文章

最新文章