时间:2015-05-27 16:21 文章来源:http://www.lunwenbuluo.com 作者:范炜玮 赵东升 点击次数:
摘要:随着生命科学和医疗信息化的快速发展,生物医学数据出现了爆炸式增长趋势,其处理面临数据量大、维度关系复杂和交互式响应要求高等问题。传统的数据库以及Hadoop框架在处理生物医学大数据方面都存在一些不足。Spark是一个新兴的基于内存计算的开源大数据平台,具有丰富的编程接口、通用的处理框架和多元化的运行模式。本文介绍了Spark的关键技术和特性,以及不同来源生物医学大数据特点和成功案例,表明Spark在生物医学大数据处理中的适用性和潜在优势。
关键词:大数据;Spark:医学研究:生物医学信息学
对生物医学数据的处理,最终目的是从中获取知识,为提高卫生服务效率、促进医学发展和卫生管理提供支持,使得“数据信息知识”的认知链更臻完善。随着生命组学、医学技术和医疗信息化的快速发展,生物医学数据出现了爆炸式增长趋势,其处理面临数据量大、维度关系复杂、计算强度高等问题。将大数据技术引入医学领域,可以及时充分地共享医疗信息、感知医疗资源,通过模型分析和数据挖掘,描述生命现象和医疗决策中规律并预测其发展趋势。例如,谷歌在2009年初通过用户在网上的搜索记录成功预测甲型HIN1流感的爆发,其“流感趋势系统”通过结合传统监测方法和大数据处理技术,可以预测美国未来1周的流感感染情况;美国的FlatironHealth公司,致力于通过收集和分析海量的临床数据进行癌症治疗的分析和预测,该公司已获得谷歌风投部门超过l亿美元的投资;美国政府于2012年3月发布了“大数据的研究和发展计划”,其中多个项目涉及医疗、公共卫生和生命组学研究。
Hadoop是Apache基金会的顶级开源项目,已成为目前最重要的大数据技术框架之一,其MapReduce计算模型和完善的生态系统大大简化了大数据处理系统开发和运维管理。Hadoop在生物医学大数据处理中得到成功应用,涵盖了生物信息学、智慧医疗、健康档案、流行病预警、传染病监测等多个方面阻。Explorys医疗数据公司基于Hadoop的云平台能够帮助医生提高聚合、分析、管理和获得辅助决策信息的能力。当前的Hadoop版本也存在一些不足。由于MapReduce在设计上追求简化的计算模型、大规模分布计算的容错性和可扩展性,因而存在较大的磁盘I/O开销以及冗余读写和编程不够灵活等问题,更适合大规模数据的批量或离线计算,不能充分满足数据挖掘和机器学习常用的迭代计算、图计算和低延迟的交互式查询计算等更复杂的计算需求。
Spark最初由伯克利大学AMPLab实验室于2009年提出,是一个通用大数据处理引擎,旨在快速、易用地处理复杂数据。Spark的出现弥补了Hadoop的不足,成为发展最快的大数据处理平台之一,已广泛应用于腾讯、雅虎和淘宝等一线互联网公司的报表和广告推荐等业务,在生物医学领域也出现了一些成功案例。
1Spark关键技术与相关子项目
1.1
Spark特点和关键技术
Spark(http://spark.apache.org/)是Apache基金会开源项目,它充分整合利用了现有云计算和大数据技术,具有丰富的编程接口,支持在单机、HadoopYarn、Mesos(http://mesos.apache.org/)集群和亚马逊EC2云等多种平台上运行,能够访问HDFS文件系统和Hbase数据库等任意Hadoop支持的数据源,提供批处理、交互式、流处理等多种数据处理模式,为大数据应用提供一个统一的平台。据Apache官方测试,Spark运行逻辑回归算法的计算速度是Hadoop的10~100倍。如此之高的性能提升,得益于以下关键技术。
1.1.1弹性分布式数据集(ResilientDistributedDatasets,RDD)RDD是Spark计算框架的核心技术。在Spark中,所有的数据都抽象成RDD。用户可将中间结果缓存在内存中,便于有效地被重用和进行并发操作,免去不必要的I/O开销。RDD只能通过两种方式创建,一是读取本地或Hadoop分布式文件系统(HDFS)上的文件,二是由其他RDD转换而来,具有只读(一组RDD可以通过数据集操作生成另外一组RDD,但是不能直接被改写)、弹性扩展和容错等特性。
1.1.2共享变量与MapReduce不同的是,Spark提供广播(Broadcast)和累加器(Accumulators)两种受限的共享变量,可以像分布式内存系统一样提供全局地址空间接口,提高了数据的共享性。
1.1.3容错机制分布式共享内存系统一般通过检查点(checkpoint)和回滚(rollback)方式容错,而RDD通过称为“世系关系”(Lineage)的机制提供高效的容错,该机制使RDD包含其演化过程中一系列的依赖关系,能够自动从节点失败中重构丢失的RDD。
1.1.4支持有向无环图(DirectedAcyclicGraph,DAG)编程框架由于MapReduce设计上的约束,Hadoop缺少对迭代计算和DAG运算的支持。Spark具有丰富全面的数据集运算操作,除了Map和Reduce操作,还增加了过滤、抽样、分组、排序、并集、连接、分割、计数、收集、查找等80多种算子,并合理地划分为Transformation(变换)和Action(动作)两大类。利用这些算子,能够方便地建立起RDD的DAG计算模型,将所有操作优化成DAG图,提高计算效率和编程灵活性。
1.2
Spark相关子项目
Spark在机器学习、交互式查询、流计算和图计算等方面都有相关子项目,使用同一个引擎便能高效地满足数据统计查询、机器学习和流数据处理的应用需求。这些子项目形成了Spark核心计算框架上的工具(库),以便于开发无缝集成的应用程序。
1.2.1流计算框架(SparkStreaming)流计算框架(http://spark.apache.org/streaming/)将数据流根据小时间片分解成一系列短小的批处理作业,根据业务需求对中间结果叠加计算或者存储到外部设备,具有高吞吐量和高效的容错处理能力。
1.2.2可扩展机器学习库(MLBase/MLlib)Mllib(http://spark.apache.org/mllib/)包括一些常见的机器学习算法和实用程序,包括分类、回归、聚类、协同过滤、降维、特征变换及底层优化。MLbase通过边界定义,力图将MLbase打造成一个机器学习平台,让一些并不深入了解机器学习的用户也能方便地使用MLbase来处理自己的数据,其机器学习优化器能够根据用户输入场景选择最适合的机器学习算法和相关参数。
1.2.3即席数据查询引擎(SparkSQL)从ApacheHive表、parquet和JSON格式的文件中装载和查询数据,通过Python、Scala和Java语言编程接口将结构化数据作为RDD进行查询,实现SQL查询(http://spark.apache.org/sql/)和Spark程序的无缝集成,使运行带有SQL查询的复杂分析算法更容易。同时,可以不加修改地运行ApacheHive数据仓库查询,支持传统JDBC/ODBC连接。
1.2.4并行图计算框架(GraphX)GraphX(http://spark.apache.org/graphx/)基于Spark的图处理和图并行计算API,可将一组数据同时看作集合(Collection)和图(Graph)两种视图,每种视图都有自己独特的操作符,利用基于RDD的图操作保证了操作灵活性和执行效率。
相关内容
联系方式
随机阅读
热门排行