APP下载

面向大数据的内存计算技术研究∗

2018-12-09

舰船电子工程 2018年3期
关键词:计算技术数据处理内存

张 伟

1 引言

随着物联网、云计算、人工智能等技术的高速发展,这些技术的发展都离不开大数据技术,大数据技术几乎成为新时代各个领域的研究基础。大数据具有数据体量巨大、数据类型繁多、价值密度低、数据增长速度快、以及高时效性等显著特征,针对大数据的诸多特点,需要建立大数据处理生态体系,包含数据采集、数据存储、数据管理、数据抽取与转换、数据查询与分析、数据聚合、数据表示等多个层面,并对大数据的处理提出了高可扩展、高可靠、高性价比、高适应能力的需求。此外,如今的AlphaGO、无人驾驶、智能机器人等新型实时型大数据应用对于实时、交互式分析等需求提出更高的要求。

然而,以计算为中心的系统架构难以有效应对新型实时型应用对于实时、交互式分析的复杂业务诉求。同时,大数据所表现出的高速增长、体量骤增、数据类型差异大等特点,进一步加剧了以计算为中心的传统计算模式所面临的内存容量有限、I/O压力大、缓存命中率低、并发控制困难、数据处理总体性能较低等诸多问题,难以取得性能、能耗与成本的最佳平衡,使得目前的计算机系统无法处理PB级以上的大数据。总的来看,大数据是一种以数据为中心的数据密集型技术,现有的以计算为中心的技术体系难以满足大数据的应用需求,急需一种以数据为中心的计算架构以满足大数据处理的需求。

随着新型非易失性存储器件的快速发展和成本的不断降低,客观上为以数据为中心的大数据处理模式提供了新的思路。内存计算技术应运而生,内存计算能够解决新型实时应用所要求的数据处理速度以及时效性的问题。在内存计算模式下,所有的数据操作均在内存中进行,包括数据存储、查询、处理等。CPU直接从内存读取数据,进行实时的计算和分析,减少了磁盘数据访问,降低了网络与磁盘I/O的影响,大幅提升了计算处理的数据吞吐量与处理速度。因此,内存计算技术成为大数据处理分析的利器,并成为工业界和学术界共同关注的研究热点。

本文主要对内存计算的概念、原理、技术特点、研究现状、典型应用、问题与挑战等角度进行介绍分析。首先,介绍和分析了内存计算的概念、原理和技术特点;其次,从技术层面介绍了内存计算技术的研究现状;然后,介绍了内存计算的几种典型应用;接下来,分析内存计算发展面临的问题与挑战;最后,对内存计算的发展进行总结和展望。

2 内存计算简介

2.1 内存计算技术的概念

内存计算[1](In-Memory Computing),实质上就是CPU直接从内存而非硬盘上读取数据,并对数据进行计算、分析,是对传统数据处理方式的一种加速。内存计算是以大数据为中心,依托计算机内存器件的发展,依靠新型的软件体系架构,将数据放入内存中处理,而尽量避免I/O操作的一种新型的以数据为中心的并行计算模式。内存计算主要用于数据密集型计算的处理,尤其是数据量极大且需要实时分析处理的计算。

内存计算技术主要是在计算机软硬件相结合的条件下,将数据库的相关计算转移到内存中进行。在内存中进行数据处理计算,可以有效突破I/O框架的限制,进而采取并行处理技术,大大提高数据处理计算的效率。

2.2 内存计算技术的特点

内存计算技术具有以下几个方面的特点[2]:

1)操作都在内存层面上进行。基于内存的高效数据读取和处理硬件方面拥有大容量内存,待处理数据均在存放于内存当中,内存既可以是单机内存也可以是分布式内存;数据库放在内存中,可以使相关数据处理通过更加开放更加高效的方式进行。

2)行存储和列存储的混合模式。由于数据库放在内存中,列储存和行储存就打破了原有的束缚,可以进行混合使用。

3)高效并行处理机制。支持更多的服务器或者处理器,能够分拆数据模型进行分步并行处理,还可以将分拆后的数据模块配置到不同的服务器进行分别处理。

4)数据高效压缩。数据库一般都是十分庞大的,只有将这些数据进行高效压缩,优化内存结构,才能提升内存的运转效率,进而提升数据处理效率。

5)面向数据密集型应用。内存计算的针对的应用主要数据规模大、时效性要求高的新型大数据应用。

