Best Practice Of Adopting Kubernetes On Genome Sequencing

The data analysis of genomic sequencing contains many processing steps and each step is independent. In the practice of using Kubernetes for sequencing, the main difficulties to be overcome are: (1) The traditional software installation process is complicated. (2) Data upload channel establishment & data sharing among all processing steps. (3) use k8s objects for so many steps will be tedious, so need an orchestration mechanism to automate the entire process.
展开查看详情

1.Best Practice Of Adopting Kubernetes On Genome Sequencing 唐盛 军 / 华为云 SA tsjsdbd@huawei.com

2.目录 为什么测序需要容器和 K8S 基因测序介绍 容器的优势 任务 ( 资源 ) 调度 K8S 与测序的结合 Job 执行单位 PVC 共享存储 测序 流程控制 Helm 的不足 云上编排服务

3.基因测序 介绍 – 基因 人类: 23 对( 46 个)染色体 碱基对: AT / GC

4.基因测序 介绍 – 测序 测序目标 :确定 ATGC 的顺序 长度: 30 亿对 (人类)

5.基因测序 介绍 – 早期测序 2 块诺贝尔奖 Sanger 测序,一个一个测。 特点:很慢,但很准( 后续测试仪的标准 )。 人类基因组计划( HGP )就是用这个。 6 个国家,中国测 1% 。 2003 年完成 人类基因的顺序 =》 参考组

6.基因测序 介绍 – 二代测序 (NGS) 人类基因的顺序 =》 参考组 特点: 打断成小片段,分别测序 最后 根据参考组,还原结果 一次测序量很大,成本优势明显 目前成为主流测序方法

7.二代测序  拼图 拼图结果参考 拼图特点: 重复的片很多 缺少部分片 部 分片有形变 部 分片有干扰 片的数量巨大

8.拼图算法  软件处理

9.二代测序总结 测序仪原理 =》 拼图算法 数据量巨大 (高通量数据源): * 以 HiSeq X10 测序仪为例 , 产生 1600Gb / 轮 * 一个人 30x 全基因组样本数据 FASTQ 文件大约是 200GB * 一个人 30x 全 基因组中间数据 sam 文件大小 超过 600GB 需要大量计算 * Mapping, Filter, Deduplication, Alignment, Index, Compress, * Recalibration, Depth-coverage, Cleanup, Calling-variants… 性能 + 成本要求 高 * 巨大的数据需处理 * 时间需求 & 成本 各种软件各种算

10.二代测序总结 测序仪原理 =》 拼图算法 数据量巨大 (高通量数据源): * 以 HiSeq X10 测序仪为例 , 产生 1600Gb / 轮 * 一个人 30x 全基因组样本数据 FASTQ 文件大约是 200GB * 一个人 30x 全 基因组中间数据 sam 文件大小 超过 600GB 需要大量计算 * Mapping, Filter, Deduplication, Alignment, Index, Compress, * Recalibration, Depth-coverage, Cleanup, Calling-variants… 性能 + 成本要求 高 * 巨大的数据需处理 * 时间需求 & 成本 各种软件各种算

11.传统测序的不足 1. 需要大量软件 ( 计算 ) 步骤多 : Mapping , Filter, Deduplication, Alignment, Index, Compress,Recalibration , Depth-coverage, Cleanup, Calling-variants … 2. 能控制处理流程 * 一个步骤 2 个小时,需要能自动化控制执行顺序 3. 性能 + 成本 * 一个人 30x 全基因组样本数据文件大约是 200GB * 整个技术时间越快越好 + 费用越低越好 1. 提前安装 软件安装管理困难,版本冲突,环境修复等。如 GATK 软件需要 jdk 1.8 ,而其他软件需要 jdk 1.7/1.6 2. PBS/SGE 安装管理复杂,流控控制额外开发 Python 程序 3. HPC/Batch 多开机器,跑得快。 多人共用一套环境

