海量数据的分布式存储方法

文档序号:7866881阅读:1511来源:国知局
专利名称:海量数据的分布式存储方法
技术领域
本发明属于云计算技术领域,具体涉及海量数据的存储技术。
背景技术
Clouding技术引起了ー场IT产业界技术革命,为IT行业指明了未来发展的方向。云计算服务被各国政府视为国家软件产业发展的新契机。业内外人士对其发展情况和实用价值都表现出非常的关注。
对于海量数据而言,Database Server的CPU、IO吞吐等性能都将面临严峻的考验,由于网络资源迅速的不断膨胀,数据库服务器一方面要解决存储空间、访问速度及清除网络瓶颈等问题,另一方面还要完成所有数据的挖掘过程,这样的巨大压カ是无法适应网络发展需求的。同吋,随着每天实际应用中不得不继续增加的文本数据,这即使是针对已经完成预处理的文本资料的数据挖掘,也超出了现有小型处理机的承受范围。处理海量数据主要面临以下问题
I)过大的数据量可能会出现复杂的情況。如果有数十条或者数百条数据,进行人为的逐一检查处理是可行的,可一旦数据达到千万级别,甚至过亿,便不再可能进行人为处理了,必须借助外力进行处理,如工具或者程序,尤其海量数据中复杂情况的出现率会更高。2)对软硬件和系统资源需要有高要求及高占用率。处理海量数据,除了需要方法好,合理的使用工具和分配系统资源也很重要。一般情况,处理的数据在TB级以上,则需要使用小型机,不过,在算法优异并加大CPU和内存的前提下,也可以考虑使用个人计算机。3)要求性能优异的算法。有优异的算法才能提高对海量数据的处理效率。优秀的程序代码对处理数据有着至关重要的作用,特别是在进行复杂数据处理时,优秀的代码可以事半功倍。算法优异的良好程序代码,还应具有优秀的处理流程及异常处理机制等。本发明针对上述技术问题提出ー种分布式存储海量数据的方法。

发明内容
本发明提供一种海量数据的分布式存储方法,包括下列步骤
步骤1,分割,首先,输入文件被用户程序中的MapReduce函数库分割成M块,然后进行程序拷贝。步骤2,指派 Map/Reduce 任务。步骤3,读取,Master给工作机分配任务,被分配了 Map任务的工作机处理输入块的相关工作。步骤4,本地写入,这些缓冲到内存的中间值将定时写入本地硬盘,使用分区函数分割成多个区域。步骤5,远程读取,当Reduce工作机接收到中间对的位置时,Master调用远程过程从Map工作机的本地硬盘上读取缓冲的中间数据。步骤6,写入,依照每ー个由唯一的中间关键字对应的中间数据的序列情況,Reduce工作机发送该关键字和对应的中间数据给用户的Reduce函数,经Reduce函数处理后所得结果输出到ー个最終的输出文件。步骤7,完成所有的Map/Reduce任务,主控程序激活用户程序。其中步骤I中每块文件大概在16M到64MB之间。步骤2中程序由一个主控程序Master和作为主控程序来分配工作的Worker (エ作机)组成。Master分配这些Map/Reduce任务到选择空闲的工作机上。步骤3中工作机处理输入块的相关工作指的是数据的输入及处理。其中步骤4中由Maser将接收那些在本地磁盘的数据数列的存放位置信息,由Reduce工作机负责接收这些信息。步骤5中Reduce工作机读取这些中间值后,它就按照key是否相同来进行排序, 将相同key的值排序在一起。本方法能够对海量数据进行处理,具有对软硬件和系统资源需求低、占用率也低的特点。