6)具有良好的编程模型和编程接口。内存计算技术需要软硬件相结合,因此,对编程的要求较高。

3 内存计算的国内外研究现状

随着信息技术的高速发展,计算机硬件价格持续下降,尤其是内存容量的不断升高、内存价格的持续走低,使服务器配置高容量内存成为可能,用内存计算技术完成实时大数据处理已成为大数据处理的一个重要发展趋势。

3.1 新型非易失性存储器件

当前主流的半导体存储器件技术,如动态随机存储器和闪存等,无法满足大数据处理的大容量和高速读取的要求,日立、英特尔、IBM等公司都在竞相研发新一代半导体存储器技术,即新型非易失存储器技术。

近年来,随着电阻存储器(resistive randomac⁃cess memory,RRAM)[3]、铁电存储器(ferroelectric random accessmemory,FeRAM)[4]、相 变 存 储 器(phase change memory,PCM)[5~6]等为代表的新兴非易失性随机存储介质(non-volatile memory,NVM)技术的发展,使得传统的内存与存储分离的界限逐渐变得模糊,推进了存储技术的发展,为新型的内存与存储体系结构的发展打下了良好的基础。

新型非易失存储器技术目前主要有相变存储器(PCM)、磁存储器(MRAM)、阻变存储器(RRAM),随着近些年器件技术的进步,新型非易失存储从早期的理论研究开始向产品化转移,各主要厂商均有相应的研发计划,并预期逐步有相应的样片和产品推出。但目前仍受制于容量,主要用作小规模应用,如应用在数码产品上。业界针对其容量限制正在积极研究,以期在未来可以应用于大规模存储系统中。

3.2 混合内存系统架构

目前,国内外科研人员在基于PCM存储设备构造新的内存体系这一领域的研究工作主要集中在如何构造混合内存体系结构上。

在纷繁的NVM中,PCM作为一种新兴的存储设备,凭借其非易失性、非破坏性读、读完无须回写、写操作无须先擦除、存储密度高等特性,逐渐成为大规模内存系统中颇具潜力的DRAM替代品。在硬件体系结构方面,人们围绕PCM和DRAM的混合方案开展了很多研究,对何种混合内存体系结构能够更加充分地利用这两者的特性进行了深入的探讨。

近几年国内外学术界出现的混合内存结构包括[1]:

1)PDRAM[7]

PDRAM结构由PCM和DRAM构成,充分发挥了PCM在读数据和存储数据方面低功耗、非易失性和DRAM在写数据时低功耗及超长的写寿命的特性,PCM和DRAM处于同等地位,无主次之分,对两者线性编址,属于线性结构。

2)DRAMBuffer[8]

DRAMBuffer混合架构由DRAM和PCM的混合型内存系统构成,PCM作为主存,DRAM作为PCM的缓存,它结合了PCM高容量以及DRAM快速访问的特点。

3)层次混合内存[9]

这是一种由PCM和DRAM构成的具有层次结构的混合内存,这种层次内存分为片上和片下两部分。片上内存由单独的DRAM构成,片下部分则由PCM+DRAM混合构成。其中,片上DRAM因内置于处理器内部而具有较小的延迟;片下的DRAM和PCM共用同一个内存控制器且两者分配线性的物理地址。

虽然各种新型NVM都有着各自的优点,在某些方面比当前的DRAM更具有优势,但要真正把它们无缝整合进混合内存中,还需要采取一定的策略对其做性能方面的优化。

3.3 内存数据管理系统

工业界和学术界在基于内存计算的数据管理技术,特别是主存数据库领域已经累积的大量的研究成果和经验。在大数据发展初期,面向磁盘的分布式数据管理系统由于其高可扩展性而广泛应用。但是其性能上的乏力,促使基于分布式内存的数据管理系统的发展成为新的焦点。近些年工业界和学术界都针对于分布式内存数据库系统进行了研究[10]。

工业界出现了很多相关产品,Memcached[11]是最著名的全内存式数据存取系统,该系统使用DHT实现网络拓扑的构建以及数据的布局及查询,为上层应用提供了高可用的状态存储和可伸缩的应用加速服务,被Facebook,Twitter,YouTube,Reddit等多家世界知名企业所使用。与Memcached类似,VMware的Redis也提供了性能卓越的内存存储功能,支持包括字符串、哈希表、链表、集合、有序集合等多种数据类型以及更加易于使用的API,相比于Memcached,Redis提供了更灵活的缓存失效策略和持久化机制。此外,还有微软的Hekaton,SAP的HANA等内存数据库产品,随着需求的发展仍在不断涌现。

