生信工作流框架搭建 | 03-nextflow与AWS批量计算

news2024/11/18 15:40:40

目录

  • 生信工作流框架搭建 | 03-nextflow与AWS Batch
    • 前情提要
    • 批量计算基本概念
      • 批量计算服务(Batch Computing Service)是一种适用于大规模并行批处理作业的分布式云服务。
        • 术语表
    • AWS 构建
      • 如果你使用除大陆外的区域
      • 如果你恰好在EU或者Ireland
      • 如果你使用大陆区
        • 开始使用
        • 配置
        • 安装 AWS CLI 工具、docker,自定义AMI
        • 简而言之
    • 注意事项
    • 下期预告?

生信工作流框架搭建 | 03-nextflow与AWS Batch

本篇为biodoge《生信工作流框架搭建》系列笔记的第4篇,该系列将持续更新。

前情提要

上回生信工作流框架搭建 | 02-nextflow 实战为大家提供了nextflow的实用教程。可能我们并不满足于本地跑nextflow流程,毕竟容器化、可移植,才是工作流框架的最有力之处。

批量计算基本概念

批量计算服务(Batch Computing Service)是一种适用于大规模并行批处理作业的分布式云服务。

国内的云服务厂商阿里云和腾讯云等,为批量计算提供了丰富的API接口,与亚马逊相对原生的环境相比,架构和术语有所不同,对于初学者来说,使用起来更加方便。

在这里插入图片描述

术语表

术语说明
集群 Cluster一系列的实例组在 Batch 中被定义为一个集群(Cluster)。一个集群可以由多个实例组(Group)组成,一个组中的实例共享同样的实例类型定义(如指定的 CPU 核数和内存大小组合),多个组之间共享镜像(Image)
作业 Job用户的每个特定的计算需求在 BatchCompute 中被描述为一个作业(Job),作业是用户提交批处理工作的最小单位,它由单个或多个有前后依赖关系的任务组成。
任务 Task一个作业由一组任务(Task)及其依赖关系组成。批量计算支持能以有向无环图 DAG(directed acyclic graph)形式描述,来给多个批处理任务设置依赖关系,共同组成一个作业,然后依次执行各个任务,直到所有任务完成,即作业完成。任务间的依赖关系只能在作业提交时指定,提交完成后不能进行修改。
任务模板可以将常用的任务制作成任务模板,基于任务模板定制不同的任务,实现作业的快速提交。
实例 Instance实例是 Batch 调度与执行的最小单元,这些实例会动态的运行在系统分配的虚拟服务器节点上。每个任务可以有一个或多个执行实例(Instance)。同一任务的各个实例并行处理各自的输入数据。
镜像 Image镜像(Image)是集群资源创建或者作业运行环境的模板。它是一个标准的或者自定义的 ECS (阿里云的)镜像,需要预先将计算环境和应用程序准备好并制作成自定义镜像。

通过自定义脚本->DAG描述任务依赖,阿里云的任务调度相对简单,可以轻松将不同工具串起来,而不需要工作流框架如nextflow。
在这里插入图片描述
然而在AWS中,如何调度呢?

术语说明
EC2亚马逊弹性计算云(Amazon EC2)在亚马逊Web服务(AWS)云中提供可扩展的计算能力。使用AmazonEC2无需在硬件上进行前期投资,因此您可以更快地开发和部署应用程序。您可以使用AmazonEC2根据需要启动任意数量的虚拟服务器,配置安全性和网络,并管理存储。
S3Amazon Simple Storage Service (Amazon S3)是一种对象存储服务,提供业界领先的可伸缩性、数据可用性、安全性和性能。各种规模和行业的客户都可以使用 Amazon S3存储和保护各种用例的任意数据,比如数据湖、网站、移动应用程序、备份和恢复、归档、企业应用程序、物联网设备和大数据分析。
作业队列当你提交AWS Batch作业,你将其提交到特定的作业队列中,该作业将一直驻留在那里,直到它被安排到计算环境中。您可以将一个或多个计算环境与作业队列关联。您还可以为这些计算环境分配优先级值,甚至可以为作业队列本身分配优先级值。例如,您可以有一个高优先级队列供您提交对时间敏感的作业,而一个低优先级队列用于在计算资源较便宜时可以随时运行的作业。
计算环境计算环境是一组用于运行任务的托管或非托管计算资源。使用托管计算环境,您可以在多个详细级别上指定所需的计算类型(Fargate 或 EC2)。您可以设置使用特定类型的 EC2 实例的计算环境,例如特定模型c5.2xlarge要么m5.10xlarge. 或者,您可以选择只指定要使用最新的实例类型。您还可以指定环境的 vCPUs 的最小数量、所需数量和最大数量,以及您愿意为竞价型实例支付的金额占按按需实例价格和目标 VPC 子网集合的百分比。AWS Batch根据需要高效启动、管理和终止计算类型。

