面向健康大数据快速读写的存储系统设计
2018-10-24杨东日刘姝祎
杨东日,陈 跃,刘姝祎
(1.工业和信息化部软件与集成电路促进中心,北京 100013;2.西安交通大学 电信学院,陕西 西安 710000)
0 引 言
健康大数据来源多种多样,涵盖了人的全生命周期,既包括个人健康,又涉及医药服务、疾病防控、健康保障和食品安全、养生保健等多方面数据的汇聚和聚合[1,2],主要包括7个方面的来源,来源的定义请参见文献[3]。
与其它的行业数据相比,健康大数据具有特殊性,一方面与人类的健康相关,另一方面更加复杂多样,需要研究更多的未知事件[4]。具体来说,健康大数据具有以下特点:一是数据规模大,据统计,人类基因测序一次产生的数据量可高达100 G-600 G左右,单一公卫系统中一年的数据规模约为10 T;二是数据结构复杂多样;三是数据增长速度快,随着科技的不断发展,医疗信息被数字化,产生在线、实时数据;四是数据价值高,有利于扩大医疗资源供给、降低医疗成本、提升医疗服务运行效率,关系到国家乃至全球疾病防控、新药研发和顽疾攻克的能力[5,6]。健康大数据除了包含了大数据5个V的特点之外,还有多态性、时效性、不完整性、冗余性、隐私性等特点[7,8]。
1 健康大数据存储面临的问题
大数据与健康、医疗的结合给健康行为和医疗模式带来了巨大的变革,是重要的战略资源。随着信息技术不断发展,医疗信息越来越多被数字化,海量的健康医疗数据存储面临严峻考验[7,8],主要包括以下两个方面:一是健康医疗数据存储类型复杂,大文件的数据存储效率较高,而分散的小文件存储效率则比较低[9];二是从现有存储系统的技术架构来看,通常采用P2P无中心管理节点的存储系统,这样会造成同步效率比较低[10,11],而有中心管理节点的存储系统,其管理节点服务器会影响整个系统的性能[12,13],很多问题挑战了医疗健康大数据的采用和成功[13]。
针对以上的问题,本文通过分析海量数据快速读写特点,提出了海量数据的快速访问机制,并进一步研究和设计出健康大数据快速读写的存储系统。该系统通过提供专有应用程序接口(API)解决大规模小文件的高效存储,提升小文件存储访问性能;同时该系统通过对于大文件提供高速并行访问接口,提升大文件存储性能。实验结果表明,系统性能良好。
2 健康大数据的快速数据存储技术
2.1 当前主流的云存储技术
分布式文件系统处于云存储的核心位置,主要是组织和管理存储于数据中心的信息[15,16]。根据实现方式,分布式存储技术可以分为4种:分布式块存储、分布式文件系统存储、分布式对象存储和分布式表存储[17-19],见表1;根据其系统技术架构分为两种:有管理节点的分布式文件系统架构和无管理节点的分布式文件系统架构[20,21],见表2。
表1 分布式存储技术对比
表2 文件系统对比
2.2 主要的容错技术
为了实现数据的高效、安全、可靠存储,在健康大数据快速读写存储系统的设计过程中,除了考虑存储技术和存储架构之外,还需要考虑数据容错技术[13,21]。当前有代表性的数据容错技术主要有两种:一是基于复制(replicaiton)的容错技术,优点是易于实现和部署[23,24];二是基于纠删码(erasure code)的容错技术。
当前,在实际应用中,适用于健康大数据快速读写存储系统并不多,虽然有些系统开放了技术要点,但是并不是具体的产品和技术支持,因此需要设计出适用于健康大数据的存储系统。
3 健康大数据快速读写的存储系统设计
3.1 健康大数据快速读写存储系统结构设计
健康大数据快速读写存储系统应该具备便捷的存储功能调用和管理监控,具有较好的文件和数据读写性能,健康大数据的分布式文件系采用有管理节点的存储模式[25],其系统架构包括:应用接口模块、元数据管理模块、块数据存储模块和监控配置中心模块4个模块,如图1所示。
(1)应用接口模块。主要包括客户端、FTP/NFS/CIFS/HTTP等应用程序接口两部分,其中客户端是支持POSIX(portable operating system interface的缩写),X表示其对Unix API的传承,可以将存储系统挂载成本地目录或磁盘,用户应用系统可以不修改即使用本存储系统;为了健康大数据快速读写存储系统应用简单方便,设计了FTP/NFS/CIFS/HTTP等应用程序接口,有利于跨平台、跨局域网系统的应用。
(2)元数据管理模块。此模块主要是完成存储调度任务,通过一定的负载均衡策略将用户的存储访问请求分配主元数据管理节点和备元数据管理节点进行响应。同时也保证健康大数据快速读写存储系统统一的命名空间,保持数据的同步性和安全性。
图1 健康大数据的分布式文件系统架构
(3)块数据存储模块。用户数据存储在块数据节点的本地文件系统之上,用户访问的数据流也是直接在用户服务器与块数据服务器之间。
(4)监控配置中心模块。此模块是对整个健康大数据分布式存储系统的监控,包括节点管理、告警配置、CPU以及内存监控、设备状态,异常警告等,通过用户管理功能实现对用户空间和配额以及权限的管理。
以上4个模块之间彼此耦合度比较低,具有一定的独立性,可以单独部署。如果添加或者删除存储节点,对健康大数据的分布式文件系统可以进行伸缩,系统存储服务不会中断。同时由于各个模块是运行于操作系统之上的应用程序,因此可以部署在不同的服务器平台上,减少了硬件的差异化,对于系统后续的扩容和维护带来了便利。
3.2 健康大数据分布式文件系统读写策略
3.2.1 采取中心服务器模式
为提高数据的存储和读取效率,减少对管理节点的访问,健康大数据分布式文件系统采取中心服务器模式,实现数据流和控制流分离。通过太网网络,将应用服务器、元数据管理服务器以及各存储节点连接起来。在实际过程中,应用服务器使用客户端应用程序挂载到元数据服务器上,然后通过与云数据服务的交互,得到需要读取或者存储的信息,直接通过网络完成与存储服务器进行数据交互,服务流程如图2所示。
在数据流与控制流分离的整个过程中,元数据服务器和存储服务器是独立的。当客户端完成数据的存取操作时,其中包含控制信息的控制流与包含数据信息的数据流是分离的。通过这样的操作,可以提高系统的吞吐率,最大限度的利用服务器带宽。
图2 数据流与控制流分离的读写流程
在健康大数据快速读写存储系统中,采用数据流与控制流分离技术,不仅可以将元数据服务器的负担转移到各个存储服务器上,提升各个服务器的服务能力。而且还可以提高健康大数据快速读写存储系统的服务能力和可维护性。
3.2.2 实行元数据内存读写
在计算机系统中,内存资源是十分宝贵的。健康大数据要求海量存储空间,因此系统的内存可能无法满足此需要。为解决这个问题,在健康大数据快速读写存储系统中采用分级存储的思想,即将元数据存储在固态硬盘中,最大程度的平衡访问效率和内存资源问题。在实际系统中,为了提高操作的效率和内存的利用率,采用相应的压缩机制降低元数据的空间占用率。
3.2.3 采用预读和写缓存
为提高数据的访问效率,减少文件读写流程,在健康大数据快速读写存储系统中,采用预读和写缓存技术。在实际存储系统中,利用预读和多线程并发处理的机制来减小串行模式对文件读写性能的影响。同时,为了把IO和传输并行起来[25],在健康大数据快速读写存储系统采用一种流式数据预读方法,和原有的预读策略相比,流式数据预读方法适当的调整了部分发送预读请求和收取预读数据的顺序式数据。
3.2.4 提供专有API接口
健康大数据快速读写存储系统要考虑到的应用场景是存储海量大数据,因此系统对于大块文件(MB或GB单位)的存储上性能要比小文件(KB或B为单位)优异。针对小文件的应用场景,采用小文件序列化的思想,建立打包文件,通过API的形式提供给上层应用使用。同时,健康大数据快速读写存储系统也应该包含开放API接口,供开发人员使用,并且也弥补POSIX接口本身机制对存储系统效率的影响,专用API提供高度并行存储访问技术,最大限度提升访客户端存储访问性能。
4 测试与结果分析
由于健康大数据是新兴产业,目前业内还没有一个标准的测试体系,本文的测试方法是参照基于网络的虚拟化存储系统的功能和性能测试技术和方法进行的。本文的测试环境是,2条元数据服务器(双路八核CPU,32 GB DDR3内存,2 TB SATA系统盘)、8台存储服务器(双路八核CPU,16 GB DDR3内存,500 GB系统盘,3 TB SATA数据盘×8)、1台客服端(双路八核CPU,16 GB DDR3内存,3 TB系统盘)。为了保证存储内部网络不成为系统的瓶颈,采用InfiniBand交换网络,其单网口带宽为40 Gbps。
在本次测试中,主要是大文件单流读写速度和小文件实时IO性能进行测试。其中,大文件单流读写主要测试系统数据流的存取效率,小文件实时IO主要测试存取效率。
在单客户端情况下,健康大数据快速读写存储系统在处理250 GB大文件的测试结果见表3。
表3 单客户端读性能
从表3我们看出,健康大数据快速读写存储系统在处理大文件读写方面性能稳定,写入速度达到3 GB/s,读入速度约2 GB/s,带宽最大利用为60%。
通过表3、表4的实验结果,我们可以看出,健康大数据快速读写存储系统在处理大文件读写方面性能较为优异,对于小文件读写方面上的性能还需要进一步改进。因为,本系统主要的应用场景主要是处理海量的医疗数据,基本达到了研究的预期目标。
表4 系统实时IO测试结果
5 结束语
本文在分析了近几年存储领域的主要技术研究成果后,深入讨论了针对海量数据存储的基础架构和提升效率、简化应用的主要方法,提出了面向健康大数据的快速访问机制,研究和设计出了健康大数据快速读写存储系统。在本文的基础上,分析和挖掘健康大数据是下一步的研究重点。随着信息技术的不断发展,医疗信息被数字化的程度逐渐加重,健康大数据的分析利用已成为经济社会中相关领域的核心关键需求。