一种海量数据的分布式存储方法技术领域
本发明涉及数据存储技术领域,特别涉及一种海量数据的分布式存储方
法。
背景技术
当前,随着网络应用的发展,网络中的数据资源不断地膨胀。数据库服
务器一方面需要解决存储空间和访问速度等问题,另一方面也需要考虑对海
量数据的挖掘处理,以实现对海量数据进行合理高效地存储。
然而,在现有技术中,海量数据的存储过程通常是粗放式存储,也即,
在未加处理的情况下,按照接收到的数据文件的时间顺序依次对数据文件进
行存储,这样显然会导致不同类型的数据混乱地挤在一起,从而使得后续对
存储文件的访问过程造成严重不便。
综上所述可以看出,如何在数据存储之前预先对数据进行挖掘处理,以
实现对数据合理高效的存储是目前亟待解决的问题。
发明内容
有鉴于此,本发明的目的在于提供一种海量数据的分布式存储方法,通
过在数据存储之前预先对数据进行挖掘处理,从而实现了对数据合理高效的
存储。其具体方案如下:
一种海量数据的分布式存储方法,包括:
当获取到输入文件时,对所述输入文件进行分割处理,相应地得到N份块
文件,N为正整数;
分别对所述N份块文件中的每一份块文件进行特征信息提取处理,相应地
得到每一份块文件的特征信息;
对所述N份块文件中具有相同特征信息的块文件归为一类,相应地得到M
类文件,其中,M为不大于N的正整数;
分别对所述M类文件中的每一类文件进行文件合并,相应地得到M份合并
文件,并对所述M份合并文件进行存储。
优选的,任一份块文件的文件大小为16MB至64MB中的任一数值。
优选的,所述对所述输入文件进行分割处理,相应地得到N份块文件的过
程,包括:
利用MapReduce函数库,对所述输入文件进行分割,得到所述N份块文件。
优选的,所述分别对所述N份块文件中的每一份块文件进行特征信息提取
处理,相应地得到每一份块文件的特征信息的过程,包括:
为所述N份块文件中的每一份块文件分配各自的Map任务,相应地得到N
个Map任务;
利用所述N个Map任务中的每一个Map任务,从相应的块文件中提取出键
值对,相应地得到N个键值对;其中,任一份块文件对应的键值对均包含该块
文件的关键字以及相应的数值;
将每一份块文件对应的键值对中的关键字确定为该块文件的特征信息。
优选的,所述对所述N份块文件中具有相同特征信息的块文件归为一类,
相应地得到M类文件的过程,包括:
将所述N个Map任务分配给Map工作机,以利用所述Map工作机对所述N
个Map任务进行处理,得到相应的N个中间值;
将所述N个中间值不重复地写入所述Map工作机的本地硬盘上的P个分
区,P为正整数,并相应地记录每一个中间值所对应的存放位置信息;
根据每一个中间值所对应的存放位置信息,对所述P个分区上存储的中间
值进行远程读取操作,并将读取到的中间值发送至Reduce工作机,以利用所
述Reduce工作机将具有相同关键字的块文件所对应的中间值排序在一起,相
应地得到M个排序后的文件,并将所述M个排序后的文件确定为所述M类文
件。
优选的,所述Map工作机对任一个Map任务进行处理的过程,包括:
对与该Map任务对应的块文件进行数据输入处理,并将相应的键值对传递
给预设的Map函数,以通过该Map函数获取相应的中间值,并将该中间值缓存
至内存中。
优选的,所述分别对所述M类文件中的每一类文件进行文件合并,相应地
得到M份合并文件的过程,包括:
通过所述Reduce工作机,将所述M类文件中的每一类文件以及该类文件所
对应的关键字发送至相应的Reduce函数,以利用Reduce函数对每一类文件进
行文件合并处理,相应地得到所述M份合并文件。
优选的,在为所述N份块文件中的每一份块文件分配各自的Map任务,相
应地得到所述N个Map任务之后,还包括:
对所述N个Map任务的有效性进行实时监测,当监测到任一Map任务失效
后,重新执行该Map任务。
优选的,所述分布式存储方法,还包括:
对所述Map工作机的工作状态进行实时监测,得到相应的监测结果;并对
所述监测结果进行实时显示。
优选的,所述分布式存储方法,还包括:
当监测到所述Map工作机失效时,将所述Map工作机当前正在处理的Map
任务置为失效状态,并结束所述Map工作机的运作。
本发明中,当获取到输入文件时,对输入文件进行分割处理,相应地得
到N份块文件;分别对上述N份块文件中的每一份块文件进行特征信息提取处
理,相应地得到每一份块文件的特征信息;对上述N份块文件中具有相同特征
信息的块文件归为一类,相应地得到M类文件;分别对上述M类文件中的每一
类文件进行文件合并,相应地得到M份合并文件,并对上述M份合并文件进行
存储。可见,本发明中,当接收到输入文件后,先对输入文件进行分割,并
将分割后得到的多个块文件的特征信息提取出来,然后将具有相同特征信息
的块文件归为一类,进而将每一类文件进行合并存储,由此实现了对多个块
文件的特征信息的挖掘,进而实现了对数据合理高效的存储。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实
施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面
描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不
付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例公开的一种海量数据的分布式存储方法流程图;
图2为本发明实施例公开的一种具体的海量数据的分布式存储方法流程
图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行
清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而
不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做
出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种海量数据的分布式存储方法,参见图1所示,上
述分布式存储方法包括:
步骤S11:当获取到输入文件时,对输入文件进行分割处理,相应地得到
N份块文件,N为正整数;
步骤S12:分别对上述N份块文件中的每一份块文件进行特征信息提取处
理,相应地得到每一份块文件的特征信息;
步骤S13:对上述N份块文件中具有相同特征信息的块文件归为一类,相
应地得到M类文件,其中,M为不大于N的正整数;
步骤S14:分别对上述M类文件中的每一类文件进行文件合并,相应地得
到M份合并文件,并对上述M份合并文件进行存储。
其中,优选的,上述任一份块文件的文件大小为16MB至64MB中的任一
数值。
本发明实施例中,当获取到输入文件时,对输入文件进行分割处理,相
应地得到N份块文件;分别对上述N份块文件中的每一份块文件进行特征信息
提取处理,相应地得到每一份块文件的特征信息;对上述N份块文件中具有相
同特征信息的块文件归为一类,相应地得到M类文件;分别对上述M类文件中
的每一类文件进行文件合并,相应地得到M份合并文件,并对上述M份合并文
件进行存储。
可见,本发明实施例中,当接收到输入文件后,先对输入文件进行分割,
并将分割后得到的多个块文件的特征信息提取出来,然后将具有相同特征信
息的块文件归为一类,进而将每一类文件进行合并存储,由此实现了对多个
块文件的特征信息的挖掘,进而实现了对数据合理高效的存储。
本发明实施例公开了一种具体的海量数据的分布式存储方法,相对于上
一实施例,本实施例对技术方案作了进一步的说明和优化。具体的:
参见图2所示,上一实施例步骤S11中,对输入文件进行分割处理,相应
地得到N份块文件的过程,具体包括:利用MapReduce函数库,对输入文件进
行分割,得到N份块文件。
参见图2所示,上一实施例步骤S12中,分别对上述N份块文件中的每一份
块文件进行特征信息提取处理,相应地得到每一份块文件的特征信息的过程,
包括:
步骤S121:为上述N份块文件中的每一份块文件分配各自的Map任务,相
应地得到N个Map任务;
步骤S122:利用上述N个Map任务中的每一个Map任务,从相应的块文件
中提取出键值对,相应地得到N个键值对;其中,任一份块文件对应的键值对
均包含该块文件的关键字以及相应的数值;
步骤S123:将每一份块文件对应的键值对中的关键字确定为该块文件的
特征信息。
参见图2所示,上一实施例步骤S13中,对上述N份块文件中具有相同特征
信息的块文件归为一类,相应地得到M类文件的过程,包括:
步骤S131:将上述N个Map任务分配给Map工作机,以利用Map工作机对
上述N个Map任务进行处理,得到相应的N个中间值;需要说明的是,上述Map
工作机可以是一台Map工作机,也可以是一台以上的Map工作机,本实施例为
了方便阐述,并不对Map工作机的数量作进一步的限定。
步骤S132:将上述N个中间值不重复地写入Map工作机的本地硬盘上的P
个分区,P为正整数,并相应地记录每一个中间值所对应的存放位置信息;
步骤S133:根据每一个中间值所对应的存放位置信息,对上述P个分区上
存储的中间值进行远程读取操作,并将读取到的中间值发送至Reduce工作机,
以利用Reduce工作机将具有相同关键字的块文件所对应的中间值排序在一
起,相应地得到M个排序后的文件,并将该M个排序后的文件确定为上述的M
类文件。需要说明的是,上述Reduce工作机的数量可以是一台,也可以是一
台以上,本实施例为了方便阐述,并不对Reduce工作机的数量作进一步的限
定。
其中,在上述步骤S131中,Map工作机对任一个Map任务进行处理的过程,
具体包括:对与该Map任务对应的块文件进行数据输入处理,并将相应的键值
对传递给预设的Map函数,以通过该Map函数获取相应的中间值,并将该中间
值缓存至内存中。
参见图2所示,上一实施例步骤S14中,分别对M类文件中的每一类文件
进行文件合并,相应地得到M份合并文件的过程,具体包括:通过上述Reduce
工作机,将上述M类文件中的每一类文件以及该类文件所对应的关键字发送至
相应的Reduce函数,以利用Reduce函数对每一类文件进行文件合并处理,相
应地得到M份合并文件。
为了避免Map任务在被执行之前或在被执行的过程发生意外而导致数据
保存不完整的情况,在为上述N份块文件中的每一份块文件分配各自的Map任
务,相应地得到N个Map任务之后,还包括:对上述N个Map任务的有效性进
行实时监测,当监测到任一Map任务失效后,重新执行该Map任务。
进一步的,本实施例中的分布式存储方法还可以包括:对上述Map工作机
的工作状态进行实时监测,得到相应的监测结果;并对监测结果进行实时显
示;当监测到上述Map工作机失效时,将上述Map工作机当前正在处理的Map
任务置为失效状态,并结束该Map工作机的运作。
最后,还需要说明的是,在本文中,术语“包括”、“包含”或者其任
何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方
法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,
或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多
限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述
要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种海量数据的分布式存储方法进行了详细介
绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实
施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领
域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会
有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。