基本的处理模式(S3存储、EC2实例的基本概念默认你已经懂啦)
在这里插入图片描述
AWS还有个叫step function的服务,可以管理工作流,但是是否能做到DAG调度,我们并没有实验过。只知道,它的语法看起来有些复杂。并且,并不针对生物数据处理。
在这里插入图片描述
因此,官方提供给我们的建议是,使用第三方开源框架:nextflow,为生信而生。使用工作流语言给我们带来的便利不必说,组织起来必然是比一个一个零散的脚本更为系统的。
在这里插入图片描述
在这里插入图片描述
上图来自AWS的官方讲稿《CMP412: Orchestrating complex genomics pipelines with AWS Batch》 可在 AWS re:Invent 2019 Presentations 中获取

AWS 构建

重要的一个概念是,AWS不同区域提供的服务不同(咱大陆特别待遇),如果你登录AWS网站就会理解,.cn和.com是完全不同的服务。你当然可以注册任何区域,各有利弊,比如宁夏区和北京区传输很快、“安全”;美东区数据传输较慢,但是支持的服务多。
在这里插入图片描述

如果你使用除大陆外的区域

非常好,欢迎了解Amazon Genomics CLI 开源服务,除了 AWS GovCloud (美国) 和位于中国的区域之外,你可以在任何AWS 区域使用它。
集成了WDL、Nextflow、CWL 和 Snakemake等工作流语言,专为基因数据批量处理打造。
可以跟着【伯乐大典】基于Nextflow基因组测序的AWS Batch实验(上) 一步步在workshop中练习。 大陆区也可以看这个视频,手把手教很详细,虽然不能用其他区的服务。

如果你恰好在EU或者Ireland

那么再好不过了!你可以了解nextflow tower。繁复的构建不用操心了。
集成aws batch、HPC、Azure batch等环境,海量模板,一键启动,随时追踪,可视化,真乃神器也。
请添加图片描述

如果你使用大陆区

恭喜你,天选之子!你只能靠自己!
当然,你还有贴心的nextflow官方文档可以参考哩!

开始使用

  1. 在 AWS 控制台中, 在您的 AWS Batch 服务中创建计算环境 (CE)。

    a. 如果您使用的是自定义 AMI,则必须在 CE 配置中指定 AMI ID
    b. 确保选择安装了 Docker 的 AMI(自定义或现有)
    c. 确保策略 AmazonS3FullAccess (授予对 S3 存储桶的访问权限)附加到为 CE 配置的实例角色
    d. 如果您计划使用 Amazon ECS 容器中的 Docker 映像,请确保策略AmazonEC2ContainerServiceforEC2Role 也附加到实例角色

  2. 在 AWS 控制台中,创建(至少)一个作业队列并将其绑定到计算环境。

  3. 在 AWS 控制台中,根据需要为存储桶目录(见下文)创建 S3 存储的存储桶,并为输入数据和结果创建其他存储桶。

  4. 确保管道进程使用容器指令指定一个或多个 Docker 容器 。

  5. 容器镜像需要发布在 Docker 注册表中,例如 Docker Hub、Quay 或 ECS 容器注册表,ECS Batch 可以访问这些注册表。

配置

配置管道时:

  1. 导入 nf-amazon插件
  2. 指定 AWS 批处理执行程序
  3. 使用队列指令指定一个或多个 AWS Batch 队列以执行
  4. 使用 containerOptions 指令指定 AWS 作业容器属性。

nextflow.config 中国区特别版

profiles {
  standard {
    process.container = 'nextflow/rnaseq-nf:s3'
    docker.enabled = true
    aws.client.endpoint = 'https://s3.cn-northwest-1.amazonaws.com.cn'		
  }

  batch {
    aws.region = 'cn-northwest-1'
    process.container = 'nextflow/rnaseq-nf:s3'
    process.executor = 'awsbatch'
    process.queue = 'job-queue'
  }
}

安装 AWS CLI 工具、docker,自定义AMI

尽管默认你都会了
稍微讲一下我安装Cli的命令,和nf官方的有点区别:

##从本地linux访问aws实例后,获得管理员权限
sudo -s

#AWS CLI S3访问工具
$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
$ unzip awscliv2.zip
$ sudo ./aws/install

