基于Spark和SIMD的弹性分布式序列比对系统及方法技术方案

技术编号:16587676 阅读:34 留言:0更新日期:2017-11-18 15:19
本发明专利技术公开了一种基于Spark和SIMD的弹性分布式序列比对系统,包括一个主节点和与主节点连接的多个工作节点,所述主节点用于管理元数据和集群,包括基于分布式计算框架Spark的主节点、基于分布式内存文件系统的主节点和Hadoop分布式文件系统的主节点;所述工作节点用于数据的存储和计算,包括存储层和计算层,所述存储层包括Alluxio和HDFS,所述计算层包括Spark和SIMD指令集,基于分布式计算框架Spark通过中介模块调用基于SIMD的序列比对算法进行序列比对。采用Alluxio和HDFS来分布式存储数据,采用Spark进行分布式计算,在每个节点采用SIMD技术进行序列比对,提高了性能。

Elastic distributed sequence alignment system and method based on Spark and SIMD

The invention discloses a flexible distributed sequence alignment system Spark and based on SIMD, including a master node and multiple nodes connected to the master node, the master node for the management of metadata and cluster, including the main node of the master node and the Hadoop distributed file system distributed memory file system of the master node, computing framework based on the distributed Spark based on the work; node for data storage and calculation, including the storage layer and computing layer, the storage layer including Alluxio and HDFS, the computing layer includes Spark and SIMD instruction set, Spark distributed computing framework through an intermediary module call sequence alignment algorithm based on sequence alignment based on SIMD. Alluxio and HDFS are used to store the distributed data, Spark is used for distributed computing, and SIMD sequence is used in each node to improve the performance.