12.容器的 优势 不足 原因 优势 生信软件繁多,环境准备成本高 生信领域数据处理流程复杂,使得单步骤就存在多种软件可选,单软件也有 多版本 可选。而在传统虚机中运行软件,不仅安装多种软件痛苦,还需要考虑软件间 版本兼容性 ,同一软件多实例间竞争影响。生信 软件安装 对于 IT 能力不是主战场的生信人来说,是一大痛苦。 Docker 容器技术使得不同软件间运行无感知。同一个软件任意多实例运行也不感知。且 Docker 镜像以软件为单位制作,独立制作 & 更新非常便捷,且不影响其他软件。可以极大提高生信环境安装及环境恢复的效率。 调试流程不方便 由于前期调试流程中的错误,导致软件配置改变或者 环境异常 ,就得重头搭建 & 恢复环境,单独 软件的更新 也非常不方便。软件便捷的分发 & 更新成本很高,开发环境的快速复制及 重建 ,成为生信人迫切渴望。 Docker 镜像便捷分发, Docker 容器镜像的一次构建, 随处可运行 机制,使得本地验证调试非常简便。环境的切换对 Docker 程序无影响,保证 运行环境的一致性 ,以及数据处理 结果的可重复性 。 资源利用率低 单样本数据处理一般在单机上完成,所以目前普遍使用高规格机器来执行 pipeline 流程。而且多机并发能力不足,如单独开发任务调度框架,门槛成本和收益不明显。同时单机上 多任务并发 能力也受限。无法很好的满载利用计算资源。 单虚机上可以 同时运行 多个 Docker 容器。使得多个任务同时在一个 VM 上执行。同时利用 Kubernetes 资源调度能力,使得多 Job 按资源需求平均地在多 VM 上混合执行,最大化榨取资源。(充分利用满计算节点的计算能力)

13.容器的 优势 不足 原因 优势 生信软件繁多,环境准备成本高 生信领域数据处理流程复杂,使得单步骤就存在多种软件可选,单软件也有 多版本 可选。而在传统虚机中运行软件,不仅安装多种软件痛苦,还需要考虑软件间 版本兼容性 ,同一软件多实例间竞争影响。生信 软件安装 对于 IT 能力不是主战场的生信人来说,是一大痛苦。 Docker 容器技术使得不同软件间运行无感知。同一个软件任意多实例运行也不感知。且 Docker 镜像以软件为单位制作,独立制作 & 更新非常便捷,且不影响其他软件。可以极大提高生信环境安装及环境恢复的效率。 调试流程不方便 由于前期调试流程中的错误,导致软件配置改变或者 环境异常 ,就得重头搭建 & 恢复环境,单独 软件的更新 也非常不方便。软件便捷的分发 & 更新成本很高,开发环境的快速复制及 重建 ,成为生信人迫切渴望。 Docker 镜像便捷分发, Docker 容器镜像的一次构建, 随处可运行 机制,使得本地验证调试非常简便。环境的切换对 Docker 程序无影响,保证 运行环境的一致性 ,以及数据处理 结果的可重复性 。 资源利用率低 单样本数据处理一般在单机上完成,所以目前普遍使用高规格机器来执行 pipeline 流程。而且多机并发能力不足,如单独开发任务调度框架,门槛成本和收益不明显。同时单机上 多任务并发 能力也受限。无法很好的满载利用计算资源。 单虚机上可以 同时运行 多个 Docker 容器。使得多个任务同时在一个 VM 上执行。同时利用 Kubernetes 资源调度能力,使得多 Job 按资源需求平均地在多 VM 上混合执行,最大化榨取资源。(充分利用满计算节点的计算能力)

14.传统任务 ( 资源 ) 调度 使用 HPC 集群,通过 PBS 软件调度任务 ( 资源 )

15.K8S 任务 ( 资源 ) 调度 Kubernetes Meets High-Performance Computing 共同点: 把任务调度到节点上去执行。 可以用 K8S 的 Job 跑基因测序任务