在学术界,MIT的H-Store是内存数据处理环境下的原型系统,其根据CPU Core进行数据分区,通过数据库多副本来获得数据的持久性。为解决处理数据超过内存容量的问题,布朗大学的DeBra⁃bant等还针对H-Store系统提出了Anti-Caching策略。慕尼黑工业大学开发的Hyper原型系统试图利用内存计算的特点基于统一的存储模型将传统上分离的OLTP和OLAP融合在一起进行处理。

此外,在数据管理方面,由于新型介质模糊了内存与外存的界限,现有的数据管理软件将无法完全发挥其潜在性能,因此需要研究相应的内存数据管理软件,并考虑数据在存储介质上的组织、分配、回收以及路径访问优化等特性。

3.4 内存编程模型

内存计算技术离不开软件的支撑,因此软件的编程模型尤为重要。编程模型是架构在硬件和应用之间,涵盖存储模型、执行模型、调度模型的综合抽象。其可以在大规模廉价集群中以并行、可扩展、容错、易用、透明的方式支持各种应用的有效执行。

UCBerkeley的基于内存的分布式并行处理框架Spark[12],有效保证了处理的实时性并提供了交互式的迭代分析能力。Spark提供的最主要的即弹性分布式数据集(RDD),RDD是一个分布在一组节点之间的只读的对象集合。这些集合是弹性的,能够在部分数据集丢失的情况下利用血统(lin⁃eage)容错机制进行重建。为了提供操作的便捷性,Spark框架还提供了和Hive类似的类SQL命令接口Shark。同时,基于Spark的内存计算分析生态系统,如处理流数据的Spark streaming,用于大图计算的GraphX等,正在不断的完善与开发之中。

此外,流式应用也是一类对实时性要求很高的应用类型,具有代表性的实时数据流计算模型有雅虎的S4、Facebook的Pumn、谷歌的MillWheel等,这些模型与企业自身的具体需求紧密结合,致力于解决实际的应用问题。

4 内存计算的典型应用

4.1 内存数据库

近年来,随着计算机硬件技术的迅猛发展,内存容量不断提高,价格不断下跌,同时对数据库系统实时响应能力要求日益提高,充分利用内存技术提升数据库性能成为一个热点。

其实内存数据库并不是一项新兴技术,其出现于20世纪60年代末,随着市场需求的不断增大在90年代后期开始得到快速发展。其原理就是将数据放在内存中直接操作的数据库。相对于磁盘,内存的数据读写速度要高出几个数量级,将数据保存在内存中相比从磁盘上访问能够极大地提高应用的性能。同时,内存数据库系统带来的优越性能不仅仅在于对内存读写比对磁盘读写快上,更重要的是,从根本上抛弃了磁盘数据管理的许多传统方式,基于全部数据都在内存中管理进行了新的体系结构的设计,并且在数据缓存、快速算法、并行操作方面也进行了相应的改进,从而使数据处理速度一般比传统数据库的数据处理速度快很多,一般都在10倍以上,理想情况甚至可以达到1000倍[13]。

内存数据库的另外一个重要特点是可以对内存中的数据实现全事务处理,相比仅仅把数据以数组等形式放在内存中是完全不同的。内存数据库是与应用无关的,对于内存数据库而言,实现了数据在内存中的管理,而不仅仅是作为数据库的缓存。不同于其它将磁盘数据块缓存到主存中的数据库,内存数据库的内存引擎使用了为随机访问内存而特别设计的数据结构和算法,这种设计使其避免了因使用排序命令而经常破坏缓存数据库性能的问题。通过内存数据库,大大减少了磁盘I/O处理,因此能够达到以磁盘I/O为主的传统数据库无法与其相比拟的处理速度。

4.2 图数据处理

图计算分析是一种I/O密集型计算,大部分的应用计算需要多次迭代,计算的状态信息需要在计算节点间消息传递和频繁更新,尤其是大规模的图数据,需要在集群的节点间进行频繁的消息传递和中间结果的存储。如果把数据全部在内存中计算,将极大地提高效率。

传统的在单机运行的图数据计算算法库,例如LEDA,扩展性不好,而对大规模的图数据计算能力不足;Map Reduce计算框架容错性、扩展性等方而较好,但是对于图计算效率不高;现有的图并行处理系统,存在容错性不佳等问题。

