[发明专利]面向海量数据的分布式处理方法有效
申请号: | 201110424530.5 | 申请日: | 2011-12-16 |
公开(公告)号: | CN102521367A | 公开(公告)日: | 2012-06-27 |
发明(设计)人: | 杨广文;耿益锋;黄小猛 | 申请(专利权)人: | 清华大学 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京路浩知识产权代理有限公司 11002 | 代理人: | 王莹 |
地址: | 100084 北京市海*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 面向 海量 数据 分布式 处理 方法 | ||
技术领域
本发明涉及海量数据的分布式处理技术领域,尤其涉及一种面向以数组形式存储的海量数据的分布式处理方法。
背景技术
随着互联网的快速发展,网络产生的数据越来越多,如何存储和处理这些海量数据,是一个亟待解决的问题。MapReduce是由Google提出的分布式处理框架,用户只要编写“Map”和“Reduce”中的处理过程,MapReduce系统就可以使用户实现对海量数据的分布式并行处理,并提供自动的任务容错和负载均衡。结合Google的分布式文件系统(GFS),MapReduce可以充分利用数据的局部性,从而大大减少网络传输的数据量。Hadoop是MapReduce和GFS架构的开源实现,被Yahoo!、Facebook等许多公司使用。由于MapReduce框架的高效易用、可容错和可扩展,它被广泛应用于文档聚类、机器学习、日志分析等应用程序中。
随着仪器精度,数据采集和研究方法的快速发展,科学研究收集和生成的数据也越来越多。这些数据大多以数据的形式(如NetCDF、HDF文件格式)存储在网络文件系统(NFS)和并行文件系统上,用户可以编写串行程序用单机进行处理,但是显然单机的处理能力无法应对海量的科学数据;用户可以编写MPI程序来进行多机处理,但是MPI的调试、容错和负载均衡使得完成一个简单的处理程序都非常费时费力。
MapReduce的分布式处理框架可以克服MPI多机处理的缺点,但是MapReduce并行处理框架最初是针对Web数据而设计的,并不能简单地应用到以数组方式存储的科学数据上。另外,科学家使用MapReduce框架处理数据的时候需要自己编写相应的MapReduce处理程序,虽然相比MPI多机程序,已经减少了很多工作量,但还是有一定的学习门槛和工作量。
Hive是架设于MapReduce之上的开源SQL引擎,提供数据查询和分析功能。Hive能够提供SQL语义,并将SQL语义转化为MapReduce任务进行执行。但是Hive并不能直接应用于科学数据处理,因为Hive中的处理都是基于表的列和行进行的,而以数组形式存储的科学数据没有表的列和行的概念。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是:如何设计一种对于以数组形式存储的海量数据的分布式处理方法。
(二)技术方案
为解决上述技术问题,本发明提供了一种面向海量数据的分布式处理方法,包括以下步骤:
S1:根据SQL命令以及数组文件内的变量信息计算输出变量和条件变量集合中的主变量,如果主变量存在,执行步骤S2,其中,所述数组文件是以数组形式存储的数据文件;
S2:判断是否进行条件变量的选择优化,如果否,那么在读取数据时,遍历数组文件中的主变量的整个索引范围;如果是,那么先根据条件变量的选择范围计算输出变量的维度范围,并根据该维度范围读取数据;
S3:判断数组是否合并存储,如果否,那么读取数组组成数据元组;如果是,那么不展开读取的数据,且生成另一个数据元组,所生成的数据元组中每一个单元都包含该列对应变量的数据值的集合;
S4:SQL引擎根据SQL命令以及表中定义的各列的数据类型生成MapReduce任务接收到的数据元组,并生成结果数据元组;
S5:对于生成的结果数据元组,判断是否需要将其以数组文件存储,如果否,那么就按照保存为其他文件格式的方法处理该结果数据元组;如果是,那么判断结果数据元组中的数组是否被合并存储,如果未被合并存储,则遍历结果数据的行,每一列生成一个变量的数组,并按照表中定义的列的数据类型将数组存储到数组文件,如果已被合并存储,那么将结果数据元组中每个单元的内容取出作为一个变量数组,并按照表中定义的列的数据类型将数组存储到数组文件。
优选地,步骤S3中,如果数据不进行合并存储,则所述数据元组的个数取决于主变量的维度范围,每个数据元组包含输出变量和条件变量在当前主变量索引处的值。
优选地,所述海量数据包括多个所述数据文件。
(三)有益效果
本发明设计了一种基于MapReduce的、对于以数组形式存储的海量数据的分布式处理方法,使得用户可以使用SQL命令对以数组形式存储的海量数据进行分布式处理,该方法具有使用简单、运行高效,可容错的特点。
附图说明
图1为本发明实施例的方法流程图;
图2为多维数组到数据库表的行和列的相互映射例示图;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于清华大学,未经清华大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110424530.5/2.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置