图1为分布式算法流程图。
具体实施例方式目前针对海量数据的存储来说,支持分布式处理的分布式软件系统可以在由通信网络互联的多处理机体系结构上执行任务而被广泛采用。分布式软件系统由分布式操作系统、分布式程序设计语言及其编译系统、分布式文件系统和分布式数据库系统等部分組成。分布式系统与并行系统类似,为了方便处理任务,将具有大量复杂计算的任务分割成若干个相对小计算量任务进行处理,从而得到最后的计算結果。但与并行系统仍然有不同之处,对分布式系统而言,有联系的各个任务均分开处理,这样各个任务之间几乎不会相互有影响,比如一个任务包为得到处理结果或者处理结果发生错误,下ー个任务包仍然可以正常运行。因此,分布式系统对实时性的要求较低,并且存在一定量的计算错误也是允许的。參见图1,本发明提供ー种分布式处理海量数据存储的算法,包括以下步骤
步骤I,分割,首先,输入文件被用户程序中的MapReduce函数库分割成M块,姆块大概
在16M到64MB之间,然后进行程序拷贝。步骤2,指派Map/Reduce任务,程序由一个主控程序Master和作为主控程序来分配工作的Worker (工作机)组成。Master分配这些Map/Reduce任务到选择空闲的工作机上。步骤3,读取,Master给工作机分配任务,被分配了 Map任务的工作机处理输入块的相关工作(数据的输入及处理),而且〈key, value)对被传递给用户指定的Map函数,而由此函数产生的中间值对暂时存放到内存中。步骤4,本地写入,这些缓冲到内存的中间值将定时写入本地硬盘,使用分区函数分割成多个区域。Maser将接收那些在本地磁盘的数据数列的存放位置信息,由Reduceエ作机负责接收这些信息。步骤5,远程读取,当Reduce工作机接收到中间对的位置时,Master调用远程过程从Map工作机的本地硬盘上读取缓冲的中间数据。Reduce工作机读取这些中间值后,它就按照key是否相同来进行排序,将相同key的值排序在一起。使用外排序来缓解中间值过于复杂庞大的情況。步骤6,写入,依照每ー个由唯一的中间关键字对应的中间数据的序列情況,Reduce工作机发送该关键字和对应的中间数据给用户的Reduce函数,经Reduce函数处理后所得结果输出到ー个最終的输出文件。步骤7,完成所有的Map/Reduce任务,主控程序激活用户程序。为了在成百上千台机器上使用上述分布式处理海量数据存储的算法,如果Master失效,在主控程序中会定期设置checkpoint,并导出数据。这样,当某个任务失效的时候,便可以选择从最近的ー个checkpoint开始恢复数据并重新执行该任务。不过,由于Master的P隹一>!■生,当Master失效后,只能终止运行整个MapReduce程序,并重新执行。如果work失效,Master会通过定期ping各个工作机来检测它们的工作状态。如果工作机失效,则 工作机会没有回答,这时便结束对该工作机的任务调度,并将正在该工作机上处理的Map/Reduce任务设置重新设置为空闲状态,以便供Master重新调度。以上通过图示和说明提出了本发明的描述,上述举例,并非穷举,本领域的普通技术人员可以在本发明的精神和范围内作出改进和变形。
权利要求
1.一种海量数据的分布式存储方法,包括下列步骤 步骤1,分割,首先,输入文件被用户程序中的MapReduce函数库分割成M块,然后进行程序拷贝; 步骤2,指派Map/Reduce任务; 步骤3,读取,Master给工作机分配任务,被分配了 Map任务的工作机处理输入块的相关工作; 步骤4,本地写入,这些缓冲到内存的中间值将定时写入本地硬盘,使用分区函数分割成多个区域; 步骤5,远程读取,当Reduce工作机接收到中间对的位置时,Master调用远程过程从Map工作机的本地硬盘上读取缓冲的中间数据; 步骤6,写入,依照每一个由唯一的中间关键字对应的中间数据的序列情况,Reduce工作机发送该关键字和对应的中间数据给用户的Reduce函数,经Reduce函数处理后所得结果输出到一个最终的输出文件; 步骤7,完成所有的Map/Reduce任务,主控程序激活用户程序。
2.如权利要求1所述的海量数据的分布式存储方法,其中步骤I中每块文件大概在16M到64MB之间。
3.如权利要求1所述的海量数据的分布式存储方法,步骤2中程序由一个主控程序Master和作为主控程序来分配工作的Worker (工作机)组成,Master分配这些Map/Reduce任务到选择空闲的工作机上。
4.如权利要求1所述的海量数据的分布式存储方法,步骤3中工作机处理输入块的相关工作指的是数据的输入及处理。
5.如权利要求1所述的海量数据的分布式存储方法,其中步骤4中由Maser将接收那些在本地磁盘的数据数列的存放位置信息,由Reduce工作机负责接收这些信息。
6.如权利要求1所述的海量数据的分布式存储方法,步骤5中Reduce工作机读取这些中间值后,它就按照key是否相同来进行排序,将相同key的值排序在一起。
全文摘要
本发明提供一种海量数据的分布式存储方法,包括分割、指派Map/Reduce任务、读取、本地写入、远程读取、写入、完成所有的Map/Reduce任务,主控程序激活用户程序等步骤。本方法能够对海量数据进行处理,具有对软硬件和系统资源需求低、占用率也低的特点。
文档编号H04L29/08GK103023992SQ20121049393
公开日2013年4月3日 申请日期2012年11月28日 优先权日2012年11月28日
发明者宗竞 申请人:江苏乐买到网络科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1