浅谈医学大数据

图四

SAS的数据仓库研究院(TDWI)针对现今存在的大数据处理分析平台工具进行了一项调查以帮助人们在选择软硬件进行大数据分析时能做出更好的决策。针对大数据技术,特点,和使用者操作,调查提供了三个选择:1)现在使用中,并且会继续使用。2)会在三年中开始使用。3)没有计划使用。图五左侧显示了对于各种大数据分析平台工具,被调查人员的回复比例。图五的右侧显示了平台工具可能的潜在成长和对采用此工具做出承诺的被调查人员比例。

图五

根据潜在成长和承诺的综合考量,此调查还进一步把大数据分析平台, 工具分成 4 组:第一组为适度的承诺,中度到强的成长潜力;第二组为中度至强有力的承诺,适度增长潜力;第三组为弱到中度的承诺,适度增长潜力;第四组为中度至强有力的承诺,弱增长潜力。图六显示了这些组别的内容分布。限于篇幅,本文不详细介绍所列的每一平台工具的具体内容,感兴趣的读者可以参考文献获取更详细的介绍。

图六

图五和图六都显示了最流行的平台和数据处理方式为开源免费的 Hadoop 和 MapReduce。伴随着他们的潜在成长和承诺程度,可以预见,Hadoop 和 MapReduce 正在并会继续推动和促进大数据的处理和应用。

在此,我们简单介绍一下 Hadoop 和 MapReduce 的概念。Hadoop 是一種基于 Java 的分散式数据处理框架。它可以提供对储存在多个硬件设备上的数据进行高吞吐率的读写。更重要的是,它对大数据具有高容错性 和对并行应用程序的高可用性。Hadoop 框架结构由若干名字节点(NameNode)和数据节点(DataNode)组成。一份数以万计,百万计的大数据文件会被分割成更小的文件信息块储存在多个数据节点里,可以是任何计算机硬件设备。

有关这些文件的数据属性资料信息称作 metadata 则被存储在名字节点里(NameNode). NameNode 主要管理文件系统的命名空间和客户端对文件的访问操作记录。Hadoop 的框架结构如图七:

图七

当访问和操作数据文件时,客户端会联系名字节点提取文件信息块的属性信息比如位置,文件名等。然后根据这些属性信息,客户端直接从相应的数据节点同时读取数据块。Hadoop 本身具有冗余和复制功能,保证在单个硬件储存设备出现故障时数据仍旧能被恢复而没有任何损失,比如每个数据节点默认拥有 3 个备份之类。

此外,在有新数据节点添加到框架中时,Hadoop 还可以自动平衡每个数据节点的数据载有量。同样,名字节点也可以拥有冗余和复制功能,用于在单个储存数据属性信息的名字节点出现故障时可以恢复相应的数据属性信息。

MapReduce 则是一种可以用来并行处理大数据的编程模型。同一程序在 Hadoop 的框架下可以用各种不同的语言(Java,Ruby,Python 等)按 MapReduce 的编程模型进行编写和运行。其关键就在于三个词: map,reduce, 和并行处理。我们通过一个例子来理解 MapReduce 的大致工作原理。比如我们有一 30 个字的字符串“开落花缠落花绕缠开绕笑瓜夜村村舍舍瓜夜藤绕下下藤绕嬉嬉笑娃娃”,任务是计算每个字出现的次数。

最简单的方法是按序读取每一个字建立标识索引并计算出现的次数值存入内存,如果是新字,值为 1,如果是出现过的字则次数值累加上去。此种方式是按串行的方式进行的,所花的时间会随着字符串的长度和复杂度程线性增长。当字符串是以万计百万计时,比如基因组数据,所花的时间将是相当惊人的。 并行处理则能节约相当多的时间。

我们先把原文件分割到几个小文件块,然后对每个小文件块进行字的标识索引和附加数值(这儿不进行累计,只是简单的单次点数),然后再排序重组把相同字放在一起,然后我们再用缩减法计算出字及其相应的出现次数值。图八显示了具体的例子步骤:

图八