16.K8S 任务 ( 资源 ) 调度 Kubernetes Meets High-Performance Computing 共同点: 把任务调度到节点上去执行。 可以用 K8S 的 Job 跑基因测序任务

17.使用 K8S 执行测序流程 bwa-alignment samtools-sort P icard -deduplication samtools-mpileup varscan-snp varscan-indel 软件执行流程 Volume ECS 集群 Job Job ECS Job 示意流程 样本放共享存储里: sample |--R1.fq.qz |--R2.fq.qz 基因样本片段( 150M )测试结果: 20 分钟 PVC

18.使用 K8S 执行复杂测序流程 bwa-alignment samtools-sort P icard -deduplication samtools-mpileup varscan-snp varscan-indel Volume ECS 集群 Job Job ECS Job 实现示意:更多的 Job 在跑 样本放共享存储里: all-sample |-- zhangsan | |-- R1.fq.qz | |-- R2.fq.qz |-- lisi | |-- R1.fq.qz | |-- R2.fq.qz |-- wangwu |-- R1.fq.qz |-- R2.fq.qz 多样本同时跑 bwa-alignment samtools-sort P icard -deduplication samtools-mpileup varscan-snp varscan-indel …… PVC 一个 Job 执行完,然后执行下一个 Job , 谁来控制呢?

19.使用 K8S 执行复杂测序流程 bwa-alignment samtools-sort P icard -deduplication samtools-mpileup varscan-snp varscan-indel Volume ECS 集群 Job Job ECS Job 实现示意:更多的 Job 在跑 样本放共享存储里: all-sample |-- zhangsan | |-- R1.fq.qz | |-- R2.fq.qz |-- lisi | |-- R1.fq.qz | |-- R2.fq.qz |-- wangwu |-- R1.fq.qz |-- R2.fq.qz 多样本同时跑 bwa-alignment samtools-sort P icard -deduplication samtools-mpileup varscan-snp varscan-indel …… PVC 一个 Job 执行完,然后执行下一个 Job , 谁来控制呢?

20.Helm 中 多 Job 顺序控制的不足 Helm 通过 Hook 来执行 Job 可以定义 Dependency ,但是不做流程控制的

21.云上的流程控制框架 App Orchestration Service AOS 我想要: 1. 先 , 一个 K8S 集群 2. 再 , 一个 K8S 节点 3. 然后 , 一个 EIP 4. 一个 SFS 硬盘 5. 一个 Docker 容器 (… 任何华为云对象 ) 描述控制流程 ( 文件 ) Volume ECS 集群 云上自动化平台 执行结果 详见: 《 全球公有云编排服务大比拼 》 几乎每个云平台都有的服务: AWS 的 Cloudformation ,阿里 的 ROS , OpenStack 的 Heat ,微软 的 RM ,谷歌的 CDM ,青云 的 RO 华为云 AOS( 应用编排服务 )

22.使用 K8S 执行并发测序 大豆 基因 ( 6G )测试结果: 1 fq 原始 文件 拆分后 fq 输入文件 拆分后 fq 输入文件 拆分后 fq 输入文件 … 拆分后比 对结果 bam 拆分后比 对结果 bam 拆分后比 对结果 bam … 合并比对 结果 bam 合并 bam 拆分 染色体 合并 bam 拆分 染色体 合并 bam 拆分 染色体 … 分 染色体 bam 去重 分 染色体 bam 去重 分 染色体 bam 去重 … 分 染色体 vcf 突变结果 分 染色体 vcf 突变结果 分 染色体 vcf 突变结果 … 合并突变 结果 vcf bwa:0.7. 12 samtools:1.4 samtools:1.4 picard:1370 gatk:3.7 耗时 : 0.5H 耗时: 1H 耗时: 2.5H 总耗时: 4 小时左右 (环境 + 流程)可重复执行

23.总结: K8S & 基因测序 生信软件安装 手动 安装 => Docker 容器 任务 ( 资源 ) 调度: PBS => Kubernetes -Job 流程 管理 : Python 编程 => AOS 自动化

24.