##或者直接安装!
$ pip install awscli

##配置密钥
#Access Key在“aws-我的安全凭证”那里,只允许访问一次密钥
$ aws configure
AWS Access Key ID [None]: AKIAIOTHISISAEXAMPLE*
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY*
Default region name [None]: cn-northwest-1
Default output format [None]: json

*THIS IS A EXAMPLE

其他的按官方文档来就好。
而batch的配置那里,可以看上面伯乐大典的视频,是比较清楚的。
另外还需要配置 Docker Register,创建 Nextflow 头节点镜像并推送流程镜像到 Repo。不能具体讲解因为这里并不是我负责配置,涉及知识产权问题不能分享,但是如果有问题欢迎提问。
在这里的坑真是不计其数~

简而言之

如果文档看不太懂,我们大概可以这样理解:nextflow在本地调度得好好的,到云端呢,就是由一个头节点(也是EC2示例,只是计算资源很少)负责调配,【其中一种模式】是一个process一种任务定义,根据需要的资源开启相应的机器,一个样本一台机器批量计算(至于什么任务跑什么机器,一边是aws上job队列和计算环境定义,一边是nextflow的config里配置),比如我qc需要的cpu和内存很少,那么开个两核16G的就够了;组装需要的很多,开个72核144G,这不是美滋滋?
然后数据传输就靠S3桶(共享存储)来完成。
在这里插入图片描述
AWS控制台
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
nextflow.config:
在这里插入图片描述

注意事项

  1. 大陆区无法使用–resume功能,也就是断点重投。但是nextflow tower可以(泪奔)
  2. 学会用nextflow log来debug,即便如此很多时候也会不明不白地失败。
  3. 请注意超时问题。AWS 默认EC2实例运行周期1天,超时执行中断任务,这个可以修改。
  4. 用好nextflow report
    在这里插入图片描述
    在这里插入图片描述

下期预告?

nextflow的分享可以告一段落了。
这个系列还会有下期吗?你们还希望什么样的分享呢?如果工作流系列结束,我将可能分享Perl的学习笔记,也请多多交流哦。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/82462.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

人为什么会穷,人穷的原因是什么

大家好,我是蝶衣王的小编,今天分享一下人为什么会穷 你玩的有多脏,你就有多成功。这里指的脏!​不是传统意义上的脏,而是你是不是那种死心眼。 ​ 小时候都背过三字经,说到人之初,性本善。但是…

spring源码-bean的后置处理器

BeanPostProcessor BeanPostProcessor也称为Bean后置处理器,它是Spring中定义的接口,在Spring容器的创建过程中(具体为Bean初始化前后)会回调BeanPostProcessor中定义的两个方法。 BeanPostProcessor的源码如下: public interf…

FFU安装条件及八大步骤详解

FFU安装条件及八大步骤(FFU过滤器) FFU安装的条件、环境及安装人员的服饰要求: 温 度: 5℃~45℃ 相对湿度:不大于85%(35℃) 大气压力:86Kpa~106Kpa zui大尘埃浓度:3500粒/升(尘埃粒径不大于0.5um) 电 源:220V 50…

详解 TS 中的子类型兼容性

简介 在写 TypeScript 代码时经常遇到类型检查不通过的问题,这些问题根据编译器给出的错误提示以及修改建议多数可以快速修复。本文讲解的内容是编译器进行类型检查时的兼容性相关检查规则,这些规则在 TypeScript 语言背后默默发挥作用。不了解这些规则…

艾美捷寡聚脱氧核苷酸CpG ODN:ODN 1668

艾美捷CpG ODN:ODN 1668:具有硫代磷酸酯骨架的CpG寡脱氧核苷酸(B型)。小鼠TLR9(Toll样受体9)的特异性配体。 艾美捷Enzo CpG ODN:ODN 1668详细信息: 序列:5-tccatgtgtcc…

Akka 学习(九)Akka Cluster

参考文章 Gitter Chat,Akka 在线交流平台Akka Forums,Akka 论坛Akka in GitHub,Akka 开源项目仓库Akka Official Website,Akka 官网Akka Java API,Akka 应用程序编程接口《Akka入门与实践》 [加]Jason Goodwin&#x…

AI创业时代!这9个方向有钱途;AIGC再添霸榜应用Lensa;美团SemEval2022冠军方法分享;医学图像处理工具箱… | ShowMeAI资讯日报

👀日报合辑 | 🎡AI应用与工具大全 | 🔔公众号资料下载 | 🍩韩信子 📢 2023年9个有前途的 AI 创业方向 https://www.aiplusinfo.com/blog/9-promising-artificial-intelligence-startup-ideas-for-2023/ 2022年&#x…