内存计算能够提升大规模图数据计算的效率,图的内存计算系统大致可以分为三种:第一种是基于内存分布式集群系统,例如Trinity系统;第二种是基于内存共享的分布式系统;第三种是在多核单机上多线程共享大内存系统,例如GRACE。

4.3 实时大数据处理

内存计算技术依托计算存储一体化体系结构,在内存中建立内存数据库,定期地将需要持久化的数据如归档文件同步到磁盘;计算时将全部数据加载到内存中,计算过程的文件读写操作仅与内存文件系统交互,不需要读写磁盘,有效解决数据网络传输效率低、内存/外存、I/O不匹配等问题。

在内存数据库的基础上,通过设计不同的内存接口模块、内存存取模块实现了内存数据的存取和访问,并通过内存资源管理模块对内存进行分配和管理。基于内存计算的数据处理技术可使用内存接口模块将虚拟内存管理系统和内存数据库连接起来,使用内存存取接口模块连接分布式数据管理系统和物理内存管理系统,从而实现了透明地访问各节点上的内存空间。

内存计算技术对现有应用数据采用列存储的方式并进行压缩,然后进行多核处理,既可以最大限度的使用内存,又可以加快应用程序的处理速度。首先,通过列存储的方式对数据进行存储,所以可以很方便地对数据进行压缩,从而便于服务器与前端移动设备之间的数据传输量降到最小。其次,把数据存放在服务器的内存中,可以直接在云端对数据进行分析查询操作,不需要把云端服务器的数据下载下来,减少了数据传输的时间。

5 内存计算的问题与挑战

内存计算模式主要包含如下几个关键问题[1]:异构协同、能耗可控和高效并行。异构协同是指在体系结构和操作系统层面如何实现异构层次内存体系的协同管理、透明服务的数据处理支撑环境;能耗可控是指在体系结构和编程模型层面如何基于内存计算,实现大数据低能耗的管理与处理环境;高效并行是指在编程模型与并行处理层面,如何基于内存计算,实现大数据高效率的并行处理环境。

这三个关键问题遇到的挑战和需要解决的技术难题分散在:体系结构、系统软件、编程模型和并行处理四个层面。四个层面需要面对的问题为:1)在体系结构层面,需要为异构混合层次内存设计专门的CPU访存通道;2)在系统软件层面,需要设计异构层次内存体系的一致性数据组织和高效、透明、可靠的新内存访问与管理策略;3)在编程模型层面,需要依据新内存的层次性特征设计数据与计算紧密藕合的编程模型、面向异构层次内存体系的数据局部性编程表达和多任务粒度划分策略等;4)在并行处理层面,主要解决并行环境中的节点互联问题和任务调度问题以及分布式环境下的一致性问题。

因此,尽管内存计算为当前工业界和学术界高度关注的热点问题,内存计算涉及硬件体系结构、软件体系结构、操作系统、编程模型、大数据处理等诸多方面内容,使得内存计算从底层的硬件架构到高层的编程模型都存在许多问题面临一系列挑战。

由于内存计算从硬件架构看,不管是单节点、分布式,还是基于新型混合内存系统,最终表现为软件层次的应用,比如,内存存储系统表现内存数据库,内存数据处理系统表现为图计算框架、深度学习算法处理框架、流处理框架等。

内存数据库将整个数据库装载进内存,避免了传统数据库I/O操作所带来的开销。这样,内存数据库性能提升的瓶颈从传统的I/O访问便转为如何提高计算时间及减少访存延迟,具体表现在索引建立、内存数据组织以及并发控制策略等方面,以达到优化内存数据库时间空间效率,优化内存及缓存的使用,保证系统性能的目的。另外,硬件的快速发展正在迅速改变商用处理器的场景,如NUMA架构,SIMD指令,RDMA网络,硬件事务内存(HTM),非易失性存储器(NVM),以及片上GPU,FPGA和其他硬件加速器,能够以较低的开销提供更高的性能。综上,内存数据库性能的提升不仅面临软件方面的挑战与机遇,同样硬件加速为内存数据库提出了新的挑战以及提供了新的发展前景。

图计算在不同的硬件架构平台上存在内存计算所面临的不同挑战。基于分布式的内存图计算面临数据通信时的I/O瓶颈问题;单节点内存图计算则面临内存不足时系统性能下降的问题,以及线程数增加所引起的内存墙问题。此外,图数据本身有其自身特点及复杂性,因而存在特有的问题需要解决。