【技术实现步骤摘要】
基于Spark和SIMD的弹性分布式序列比对系统及方法
本专利技术涉及一种序列比对系统及方法,具体地涉及一种基于Spark和SIMD的弹性分布式序列比对系统及方法。
技术介绍
序列比对是用来识别双序列之间高度相似的区域,一般用比对得分来评价双序列之间的相似度,为了方便后续分析,会计算最佳比对路径。序列比对算法是生物信息学领域基本而又至关重要的算法,被广泛应用于基因串匹配、本地重新比对等校准操作、变异分析、蛋白质数据库搜索等领域。序列比对包括本地序列比对、全局序列比对和半全局序列比对等。目前最常用的本地序列比对算法是Smith-Waterman(SW)算法,该算法也是目前最常用的序列比对算法之一。SW算法是基于动态规划的算法,可以找出两序列之间的最优本地比对。但是SW算法具有很高的时间复杂度,所以也是最慢的比对算法之一。尽管像BLAST(BasicLocalAlignmentSearchTool)等采用启发式方法的算法速度更快,但是无法保证找到最优解。由于SW算法至关重要,所以从提出到现在,已经有大量的科学家提出了加速SW运行的算法。包括基于SIMD(SingleInstructionMultipleData,单指令多数据流)指令集的加速算法、基于GPU的算法、基于FPGA的算法。相对于基于GPU、FPGA的加速方法,基于SIMD的加速方法更加通用,使用的也更频繁。Farrar提出了将SIMD寄存器并行查询序列但以条纹模式(StripedPattern)访问的算法,相对于其他已经被优化的但没有用SIMD的实现来说有超过6倍的加速比。Farrar的算法已经被嵌入到几个流行的基因序列匹配工具中,比如BWA-MEM和Bowtie2。Zhao实现了一个基于SIMD的SW算法C/C++库来方便将SW算法整合到其他基因组的应用中,其库名被称作SSW(StripedSmith-Waterman),同时扩展了Farrar的算法,除了最优的比对得分之外还返回比对信息。SSW使用的是英特尔处理器支持的SSE2(StreamingSIMDExtensions2)指令集。2016年Daily提出了SW算法C语言库Parasail,该库包含了不同的序列比对算法,包括SW算法、NW(Needleman-Wunsch)算法和SG(Semi-Global)算法。Parasail主要意图是方便将序列比对算法整合到其他应用,而不是替换目前高性能的蛋白质搜索工具。Parasail提供了超过一千个函数,并且支持SSE2、SSE4.1、AVX2(AdvancedVectorExtensions2)和KNC(Knight'sCorner)等SIMD指令集。以上这些算法主要运行在单机环境,可扩展性受限,难以满足数据快速增长带来的计算需求。由于SW算法随着序列长度的增加,其时间复杂度和空间复杂度都呈平方增加,所以SW算法也是最慢的序列比对算法之一。而传统基于SIMD、GPU或FPGA等技术实现的SW算法可扩展性受限,难以满足基因数据指数增长带来的计算需求。尽管SparkSW实现了基于Spark的分布式SW算法,但使用纯Scala代码编写,没有使用其他加速技术,所以性能较差。作者实验结果显示,SparkSW最高性能只有0.346GCUPS(GigaCellUpdatesPerSecond)。我们通过实验发现,当查询序列长度为4096字符,参考序列数据集为大小4G的1000万条左右序列时,SparkSW在8个物理节点的集群运行需要38.53个小时。虽然SparkSW具有很好的可扩展性,但是性能并不理想。
技术实现思路
针对传统序列比对算法可扩展性的问题和单纯只使用Spark进行计算的低性能问题,本专利技术目的是:提供了一种基于Spark和SIMD的弹性分布式序列比对系统及方法,将Spark的分布式计算和SIMD技术的高性能进行结合来实现序列比对,采用Alluxio和HDFS来分布式存储数据,采用计算框架Spark进行分布式计算,在每个节点采用SIMD技术进行序列比对,提高了性能。本专利技术的技术方案是:一种基于Spark和SIMD的弹性分布式序列比对系统,包括一个主节点和与主节点连接的多个工作节点,所述主节点用于管理元数据和集群,包括基于分布式计算框架Spark的主节点、基于分布式内存文件系统Alluxio的主节点和Hadoop分布式文件系统的主节点;所述工作节点用于数据的存储和计算,包括存储层和计算层,所述存储层包括Alluxio和HDFS,所述计算层包括基于分布式计算框架Spark和SIMD指令集,基于分布式计算框架Spark通过中介模块调用基于SIMD的序列比对算法进行序列比对。优选的,所述中介模块的执行包括以下步骤:通过Spark的Scala类调用Java类,并进行对象和数据转换;通过Java类调用基于SIMD的序列比对算法,将计算结果返回给Java类;Java类将计算结果返回给Scala类,并将Java对象转换成Scala对象。优选的,所述基于SIMD的序列比对算法包括分布式本地序列比对算法DSW、分布式全局序列比对算法DNW和分布式半全局序列比对算法DSG。本专利技术还公开了一种基于Spark和SIMD的弹性分布式序列比对方法,包括预处理阶段、Map阶段和TopK阶段;预处理阶段,对查询序列、参考序列数据集和评分矩阵进行抽取、清洗和转换;Map阶段,将查询序列与参考序列数据集中的每一条参考序列进行序列比对,通过中介模块调用基于SIMD的序列比对算法进行序列比对,获得序列比对结果;TopK阶段,获取查询序列与所有参考序列比对得分最高的K个结果。优选的,所述序列比对结果包括参考序列名称、最佳序列比对得分和路径,路径用开始位置、结束位置和Cigar表示。优选的,所述基于SIMD的序列比对算法包括分布式本地序列比对算法DSW、分布式全局序列比对算法DNW和分布式半全局序列比对算法DSG。优选的,所述中介模块的执行包括以下步骤:通过Spark的Scala类调用Java类,并进行对象和数据转换;通过Java类调用基于SIMD的序列比对算法,将计算结果返回给Java类;Java类将计算结果返回给Scala类,并将Java对象转换成Scala对象。与现有技术相比,本专利技术的优点是:1、本专利技术的弹性分布式序列比对系统DSA将Spark的分布式计算和SIMD技术的高性能进行结合,既有效解决了传统单机算法可扩展性受限的问题,又解决了单纯只使用Spark进行计算的低性能问题。另外,DSA采用了Alluxio和HDFS来分布式存储数据,将常用数据提前缓存在内存中,可以提高I/O性能和减少节点间的网络开销,并实现了相关的转换方法,使得FASTA、FASTQ等传统的基因数据格式经过转换后也可以分布式存储。2、本专利技术设计和实现了分布式本地序列比对算法DSW、分布式全局序列比对算法DNW和分布式半全局序列比对算法DSG。经实验发现,DSW、DNW和DSG都具有很好的可扩展,DSW相对于现有的分布式序列比对算法SparkSW最高取得了200.77倍的加速比。附图说明下面结合附图及实施例对本专利技术作进一步描述:图1是基于Spark和SIMD技术的弹性分布式序列比对系统DSA的架构图;图2是本文档来自技高网
...
基于Spark和SIMD的弹性分布式序列比对系统及方法

【技术保护点】
一种基于Spark和SIMD的弹性分布式序列比对系统,其特征在于,包括一个主节点和与主节点连接的多个工作节点,所述主节点用于管理元数据和集群,包括基于分布式计算框架Spark的主节点、基于分布式内存文件系统Alluxio的主节点和Hadoop分布式文件系统的主节点;所述工作节点用于数据的存储和计算,包括存储层和计算层,所述存储层包括Alluxio和HDFS,所述计算层包括基于分布式计算框架Spark和SIMD指令集,基于分布式计算框架Spark通过中介模块调用基于SIMD的序列比对算法进行序列比对。

【技术特征摘要】
1.一种基于Spark和SIMD的弹性分布式序列比对系统,其特征在于,包括一个主节点和与主节点连接的多个工作节点,所述主节点用于管理元数据和集群,包括基于分布式计算框架Spark的主节点、基于分布式内存文件系统Alluxio的主节点和Hadoop分布式文件系统的主节点;所述工作节点用于数据的存储和计算,包括存储层和计算层,所述存储层包括Alluxio和HDFS,所述计算层包括基于分布式计算框架Spark和SIMD指令集,基于分布式计算框架Spark通过中介模块调用基于SIMD的序列比对算法进行序列比对。2.根据权利要求1所述的基于Spark和SIMD的弹性分布式序列比对系统,其特征在于,所述中介模块的执行包括以下步骤:通过Spark的Scala类调用Java类,并进行对象和数据转换;通过Java类调用基于SIMD的序列比对算法,将计算结果返回给Java类;Java类将计算结果返回给Scala类,并将Java对象转换成Scala对象。3.根据权利要求1所述的基于Spark和SIMD的弹性分布式序列比对系统,其特征在于,所述基于SIMD的序列比对算法包括分布式本地序列比对算法DSW、分布式全局序列比对算法DNW和分布式半全局序列比对算法DSG。4.一种基于Spark和SIMD的...

【专利技术属性】
技术研发人员:徐波王超周学海李曦陈香兰李昌龙庄航王茄力王庆凤
申请(专利权)人:中国科学技术大学
类型:发明
国别省市:安徽,34

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1