央视广告怎么做,做好央视广告的关键点有哪些

企业品牌打算投放央视广告,首先想到的是如何做才更有效果,往往本身就比较困惑。公司应该投入多少资金?应选用何种广告投放方案?有时公司内部的观点也是不同的。尤其是面对广告公司提供的众多方案,让负责人看着都头疼&a…

Tos-GPR-AMC,117961-27-0,标记肽Tos-GPR-7-氨基-4-甲基香豆素

胰蛋白酶和凝血酶的荧光底物 Tos-GPR-AMC, fluorogenic substrate for trypsin and thrombin. Kinetic data for Thrombin: kcat 180, Km 310 uM. 编号: 190611中文名称: 标记肽Tos-GPR-7-氨基-4-甲基香豆素英文名: Tos-Gly-Pro-Arg-AMCCAS号: 117961-27-0单字母: Tos-GPR-AM…

代码随想录训练营第6天

专题:哈希表 题目:有效的字母异位词 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 例如 输入: s "anagram", t "nagaram" 输出: true 说明: 你可以假设字符串只包含小写字母。 题目理解&…

av_interleaved_write_frame():Broken pipe

使用FFmpeg命令rtsp推流到Docker中MediaServer服务器,15秒timeout一到就会打印错误信息,如下图: av_interleaved_write_frame():Broken pipe 命令中指定rtsp传输方式为tcp(-rtsp_transport tcp ),虽然不会…

第二证券|锂电起火风险完美解决?美科学家研发新型超高盐度电解质

现在,研讨人员正致力于以各种方式改善电池技能,其中最重要的是处理可燃性问题。 美国科学家们近期研宣布了一种新的电解质配方,就能够以一种十分有出路的方式处理这一问题,依托额定的盐含量来防止有问题发生的化学反应。 众所周知…

[附源码]JAVA毕业设计疫情期间高校师生外出请假管理系统录屏(系统+LW)

[附源码]JAVA毕业设计疫情期间高校师生外出请假管理系统录屏(系统LW) 项目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&am…

婚礼策划预约小程序开发,拓展客户人群

婚礼对于所有人来说都是非常重要的一件事,是人生中最值得回忆的美好场景。在经济水平的不断提高下,人们在结婚之前都要找专业团队对婚礼进行策划,让婚礼更加完美,正因如此,婚礼策划行业得到了迅速发展。但是从众多策划…

Zabbix-proxy安装(zabbix 6.0LTS)

关于zabbix 系列的博文我已经很久没有更新了,主要原因是最近太忙了。如果读者诸君有认真阅读我前面的文章并亲自实践过的话,相信你肯定会大有收获的。到目前为止zabbix 的基础知识在我的博文中基本已经全都涉及到了,至于如何运用,…

赛狐ERP11月新功能汇总 | 13大场景,超90项功能升级

赛狐ERP月度《产品升级》栏目来啦! 11月我们加紧迭代了运营、进销存、财务、报表等多个维度的功能内容,聚焦卖家关注的需求要点,进行了13大业务场景,超90项功能升级。赛狐ERP将不断优化产品细节,提升卖家体验&#xf…

CH36X系列接口芯片Linux系统开发库说明

一、概述 ch36x_lib库是Linux系统下用于开发CH36X系列设备CH365/CH367/CH368等芯片应用的软件接口库,此接口库主要提供以下功能: 设备打开/关闭 获取芯片类型/驱动版本 获取IO基地址/Memory基地址/中断号 配置空间读写(支持单字节/双字节…

基于java+springboot+mybatis+vue+mysql的体育场馆运营系统

项目介绍 在系统流程分析当中调查分析它是比较重要的环节,因为在这个系统当中它都涉及到每个环节的业务流程,所以从计算机毕业设计SpringBootVue选题推荐—体育场馆运营系统的设计的整体设计上要保证各个信息的正确输入和输出以及对数据储存的完整&…

linux下JDK安装

先下载离线安装包,我将安装包直接放到/root/softPackages目录下(需要安装包可私聊) 1.卸载已有OpenJDK(如果有) 查找已经安装的OpenJDK包 rpm -qa | grep java 如果有查出结果,直接yum -y remove卸载即可: 例如&a…

MobileNetV1作为CenterNet的Backbone尝试

1、CenterNet对于Backbone的要求是: 输入为512*512,输出为:heatmap(128*128*C)、wh(128*128*2)、reg(128*128*2)。 2、原生的MobileNet V1输出: 最后一层通…