深度学习是当前机器学习和模式识别领域的热点问题。深度学习需要训练的数据量庞大,导致训练过程非常耗时。因此,为了加速训练过程,如何充分利用大规模集群的硬件资源,使数据自始至终保存在内存中,成为内存计算的研究热点。针对深度学习算法方面的研究仍处于发展阶段,基于内存计算的深度学习框架更是面临更多的问题与挑战。

6 结语

内存计算消除了传统计算模式中的I/O性能瓶颈,可以预见,大数据的处理性能将获得显著提升,并为海量数据实时处理打造了一条宽广的“高速公路”。内存计算作为一种新型信息处理模式,不仅将推动计算机科学的发展,而且还为大数据信息处理提供核心技术支撑,从而广泛服务于经济建设、科学研究和国家安全等领域。

随着非易失性存储器件的发展,传统的以计算为中心的计算机体系架构将面临体系结构、操作系统、编程模型方面的诸多挑战,内存计算技术将迎来高速发展的机遇:

1)实时应用对时效性的需求为内存计算提供了发展的动力;

2)新型硬件技术的发展为内存计算提供了发展的基石;

3)新的数据处理特征为内存计算提供了发展的契机;

4)数据处理模式的变迁为内存计算提供了发展的方向。

可以预见,内存计算将会进入新一轮的研究和发展高峰,并成为大数据实时处理领域的热点。

[1]金海,廖小飞,叶晨成.内存计算:大数据处理的机遇与挑战[J].中国计算机学会通讯,2013,9(4):40-46.

[2]罗乐,刘轶,钱德沛.内存计算技术研究综述[J].软件学报,2016,27(8):2147-2167.

[3]Govoreanu B,Kar G S,Chen Y,et al.10×10nm2 Hf/HfOx crossbar resistive RAM with excellent performance,reliability and low-energy operation[J].Electron Devices Meeting. iedm.technical Digest.international,2012:31.6.1-31.6.4.

[4]Park BH,Kang BS,Bu SD,et al.Lanthanum-substitut⁃ed bismuth titanate for use in non-volatile memories[J].Nature,1999,401(6754):682-684.

[5]Lee B C,Zhou P,Yang J,et al.Phase-Change Technolo⁃gy and the Future of Main Memory[J].IEEE Micro,2010,30(1):143-143.

[6]Raoux S,Burr GW,Breitwisch M J,et al.Phase-change random access memory:A scalable technology[J].Ibm Journal of Research&Development,2010,52(4.5):465-479.

[7] Dhiman G,Ayoub R,Rosing T.PDRAM:a hybrid PRAM and DRAM main memory system[C]//Design Au⁃tomation Conference,DAC'09.IEEE,2009:664-669.

[8]Qureshi M K,Srinivasan V,Rivers JA.Scalable high per⁃formance main memory system using phase-change memo⁃ry technology[C]//International Symposium on Computer Architecture.ACM,2009:24-33.

[9]Park K H,Park S K,Seok H,et al.Efficient memory management of a hierarchical and a hybrid main memory for MN-MATE platform[C]//International Workshop on Programming MODELS and Applications for Multicores and Manycores.ACM,2012:83-92.

[10]嵇智源,潘巍.面向大数据的内存数据管理研究现状与 展 望[J]. 计 算 机 工 程 与 设 计 ,2014(10):3499-3506.

[11]Memcached Team.Memcached:A Distributed Memory Object Caching System.http://memcached.org/. Re⁃trieved 2015.

[12]Zaharia M,Chowdhury M,Franklin M J,et al.Spark:cluster computing with working sets[C]//Usenix Confer⁃ence on Hot Topics in Cloud Computing.USENIX Asso⁃ciation,2010:10-10.

[13]周烜,薛忠斌.批处理在内存数据处理系统中的应用[J].华东师范大学学报(自然科学版),2014(5):252-262.

猜你喜欢

计算技术数据处理内存
认知诊断缺失数据处理方法的比较:零替换、多重插补与极大似然估计法*
基于低频功率数据处理的负荷分解方法
无人机测绘数据处理关键技术及运用
新时期计算机网络云计算技术研究
笔记本内存已经在涨价了,但幅度不大,升级扩容无须等待
“春夏秋冬”的内存
高层建筑沉降监测数据处理中多元回归分析方法的应用研究
高层建筑沉降监测数据处理中多元回归分析方法的应用研究
计算机技术在通信中的应用研究
云计算及其在地理信息工程中的应用