读取和写入用于HADOOP计算的数据的方法和系统技术方案

技术编号:10431123 阅读:140 留言:0更新日期:2014-09-17 10:19
提供一种读取和写入用于HADOOP计算的数据的方法和系统。一种从非HADOOP分布式文件系统(HDFS)读取用于HADOOP计算的输入数据的方法,其特征在于,所述方法包括:定义用于从所述非HDFS读取数据的数据读取类,所述数据读取类继承RecordReader类;实现在HADOOP分布式计算模型中的InputFormat类中的getRecordReader方法和getSplits方法。其中,在实现的getRecordReader方法中,创建定义的数据读取类的实例或对象并返回所述实例或对象,并且在实现的getSplits方法中,将从调用的getRecordReader方法返回的RecordReader实例或对象确认为定义的数据读取类的实例或对象。本发明专利技术剥离了HADOOP对HDFS的强烈依赖,减少了数据的读取次数、复制次数并且节省了存储空间和处理时间。

【技术实现步骤摘要】
读取和写入用于HADOOP计算的数据的方法和系统
本专利技术涉及一种用于分布式计算的技术,尤其涉及一种处理用于分布式计算的数据的方法和系统。
技术介绍
分布式计算平台是基于分布式存储平台之上存在的,用于处理分布式存储平台中的数据。近年来较盛行的MapReduce计算模型能够利用分布式的计算能力处理大数据,这一便利性也激发了数据的计算需求。 然而,MapReduce计算模型也存在例如分布式的计算平台和存储平台强绑定的制约性。以作为一种MapReduce计算模型的具体实现的HADOOP为例,HADOOP计算平台要求其所计算的数据必须存储于与之强绑定的存储平台(即HDFS)上。这就给HADOOP的具体应用带来了不便:有大量的数据存储在hdfs之外的已有存储系统之上,这些数据有计算的需求,却缺乏计算的资源。 在这种情况下,目前通常的做法是,从一个存储系统上将数据传输到HDFS上,然后在HDFS上触发计算,计算完成后再将计算结果传输会原有的存储系统上。这就带来了巨大的消耗,浪费了大量的存储空间(例如需要存储2份以上的数据)、传输带宽(大量的数据传输占用带宽)和处理时间(因为在处理中存在很多单点,造成整体耗时较大)。
技术实现思路
本专利技术的实施例提供一种读取和写入用于HADOOP计算的数据的方法和系统,在HADOOP计算模型的应用中提供与非HDFS存储系统的存取接口,在分布式计算中可直接存取非HDFS存储系统中的数据,剥离HADOOP对HDFS的强烈依赖,从而节省存储空间和处理时间。 为达到上述目的,本专利技术的实施例采用如下技术方案: 一种从非HADOOP分布式文件系统(HDFS)读取用于HADOOP计算的输入数据的方法,其特征在于,所述方法包括:定义用于从所述非HDFS读取数据的数据读取类,所述数据读取类继承RecordReader类;实现在HADOOP分布式计算模型中MapReduce框架的InputFormat类中的getRecordReader方法和getSplits方法。其中,在实现的getRecordReader方法中,创建定义的数据读取类的实例或对象并返回所述实例或对象,并且在实现的getSplits方法中,将从调用的getRecordReader方法返回的RecordReader实例或对象确认为定义的数据读取类的实例或对象。 一种将HADOOP计算的输出数据写入非HDFS的方法,其特征在于,所述方法包括:定义用于将所述输出数据写入所述非HDFS的数据写入类,所述数据写入类继承RecordWriter类;实现在HADOOP分布式计算模型中OutputFormat类中的getRecordWriter方法。其中,在实现的getRecordWriter方法中,仓Ij建定义的数据写入类的实例或对象并返回所述实例或对象。 一种从非HDFS读取用于HADOOP计算的输入数据的系统,其特征在于,所述系统包括:读取类定义模块,用于定义用于从所述非HDFS读取数据的数据读取类,所述数据读取类继承RecordReader类;读取方法实现模块,用于实现在HADOOP分布式计算模型中的InputFormat类中的getRecordReader方法和getSplits方法。其中,在实现的getRecordReader方法中,读取方法实现模块创建读取类定义模块定义的数据读取类的实例或对象并返回所述实例或对象,并且在实现的getSplits方法中,读取方法实现模块将从调用的getRecordReader方法返回的RecordReader实例或对象确认为定义的数据读取类的实例或对象。 一种将HADOOP计算的输出数据写入非HDFS的系统,其特征在于,所述系统包括:写入类定义模块,用于定义用于将所述输出数据写入所述非HDFS的数据写入类,所述数据写入类继承RecordWriter类;写入方法实现模块,用于实现在HADOOP分布式计算模型中的OutputFormat类中的getRecordWriter方法。其中,在实现的getRecordWriter方法中,写入方法实现模块创建定义的数据写入类的实例或对象并返回所述实例或对象。 本专利技术的从非HDFS读取用于HAD00P计算的输入数据的方法、将HAD00P计算的输出数据写入非HDFS的方法以及使用所述方法的系统提供HAD00P与非HDFS存储系统的软件接口,当用户程序使用HAD00P执行分布式计算时,定制实现的InputFormat和/或OutputFormat类的方法被调用,返回定制的数据读取类和/或数据写入类的对象或实例,从而HAD00P可通过所述数据读取类和/或数据写入类的对象或实例执行非HDFS上的数据读取和/或写入。这样,剥离了 HAD00P对HDFS的强烈依赖,减少了数据的读取次数、复制次数并且节省了存储空间和处理时间。 【附图说明】 图1为现有技术与根据本专利技术的方法处理非HDFS存储系统上的数据的对比示意图; 图2为根据本专利技术的示例性实施例从非HDFS读取用于HAD00P计算的输入数据的方法的流程图; 图3为根据本专利技术的示例性实施例将HAD00P计算的输出数据写入非HDFS的方法的流程图; 图4为根据本专利技术的示例性实施例从非HDFS读取用于HAD00P计算的输入数据的系统的逻辑框图; 图5为根据本专利技术的示例性实施例将HAD00P计算的输出数据写入非HDFS的系统的逻辑框图。 【具体实施方式】 下面结合附图对本专利技术实施例读取和写入用于HAD00P计算的数据的方法和系统进行详细描述。 图1为现有技术与根据本专利技术的方法处理非HDFS存储系统上的数据的对比示意图。在图1中,以网络文件系统(NFS)作为非HDFS的示例,但是本专利技术的普通技术人员通过以下参照图1?图5对本专利技术的实施例的描述可以理解,本专利技术的总体构思适用于任何HDFS以外的数据存储系统。 图1上端示出根据现有技术用于处理非HDFS存储系统上的数据的数据流向。如图所示,当利用HADOOP计算模型需要处理存储在非HDFS (如NFS)上的数据时,需要操作的客户端从NFS读取所述NFS上的数据,然后再将所述数据复制到HDFS上,这期间所述数据经过读取、复制两次处理,并且由于客户端需要通过其上的网卡从NFS执行数据读取,其成为单机节点的瓶颈。此后,HADOOP对复制到HDFS上的数据执行分布式计算。在完成计算后,操作的客户端还需将结果数据传输到NFS上,其间所述数据同样经过复制、写入两次处理,客户端同样成为单机节点的瓶颈。因此,在现有技术的处理方案中,对非HDFS存储系统上的数据的处理需要经过六次处理,并且其中有四次处理存在单机瓶颈。 图1下端示出根据本专利技术的方法处理非HDFS存储系统上的数据的数据流向。在HADOOP分布式计算模型的MapReduce框架中,通过InputFormat类从HDFS上读取数据并输入到用户程序中,另一方面,通过OutputFormat类将用户程序的输出数据写入到HDFS。通过定制InputFormat类和OutputFormat类的方法,使得用户程序可直接从NFS读取计算所需的数据进行处理,并且可将计算所得的输出数据直接写本文档来自技高网...
读取和写入用于HADOOP计算的数据的方法和系统

