专利名称:基于内存映射的大数据文件快速并行提取方法
技术领域:
本发明涉及一种数据处理技术,具体说,涉及一种基于内存映射的大数据文件快速并行提取方法。
背景技术:
随着多核计算机的发展,多核PC机已经可以完成许多大规模计算任务,复杂的计算往往与大量的数据文件相关,这就难免会出现应用程序一次性处理几个GB数据文件的情况,目前面对这样大数据文件的处理,存储器与辅助存储器内的数据读取往往会成为提高应用程序运行速度的瓶颈,从而不能很好运用多核系统带来的优越硬件性能。现有的内存映射文件技术,全部是在传统的单核环境下实现的,在针对大数据文件的处理方面存在着效率低下、通用性差的缺点,即普通的内存映射方法处理效率低,经过改进的内存映射方法只能应用在某些特定问题上,不具备通用性。在大数据文件的读取方面,主要面临的问题是数据的存储、提取、处理和分析。 DAS (Direct Attached Storage,直接附力口存储)禾口 FAS (Fabric Attached Storage,网络存储)是大数据文件存储技术的两个主流方向。近年来,网络存储在P2P技术、网络存储系统等方面有了很好的发展,尤其是基于对象存储的Lustre文件系统,以其并行的数据访问、 分布式的元数据管理在性能上超越了传统的网络存储架构。然而,随着当前多核处理器性能的急速提升,对于采用DAS存储方式将外部存储设备直接挂接在服务器内部总线上的个人计算机或小型服务器,其大数据文件的读取速度已经难以满足处理器计算的需求,如果文件的数据量过大甚至会出现操作系统不支持的情况,以导致系统直接崩溃。在已有的研究中,针对大数据文件快速提取及处理的解决方法主要集中在两个方面。一种是改善硬件环境进行性能的提升,主要的做法是通过硬盘技术、磁盘阵列技术等以提高大数据文件的处理能力。这种方法不但存在着提升硬件成本的问题,而且仍无法避免文件量过大操作系统不支持的情况。另一种解决方法就是内存映射文件技术。对内存映射文件技术的研究主要有两个方面。一方面是直接利用内存映射文件技术配合相应算法提高大数据文件的处理能力;另一方面是利用特定索引方式提高内存映射文件在解决特定问题上的效率。在已有的研究中,通过硬盘技术、磁盘阵列技术等来提高大数据文件的处理能力, 不但存在着提升硬件成本的问题,而且仍无法避免文件过大导致操作系统不支持的情况。 目前对大数据文件的处理普遍使用的一种方法是直接利用内存映射技术和相应算法,虽然可以支持大的数据文件,但是处理效率较低,影响系统的有效性。另一种处理大数据量文件的方法是利用特定索引方式配合内存映射文件来提高解决特定问题的效率,这种方法只针对某些特定问题,缺乏通用性。内存映射文件(Memory-Mapped Files, MMFs)是Win32操作系统所提供的处理大数据文件的技术,这种技术系统可以利用进程地址空间中的一部分进行内存映射操作并负责管理页映射和缓冲等任务,这就使得用户在使用上是非常方便的。大数据文件被映射之后,使用者无需关心它的具体管理工作也并不需要再去通过传统的文件Ι/0ΑΡΙ来进行文件操作,而是直接通过对文件的指针进行操作来达到操作文件的目的,操作方式如同操作我们操作程序中开辟的内存空间一样。内存映射文件可以有三种映射,第一种是映射.exe文件,这种映射方式主要是操作系统使用。第二种映射是映射数据文件,这种映射是在访问大数据文件时很好的选择。第三种映射是借助于页面交换文件的映射,这种映射可以进行各个进程之间对相关资源的共享。本发明将主要使用第二种内存映射文件方式进行针对大数据文件的访问及处理。系统在实现内存映射文件的时候使用0x80000000-0xBFFFFFFF这一段地址空间进行内存映射文件内容的相关操作,如表1所示。表IWindows操作系统对进程地址空间的分配
权利要求
1.一种基于内存映射的大数据文件快速并行提取方法,包括任务域生成;将任务块组成任务域,所述任务块为任务域中的元素;任务池生成;将所述任务域中的元素按低通信代价的原则进行子任务域归并,将所述任务域中的元素的集合作为任务调度的任务池,根据调度的选择来提取任务供处理器执行;任务调度;根据任务的剩余量决策任务的调度粒度,将符合要求的任务提取出所述任务池,并为映射做好准备;处理器映射;将所述提取出的任务映射到当前空闲处理器去执行。
2.如权利要求1所述的基于内存映射的大数据文件快速并行提取方法,其特征在于 在将任务块组成任务域过程中,基于视图的划分方式进行任务划分,在映射视图过程中,以一个并行粒度N为映射单位,之后随着任务集中任务量的逐渐减少,将并行粒度随之调小。
3.如权利要求1所述的基于内存映射的大数据文件快速并行提取方法,其特征在于 所述任务域生成过程中,选取初始化文件信息/任务池,创建文件核心对象。
4.如权利要求1所述的基于内存映射的大数据文件快速并行提取方法,其特征在于 所述任务池生成过程中,为每个线程设置自己的任务队列,并对任务队列进行初始化,根据开设线程的总数目将其中的任务均勻分配给各个任务队列。
5.如权利要求1所述的基于内存映射的大数据文件快速并行提取方法,其特征在于 所述任务调度过程中,将多个线程分别分配到各个处理器核心进行处理,每个线程创建各自的内存映射对象。
6.如权利要求5所述的基于内存映射的大数据文件快速并行提取方法,其特征在于 各个线程分别创建自己的内存映射对象,为后续访问工作做好准备。
7.如权利要求6所述的基于内存映射的大数据文件快速并行提取方法,其特征在于 检索任务队列,提取访问任务,各执行线程提取自己的访问任务,判断任务队列是否为空, 如果任务队列为空则将当前线程处理工作终止;如果任务队列不为空,则提出的一个任务作为本次执行任务。
8.如权利要求1所述的基于内存映射的大数据文件快速并行提取方法,其特征在于, 所述处理器映射过程包括映射视图、读取处理数据和解除视图映射三个步骤。
9.如权利要求8所述的基于内存映射的大数据文件快速并行提取方法,其特征在于 在所述映射视图过程中,各执行线程从文件起始位置按照所述调度粒度进行映射。
10.如权利要求8所述的基于内存映射的大数据文件快速并行提取方法,其特征在于 在读取处理数据过程中,各执行线程根据访问及处理的需要,对本视图下的数据进行操作。
全文摘要
本发明公开了一种基于内存映射的大数据文件快速并行提取方法,包括任务域生成,将任务块组成任务域,所述任务块为任务域中的元素;任务池生成,将所述任务域中的元素按低通信代价的原则进行子任务域归并,将所述任务域中的元素的集合作为任务调度的任务池,根据调度的选择来提取任务供处理器执行;任务调度,根据任务的剩余量决策任务的调度粒度,将符合要求的任务提取出所述任务池,并为映射做好准备;处理器映射,将所述提取出的任务映射到当前空闲处理器去执行。本发明能够发挥多核的优势,提高内存映射文件的效率,可以应用在单个文件在4GB以下容量的大文件读取中,能够有效提高这类文件的读取速度,提高磁盘文件I/O吞吐率。
文档编号G06F17/30GK102231121SQ20111020964
公开日2011年11月2日 申请日期2011年7月25日 优先权日2011年7月25日
发明者李敬哲, 杜春来, 马东超, 马礼 申请人:北方工业大学