医疗大数据整合层
医疗健康业务中采集的数据包含大量的结构化、半结构化和非结构化数据。模型相关数据包含多种表示方法:向量数据、序列数据、图数据等。目前的大数据服务技术主要针对结构化数据和基于Key—Value的文本数据,而对于序列数据、图数据这些类型没有很好的支持技术。因此,在对这些数据的存储管理上将基于Hbase、HIVE等数据组织方式,研究Hadoop平台上数据管理与访问的技术,主要包括面向多维度聚集查询的数据的分割与分布策略、大规模聚集查询的分布式实施方法、流数据的快速写入与基于(Key,Value)方式的分布式存储与访问方法。
针对不同的数据源、不同的数据格式、不同的数据逻辑关系,医疗健康大数据处理平台提供了实时数据库、关系数据库、NoSQI。数据存储、HDFS文件存储等多种专用的存储服务和系统。为数据的高效存储和有效管理提供了保障。存储层同时面向这些不同存储方式、不同逻辑结构的数据提供了统一的数据存取和管理工具。
与常见的大数据集不同,医疗大数据在逻辑上、存储上、访问应用上都具有特殊的特点。具体来说,医疗大数据的来源多样:医疗信息通常由区域医疗、社区医疗系统提供,大多的格式化数据,数据每日更新;健康监护数据需要面对海量的并发监护采集数据提交,数据量较小但数量巨大且并发,需要快速的、即时的处理;影像数据的数据量巨大,是典型的非结构化数据,数量相对较少。针对这些不同的数据需要采用不同的处理方法,以提高处理的效率。根据医疗大数据全程连续、动态更新、数据多样化的特点,结合业务系统对医疗大数据离线处理和统计、在线分析等分析要求,构建了多框架融合计算调度引擎,并在其之上分别提供了离线批处理计算、在线实时分析计算、流式计算等多种计算框架的集成调用(图3-4)。
图3-4 多框架融合管理引擎
多种不同逻辑结构的计算框架需求对医疗大数据处理和管理平台提出了更高的要求。
需要考虑到资源利用率、运维成本、数据共享等因素,将所有这些框架都部署到一个公共集群中,让它们共享集群的资源,并对资源进行统一的使用,同时采用某种资源隔离方案对各个任务进行隔离,这就是多框架融合计算调度引擎的根本要求。
多框架融合管理引擎作为一个弹性计算平台,它的目标已经不再局限于支持某一种具体计算框架,而是朝着对多种框架进行统一管理的方向发展。相比于“一种计算框架一个集群的模式”,共享集群的模式有资源利用率高、运维成本低、数据共享等多种好处。
多框架融合管理引擎通过对集群资源的统一管理,将CPU、内存通过虚拟化手段形成资源池,所有计算框架对资源的需求都需要通过向多框架融合管理引擎申请而获得。所有被不同用户申请的资源都是逻辑隔离的,避免了一个任务出错而导致的整个平台不可用。另一方面,所有被申请的资源都会受到多框架融合管理引擎的监管,当出现资源失效或者负载过高时,多框架融合管理引擎可以对资源进行动态的分配和调整,以提高资源的利用效率。使得多个计算框架可以并行地运行在同一平台之上,从而实现了不同类型的任务,如离线批处理、实施分析任务等同时运行。
1)离线批处理计算方式(Map Reduce)
对于用于大规模数据集(大于l TB)的并行运算,可采用离线批处理计算框架。Map Reduce是离线批处理计算框架的典型代表。它具有两个典型的环节:Map(映射)和Reduce(化简),对应为两个具体的函数。Map函数用来把一组键值对映射成一组新的键值对,后续将分发到分布式的处理节点中进行处理,Reduce函数则用来保证所有映射的键值对中的每一个共享相同的键组,实现多节点处理结果的整合。通过Map、Reduce操作,可以提供对医疗和健康数据的离线批处理分析服务。(https://www.daowen.com)
2)在线实时分析计算框架(Spark)
对于一些需要快速实时分析的业务操作,如分析当前医疗资源的工作量负载、分析当前发生的某疾病特征等操作,需要快速地对最新的业务数据进行分析处理。在线实时分析计算框架采用了内存分布数据集分析技术,结合平台提供的实时数据库,提供了交互式查询服务。
在线实时分析计算框架是为集群计算中的特定类型的工作负载而设计,它引进了内存集群计算的概念。可在内存集群计算中将数据集缓存在内存中,以缩短访问延迟。
在线实时分析计算框架引进了名为弹性分布式数据集(resilient distributed datasets.RDD)的抽象。RDD是分布在一组节点中的只读对象集合。这些集合是弹性的,如果数据集一部分丢失,则可以对它们进行重建。重建部分数据集的过程依赖于容错机制,该机制可以维护“血统”(即允许基于数据衍生过程重建部分数据集的信息)。
3)流式计算框架(Storm)
从数据源特征角度来看,流式计算框架与Map Reduce明显不同的是,流式计算框架的数据源是动态的。即收到一条便处理一条,面对不断更新的医疗大数据,流式计算框架可以快速、高效地处理相关数据。
流式计算框架体现了以下这些特点:
(1)可扩展性 当一个集群的处理能力不够用的时候,只要往里面再追加一些新的节点,计算有能力迁移到这些新的节点来满足需要。可扩展性的关键点,即计算所需要的各种状态都是自满足的。不存在对特定节点强依赖,这样,计算就可以很容易地在节点间迁移,整个系统计算能力不够用的时候,加入新的节点就可以了。流式计算框架的计算模型本身是扩展友好的,可以很容易地分布在多个节点上。
(2)计算的可靠性分布式计算涉及多节点/进程之间的通信和依赖,正确地维护所有参与者的状态和依赖关系,是一个最为关键的问题。流式计算框架提供了一整套机制,确保消息会被完整处理。