【技术保护点】
一种从非HADOOP分布式文件系统(HDFS)读取用于HADOOP计算的输入数据的方法,其特征在于,所述方法包括:定义用于从所述非HDFS读取数据的数据读取类,所述数据读取类继承RecordReader类;实现在HADOOP分布式计算模型中的InputFormat类中的getRecordReader方法和getSplits方法,其中,在实现的getRecordReader方法中,创建定义的数据读取类的实例或对象并返回所述实例或对象,并且在实现的getSplits方法中,将从调用的getRecordReader方法返回的RecordReader实例或对象确认为定义的数据读取类的实例或对象。

【技术特征摘要】
1.一种从非HADOOP分布式文件系统(HDFS)读取用于HADOOP计算的输入数据的方法,其特征在于,所述方法包括: 定义用于从所述非HDFS读取数据的数据读取类,所述数据读取类继承RecordReader类; 实现在HADOOP分布式计算模型中的InputFormat类中的getRecordReader方法和getSplits 方法, 其中,在实现的getRecordReader方法中,创建定义的数据读取类的实例或对象并返回所述实例或对象,并且在实现的getSpli ts方法中,将从调用的getRecordReader方法返回的RecordReader实例或对象确认为定义的数据读取类的实例或对象。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:配置HADOOP应用从所述非HDFS上指定的位置读取所述输入数据。3.根据权利要求2所述的方法,其特征在于,所述非HDFS为网络文件系统(NFS)。4.一种将HADOOP计算的输出数据写入非HDFS的方法,其特征在于,所述方法包括: 定义用于将所述输出数据写入所述非HDFS的数据写入类,所述数据写入类继承Recordffriter 类; 实现在HADOOP分布式计算模型中的OutputFormat类中的getRecordWriter方法,其中,在实现的getRecordWriter方法中,仓ll建定义的数据写入类的实例或对象并返回所述实例或对象。5.根据权利要求4所述的方法,其特征在于,所述方法还包括:配置HAD00P应用将所述输出输入写入所述非HDFS上指定的位置。6.根据权利要求5所述的方法,其特征在于,所述非HDFS为NFS。7.一种从非HDFS读取用于HAD00P计算的输入数据的系统,其特征在于,...

【专利技术属性】
技术研发人员:杨斐
申请(专利权)人:百度在线网络技术北京有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1