CN104731569B - 一种数据处理方法及相关设备 - Google Patents
一种数据处理方法及相关设备 Download PDFInfo
- Publication number
- CN104731569B CN104731569B CN201310719857.4A CN201310719857A CN104731569B CN 104731569 B CN104731569 B CN 104731569B CN 201310719857 A CN201310719857 A CN 201310719857A CN 104731569 B CN104731569 B CN 104731569B
- Authority
- CN
- China
- Prior art keywords
- data
- buffering area
- block
- acquisition system
- gpu
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/541—Interprogram communication via adapters, e.g. between incompatible applications
Abstract
本发明实施例公开了一种数据处理方法及相关设备,实现Hadoop从节点设备中对数据自动转换数据格式和自动拼接,简化程序员的编程工作,有利于后续优化MapReduce架构。该方法主要包括:数据预处理器从所述CPU的第一缓冲区读取元数据;所述数据预处理器根据所述元数据所指示的存储地址从所述第一缓冲区读取所述数据集合的数据;所述数据预处理器根据预设解析函数,将所述数据集合的数据转换成所述预设解析函数所指示的数据格式,并将转换后的数据集合生成数据块后存储在所述CPU的第二缓冲区,以使得所述数据拼接器从所述第二缓冲区读取所述数据块拼接到所述GPU。
Description
技术领域
本发明涉及信息处理技术领域,具体涉及一种数据处理方法及相关设备。
背景技术
大数据与云计算一起,为信息技术(IT,Information Technology)带来一场新革命,云计算具备强大的大数据计算能力,计算速度非常快,可是大数据的传送却成为其一大难题。
MapReduce(本领域中暂时没有统一的中文译文)是谷歌搜索引擎Google提供的一个著名的云计算架构,用于大规模数据集(大于1TB)上的并行运算,Hadoop(本领域中暂时没有统一的中文译文)是MapReduce架构的具体实现,在Hadoop集群中分为主节点设备和从节点设备。其中,在主节点设备中利用MapReduce所提供的Map函数把数据集按照大小分割成M片数据分片,将数据分片分配到多个从节点设备上做并行处理。具体地,每个从节点设备从数据分片中获取键值对的值,将值拼接存储在从节点设备的处理器(CentralProcessing Unit,简称CPU)分配的缓冲区中,之后,从缓冲区读取键值对的值进行解析,例如转换键值对的值的数据格式等,再将解析后的值通过应用程序编程接口(API,Application Programming Interface)拼接到从节点设备的图形处理器(GPU,GraphicsProcessing Unit)分配存储数据的缓冲区中,由GPU进行计算处理。
本发明技术人员在实现上述方案时发现,由于MapReduce架构中没有提供解析函数,在对键值对的值进行解析时,需要依靠于程序员所编写的相应程序;同时,由于CPU分配存储键值对的值的缓冲区与GPU分配用来存储数据的缓冲区大小可能不一致,而MapReduce架构中没有提供相应的判断方法,同样依靠于程序员所编写的相应判断函数,对CPU和GPU的缓冲区是否一致进行判断,降低从节点设备的执行效率。
发明内容
针对上述缺陷,本发明实施例提供了一种的数据处理方法及相关设备,应用于MapReduce架构下的Hadoop集群,可以提高Hadoop集群中从节点设备的工作效率,简化程序员的编程工作,有利于后续优化MapReduce架构。
第一方面,本发明提供一种数据处理方法,应用于MapReduce架构下的Hadoop集群,所述Hadoop集群包括主节点设备和从节点设备,所述从节点设备包括处理器CPU和图形处理器GPU,所述从节点设备从所述主节点设备获取数据分片,所述CPU中设置有数据预处理器和数据拼接器,所述方法包括:
所述数据预处理器从所述CPU的第一缓冲区读取元数据;其中,当从数据分片获取的数据集合存储进所述第一缓冲区时,在所述第一缓冲区头部为所述数据集合添加元数据,所述元数据中包括所述数据集合的数据在所述第一缓冲区的存储地址;
所述数据预处理器根据所述元数据所指示的存储地址从所述第一缓冲区读取所述数据集合的数据;
所述数据预处理器根据预设解析函数,将所述数据集合的数据转换成所述预设解析函数所指示的数据格式,并将转换后的数据集合生成数据块后存储在所述CPU的第二缓冲区,以使得所述数据拼接器从所述第二缓冲区读取所述数据块拼接到所述GPU。
结合第一方面,在第一种可能的实现方式中,所述元数据具体包括地址索引数组,所述地址索引数组包含有与所述数据集合的数据一一对应的数据元素,所述数据元素用于指示所述数据集合的数据在所述第一缓冲区的存储地址,进而所述数据预处理器根据所述元数据所指示的存储地址从所述第一缓冲区读取数据集合中的数据包括:所述数据预处理器从所述地址索引数组的数据元素指示在第一缓冲区的存储地址开始读取,直到下一个数据元素指示的存储地址或所述第一缓冲区末端结束读取数据。
结合第一方面,在第二种可能的实现方式中,所述将所述数据集合的数据转换成所述预设解析函数所指示的数据格式包括:所述数据预处理器根据所述预设的解析函数将所述数据集合的数据转换成所述解析函数指定的满足逻辑运算的数据格式。
结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,当所述第一缓冲区对所述数据集合的数据的存储格式与所述GPU中对数据的存储格式不一致时,所述将转换后的数据集合生成数据块后包括:所述数据预处理器将所述数据块中的数据转换成所述GPU中的存储格式。
结合第一方面,或第一方面的第一种可能的实现方式,或第一方面的第二种可能的实现方式,或第一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述数据集合具体由所述数据分片中的多个键值对的值拼接组成。
结合第一方面,或第一方面的第一种可能的实现方式,或第一方面的第二种可能的实现方式,或第一方面的第三种可能的实现方式,在第五种可能的实现方式中,所述第一缓冲区和所述第二缓冲区由所述CPU自动分配和回收,所述第一缓冲区的生存周期为一个数据分片的处理时间,所述第二缓冲区的生存周期为一个数据集合的处理时间。
本发明第二方面提供一种数据处理方法,应用于MapReduce架构下的Hadoop集群,所述Hadoop集群包括主节点设备和从节点设备,所述从节点设备包括处理器CPU和图形处理器GPU,所述从节点设备从所述主节点设备获取数据分片,所述CPU中设置有数据预处理器和数据拼接器,所述方法包括:
所述数据拼接器从所述CPU的第二缓冲区读取所述数据预处理器生成的数据块;
所述数据拼接器将所述数据块拼接到所述GPU中被分配存储数据块的工作缓冲区。
结合第二方面,在第一种可能的实现方式中,当所述数据拼接器将所述数据块拼接到所述GPU中被分配存储数据块的工作缓冲区失败时,则暂停拼接所述数据块,并触发所述GPU处理所述工作缓冲区存储的数据块。
结合第二方面,或第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述数据拼接器从游标参数指示的起始地址开始拼接所述数据块,所述游标参数用于指示所述GPU中被分配存储数据块的工作缓冲区中可用于存储数据块的起始地址。
结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,当拼接所述数据块成功后,所述方法还包括:所述数据拼接器通知所述GPU所述数据块的大小;所述数据拼接器更新所述游标参数。
本发明第三方面提供一种数据预处理器,包括:
第一读取单元,用于从所述CPU的第一缓冲区读取元数据;其中,当从数据分片获取的数据集合存储进所述第一缓冲区时,在所述第一缓冲区头部为所述数据集合添加元数据,所述元数据中包括所述数据集合的数据在所述第一缓冲区的存储地址;
第二读取单元,用于根据所述元数据所指示的存储地址从所述第一缓冲区读取所述数据集合的数据;
转换单元,用于根据预设解析函数,将所述数据集合的数据转换成所述预设解析函数所指示的数据格式,并将转换后的数据集合生成数据块;
存储单元,用于将所述数据块存储在所述CPU的第二缓冲区,以使得所述数据拼接器从所述第二缓冲区读取所述数据块拼接到所述GPU。
结合第三方面,在第一种可能的实现方式中,所述元数据具体包括地址索引数组,所述地址索引数组包含有与所述数据集合的数据一一对应的数据元素,所述数据元素用于指示所述数据集合的数据在所述第一缓冲区的存储地址,进而所述第二读取单元包括:数据读取单元,用于从所述地址索引数组的数据元素指示在第一缓冲区的存储地址开始读取,直到下一个数据元素指示的存储地址或所述第一缓冲区末端结束读取数据。
结合第三方面,或第三方面的第一种可能的实现方式,在第二种可能的实现方式中,所述解析单元包括:数据格式转换单元,用于通过预设的解析函数将所述数据集合的数据转换成所述解析函数指定的满足逻辑运算的数据格式生成单元,用于将转换的数据集合生成数据块。
结合第三方面,在第三种可能的实现方式中,所述解析单元还包括:格式转换单元,用于当所述第一缓冲区对所述数据集合的数据的存储格式与所述GPU中对数据的存储格式不一致时,将所述数据块中的数据转换成所述GPU中的存储格式。
本发明第四方面提供一种数据拼接器,包括:
第三读取单元,用于从所述CPU的第二缓冲区读取所述数据预处理器生成的数据块;
拼接处理单元,用于将所述数据块拼接到所述GPU中被分配存储数据块的工作缓冲区。
结合第四方面,在第一种可能的实现方式中,所述数据拼接器还包括:触发处理单元,用于当所述数据拼接器将所述数据块拼接到所述GPU中被分配存储数据块的工作缓冲区失败时,则暂停拼接所述数据块,并触发所述GPU处理所述工作缓冲区存储的数据块。
结合第四方面,或第四方面的第一种可能的实现方式,在第二种可能的实现方式中,所述拼接处理单元具体用于从游标参数指示的起始地址开始拼接所述数据块,所述游标参数用于指示所述GPU中被分配存储数据块的工作缓冲区中可用于存储数据块的起始地址。
结合第四方面的第二种可能的实现方式,在第三种可能的实现方式中,所述数据拼接器还包括:通知单元,用于通知所述GPU所述数据块的大小;更新单元,用于更新所述游标参数。
本发明第五方面提供一种处理器,可包括上述第三方面所述的数据预处理器和上述第四方面所述的数据拼接器。
结合第五方面,在第一种可能的实现方式中,自动分配和回收所述第一缓冲区和所述第二缓冲区,所述第一缓冲区的生存周期为一个数据分片的处理时间,所述第二缓冲区的生存周期为一个数据集合的处理时间。
本发明第六方面提供一种从节点设备,可包括上述第五方面所述的处理器CPU,以及图形处理器GPU;其中,所述CPU中的数据预处理器用于将从数据分片获取的数据集合转换数据格式,并将转换数据格式后的数据集合生成数据块,通过所述CPU中的数据拼接器将所述数据块拼接到所述GPU中分配存储数据块的工作缓冲区中;所述GPU用于对所述数据块进行处理得到处理结果,之后将所述处理结果返回给所述CPU。
从以上技术方案可以看出,本发明实施例具有以下优点:
一方面,本发明实施例通过在从节点设备中设置数据预处理器和数据拼接器,由数据预处理器从CPU的第一缓冲区读取元数据,由于元数据是在数据集合存储进第一缓冲区时为该数据集合生成,用于表示该数据集合的数据在第一缓冲区的存储地址,之后数据预处理器能够根据元数据从第一缓冲区读取数据集合的数据,再根据预设的解析函数对数据集合的数据进行格式转换,之后将转换后的数据集合生成数据块,把数据块存储到CPU的第二缓冲区中,以便由数据拼接器完成与GPU的数据块拼接。与现有技术相比,本发明实施例中通过在将数据集合存储进第一缓冲区时,为数据集合的数据添加包括存储地址的元数据,数据预处理器可以自动从第一缓冲区读取数据集合的数据,不需要依赖于程序员编写相应的程序。再者,数据预处理器可以根据预设解析函数对数据集合的数据进行解析,提高CPU中的处理效率,还能有利于后续优化MapReduce架构;
另一方面,通过数据拼接器从第二缓冲区读取数据块拼接到GPU中被分配存储数据块的工作缓冲区中,在拼接失败,说明GPU中被分配存储数据块的工作缓冲区的剩余内存不够完成数据块的拼接,则暂时停止拼接该数据块,转而触发GPU对数据块进行数据运算。而数据块还将暂时保存在第二缓冲区中,下次再进行拼接。与现有技术相比,不需要依赖于程序员编写的程序,可以由数据拼接器自动完成数据块拼接,有效防止数据块丢失,提高数据块拼接效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的数据处理方法流程示意图;
图2为本发明另一实施例提供的数据处理方法流程示意图;
图3为本发明一实施例提供的数据处理方法流程示意图;
图4为本发明另一实施例提供的数据处理方法流程示意图;
图5-a为本发明一实施例提供的数据预处理器的结构示意图;
图5-b为本发明另一实施例提供的数据预处理器的结构示意图;
图5-c为本发明另一实施例提供的数据预处理器的结构示意图;
图5-d为本发明另一实施例提供的数据预处理器的结构示意图;
图6-a为本发明一实施例提供的数据拼接器的结构示意图;
图6-b为本发明另一实施例提供的数据拼接器的结构示意图;
图6-c为本发明另一实施例提供的数据拼接器的结构示意图;
图7为本发明一实施例提供的处理器的结构示意图;
图8-a为本发明一实施例提供的从节点设备的结构示意图;
图8-b为本发明一实施例提供的从节点设备中CPU与GPU之间的交互示意图;
图9为本发明一实施例提供的数据处理设备的结构示意图。
具体实施方式
下面将结合本发明实施例的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种数据处理方法及相关设备,应用于MapReduce架构下的Hadoop集群,实现Hadoop从节点设备数据格式自动转换和数据自动拼接,简化程序员的编程工作,有利于后续优化MapReduce架构。
如图1所示,本发明一方面提供一种数据处理方法,包括:
S110、数据预处理器从CPU的第一缓冲区读取元数据;其中,当从数据分片获取的数据集合存储进所述第一缓冲区时,在所述第一缓冲区头部为所述数据集合添加元数据,所述元数据中包括所述数据集合的数据在所述第一缓冲区的存储地址;
本发明实施例应用于MapReduce架构下的Hadoop集群,该Hadoop集群中包括主节点设备和从节点设备,从节点设备包括处理器CPU和图形处理器GPU,该从节点设备从主节点设备获取数据分片,而在CPU中设置有数据预处理器和数据拼接器。
在CPU中分配第一缓冲区,用于存储从数据分片中获取的数据集合,而在数据集合存储进第一缓冲区时,则在第一缓冲区头部为数据集合添加元数据,元数据主要包括数据集合中的数据在该第一缓冲区中的存储地址。
S120、所述数据预处理器根据所述元数据所指示的存储地址从所述第一缓冲区读取所述数据集合的数据;
由于元数据包括有数据集合在第一缓冲区的存储地址,数据预处理器可以根据元数据的指示从第一缓冲区中直接读取数据集合的数据,而无需再依赖程序员编写额外的程序来读取数据。
S130、所述数据预处理器根据预设解析函数,将所述数据集合的数据转换成所述预设解析函数所指示的数据格式,并将转换后的数据集合生成数据块后存储在所述CPU的第二缓冲区,以使得所述数据拼接器从所述第二缓冲区读取所述数据块拼接到GPU。
另外,在MapReduce架构中预设有解析函数,数据预处理器可以根据预设解析函数对第一缓冲区中的数据集合的数据进行解析,转换成预设解析函数对应的数据格式,然后将转换后的数据集合生成数据块。同时,CPU中还分配了第二缓冲区,用来存储数据块。数据拼接器则可以从第二缓冲区中读取数据块拼接到GPU中。
本发明实施例中,由于在数据集合存储进CPU的第一缓冲区时,为数据集合添加了元数据,该元数据包括数据集合的数据在第一缓冲区的存储地址,因此,数据预处理器先从第一缓冲区中读取元数据后,根据元数据所指示的存储地址从第一缓冲区读取数据集合的数据,再利用预设解析函数转换数据的数据格式,将都转换格式后的数据集合生成数据块,存储到CPU中的第二缓冲区,进而实现由数据预处理器自动完成读取第一缓冲区的数据,和对数据进行解析的操作,无需再额外依赖于程序员的编程,为程序员提供更加完善的MapReduce架构,也有利于后续对MapReduce架构优化。
可以理解的是,在MapReduce架构中,指定一个映射Map函数,用来把输入的键值对映射成新的键值对;再指定并发的化简Reduce函数,用来保证所有映射的键值对中的每一个共享相同的键组。而在Map函数把输入的键值对映射成新的键值对后,由Hadoop集群中的主节点设备,按照数据大小将所有新键值对划分成不同的数据分片,根据数据分片安排给每个从节点设备进行相应的运算处理。
在从节点设备所在的CPU中,调用RecordReader类获取数据分片中的键值对,并将键值对中的值提取出来拼接成数据集合。CPU为数据集合在其内存中分配DirectBuffer,数据集合以该DirectBuffer的格式要求存储进DirectBuffer中,其中,在数据集合存储进DirectBuffer时,会在DirectBuffer的头部为数据集合添加元数据。同时,在MapReduce架构中,预设有对数据集合的数据进行解析的预设解析函数,预设解析函数将数据具体转换成满足逻辑运算的指定数据格式。而在CPU中设置有数据预处理器,由数据预处理器完成根据元数据从DirectBuffer读取数据,和通过预设解析函数自动实现数据格式的转换。具体地,下面将对图1提供的实施例作详细地说明,请参阅图2,一种数据处理方法,可包括:
S210、数据预处理器从DirectBuffer读取元数据,其中,所述元数据具体包括地址索引数组,所述地址索引数组包含有与所述数据集合的数据一一对应的数据元素,所述数据元素用于指示所述数据集合的数据在所述DirectBuffer中的存储地址;
具体地,在存储数据集合进DirectBuffer时,在DirectBuffer的头部添加元数据,用来指示所述数据集合中的数据在所述DirectBuffer中的存储地址。可以理解的是,该元数据可以包括一个地址索引数组,在数据集合存储进DirectBuffer时,根据数据集合中的数据在DirectBuffer的位置,将数据的存储地址添加进地址索引数组中。该地址索引数组具有与数据集合中数据一一对应的数据元素,数据元素指示数据集合的数据在DirectBuffer中的存储地址。通常来讲,存储进DirectBuffer的数据集合中的数据都是同一种数据格式,可以是文本格式或者二进制等不可进行逻辑运算的格式。
S220、所述数据预处理器根据所述元数据中地址索引数组的数据元素,从DirectBuffer中读取数据集合中的数据;
具体地,该数据预处理器根据地址索引数组中数据元素所指示的存储地址,在DirectBuffer中从该存储地址开始读取相应的数据,直到下一个数据元素所指示的存储地址或者是读取到DirectBuffer末端时结束,读取到数据集合的一个数据,然后继续读取下一个数据,直到将DirectBuffer中数据集合的数据读取完为止。
S230、所述数据预处理器根据预设解析函数,将所述数据集合的数据转换成所述预设解析函数指定的满足逻辑运算的数据格式;
存储进DirectBuffer的数据集合中的数据一般是不可进行逻辑运算的数据格式,而在传送给GPU进行逻辑运算之前,需要将其转换成可进行逻辑运算的格式。因此,在MapReduce架构中预设解析函数,数据预处理器根据预设解析函数自动实现数据格式转换,转换成解析函数所指定的满足逻辑运算的数据格式。
可选地,预设解析函数所指定的数据格式,可以是GPU逻辑运算时所要求的数据格式。具体地,该预设解析函数指定的可进行逻辑运算的数据格式,可以是整形数据、浮点型数据、字符串数据等。
S240、所述预处理器将转换数据格式后的数据集合生成数据块;
在数据预处理器根据预设解析函数,自动将每个数据都转换成预设解析函数指定的可进行逻辑运算的数据格式后,为了方便后续CPU与GPU之间数据的拼接,将转换数据格式后的数据集合生成数据块。
S250、所述预处理器将所述数据块存储到LaunchingBuffer中,以使得数据拼接器从所述LaunchingBuffer中读取所述数据块拼接到GPU。
具体地,CPU还在内存中分配LaunchingBuffer来暂时存储数据格式转换后的数据块,其中,数据预处理器将数据块存储到LaunchingBuffer中,之后由数据拼接器完成从该LaunchingBuffer读取数据块拼接到GPU。
可以理解的是,CPU的DirectBuffer中存储的数据和GPU要处理的数据在存储格式上可能不一致,即对大小尾数问题的处理上不一致,其中,小尾数存储格式指的是数据的高位存储在高地址中,数据的低位存储在低地址中;大尾数存储格式指的是数据的高位存储在低地址中,数据的地位存储在高地址中。因此,数据预处理器还需要解决数据块的大小尾数问题。
在CPU分配的DirectBuffer中自带有成员变量,该成员变量指示数据在该DirectBuffer中是以大尾格式还是小尾格式存储,同样也有指示是否在存储进LaunchingBuffer时需要转换存储格式,并给出需要转换成大尾格式还是小尾格式的提示。例如,数据集合中的数据以大尾格式存储在DirectBuffer中,而GPU对于数据的存储,却是以小尾格式存储,则在将数据块存储到LaunchingBuffer时,将数据块的数据以小尾数存储格式存储在LaunchingBuffer中。之后,数据拼接器则可以直接从LaunchingBuffer中读取该数据块拼接到GPU,保证CPU的LaunchingBuffer和GPU对数据的存储格式一致,保证GPU能够正确读取数据块进行运算处理,避免将数据高位读成低位,或将数据地位读成高位导致运算错误。
在本发明实施例中,通过数据预处理器先从DirectBuffer中读取到地址索引数组,根据地址索引数组中的数据元素从DirectBuffer中读取到对应的数据集合中的数据,之后,根据预设解析函数实现对数据集合中的数据进行数据格式转换,使得数据格式转换后的数据能够满足逻辑运算。将数据集合生成数据块存储到LaunchingBuffer中,由数据拼接器从LaunchingBuffer中读取数据块传送给GPU。本发明实施例由CPU中的数据预处理器独自完成,通过预设解析函数实现对数据自动解析,为GPU对数据块的运算提供方便,利用数据预处理器简化从节点设备的编程工作,有利于以后优化。
CPU自动分配和回收WorkingBuffer和LaunchingBuffer,其中,一个WorkingBuffer的生存周期为一个数据分片的处理时间,一个LaunchingBuffer的生存周期是处理一个数据集合的时间。另外,CPU上还分配有ResultBuffer,用来存储GPU运算后返回的运算结果,之后该运算结果作为MapReduce中Reduce任务的输入。
如图3所示,本发明实施例另一方面提供一种数据处理方法,包括:
S310、数据拼接器从CPU的第二缓冲区读取数据预处理器生成的数据块;
本发明实施例应用于MapReduce架构下的Hadoop集群,该Hadoop集群中包括主节点设备和从节点设备,从节点设备包括处理器CPU和图形处理器GPU,该从节点设备从主节点设备获取数据分片,而在CPU中设置有数据预处理器和数据拼接器。
其中,数据预处理器用于完成从CPU第一缓冲区读取数据集合的数据,将数据转换数据格式后,将这个数据集合生成数据块存储到第二缓冲区。而数据拼接器主要完成将数据块从CPU拼接到GPU。
S320、所述数据拼接器将所述数据块拼接到GPU中被分配存储数据块的工作缓冲区。
本发明实施例中数据拼接器从CPU第二缓冲区读取数据块,将数据块从CPU的第二缓冲区拼接到GPU的工作缓冲区。本发明实施例中由数据拼接器完成数据的拼接,不再依赖于程序员的编程,从而简化了程序员的编程工作,还能有利于整个MapReduce架构后续的优化工作。
下面将对图3所提供的实施例作详细介绍,如图4所示,一种数据处理方法,可包括:
S410、所述数据拼接器从LaunchingBuffer读取数据块;
CPU在内存中还分配有LaunchingBuffer,主要用来存储需要拼接到GPU的数据块。
S420、所述数据拼接器从游标参数指示的起始地址开始拼接所述数据块,所述游标参数用于指示所述GPU中被分配存储数据块的WorkingBuffer中可用于存储数据块的起始地址;
GPU内存中分配有WorkingBuffer,主要用来存储从CPU的LaunchingBuffer拼接过来的数据;该WorkingBuffer的内存大小由GPU自身决定,而在CPU中DirectBuffer的内存大小由java的运行环境所决定。通常来说,GPU上的WorkingBuffer的内存大小要远远大于CPU中由java支持的DirectBuffer的内存,因此,WorkingBuffer可能存储至少一个从DirectBuffer得来的数据块,而在存储到某一个数据块时,WorkingBuffer的剩余内存可能无法再继续存储数据块,将由数据拼接器对该数据块作出正确处理。
具体地,数据拼接器管理着一个游标参数,游标参数指示WorkingBuffer可存储数据的起始地址,在每一次将数据块拼接到WorkingBuffer后,就相应更新游标参数,以便下次能够准确知道WorkingBuffer可以存储数据的起始地址。在需要将数据块传送到WorkingBuffer时,从游标参数指示的起始地址开始,将数据块拼接到WorkingBuffer。
S430、当所述数据拼接器将所述数据块拼接到WorkingBuffer失败时,则暂停拼接所述数据块,并触发所述GPU处理WorkingBuffer存储的数据块。
其中,数据拼接器从LaunchingBuffer读取到的数据块中的数据是可以直接进行逻辑运算的,且满足GPU对数据的存储格式要求。调用应用程序接口(API,ApplicationProgramming Interface)将所述数据块中的数据拼接到WorkingBuffer。若WorkingBuffer的剩余内存能够拼接完从CPU的LaunchingBuffer读取的数据块,则将整个数据块都拼接到WorkingBuffer中;如果WorkingBuffer的剩余内存不能拼接完从CPU的LaunchingBuffer读取的数据块,那么将暂停拼接该数据块,数据块仍然保存在LaunchingBuffer中,另外触发GPU开始对WorkingBuffer中的所有数据块进行运算处理。
本发明实施例中,CPU中的数据拼接器,用于解决CPU中DirectBuffer和GPU中的WorkingBuffer剩余内存大小不一致时的数据块拼接问题。数据拼接器通过将数据块从LaunchingBuffer中直接拼接到WorkingBuffer中,如果WorkingBuffer剩余内存大小不能满足存储数据块的时候,暂时停止该次拼接操作,若再下次WorkingBuffer的剩余内存能够拼接完时,再次LaunchingBuffer中读取数据块拼接到WorkingBuffer中。由于在LaunchingBuffer的数据块已经符合GPU对数据处理时的需要,GPU接收到数据块之后则可以直接进行运算处理,有效提高GPU的工作效率。
可以理解的是,数据拼接器在传送数据块成功之后,还执行以下步骤:
B1、所述数据拼接器通知所述GPU所述数据块的大小;
B2、所述数据拼接器更新所述游标参数。
其中,数据拼接器在每一次将数据块成功拼接到GPU后,都将数据块大小通知到GPU,GPU能够直接使用,无需再计算数据块大小,能够减少GPU的工作量。
另外,与在上述CPU的DirectBuffer中通过地址索引数组来指示数据在DirectBuffer的存储地址相同,GPU也可以在WorkingBuffer头部为数据块添加一个查找索引数组,查找索引数组包含有与所述数据块的数据一一对应的数据元素,数据元素用来指示数据在WorkingBuffer的存储地址。在数据拼接器拼接过来一个数据块后,即在查找索引数组中添加对应该数据块的每一个数据的数据元素,以便后续GPU快速从WorkingBuffer中找到数据并读取数据进行运算。
上述该步骤B1和B2不分先后,在此不作限定。
由于在CPU中,接收到的每一个数据分片可能最后生成多个数据块,GPU中分配的WorkingBuffer以数据块为单位进行存储,其生存周期为处理完一个数据分片的时间。在数据拼接器将整个数据分片都传送成功之后,数据拼接器则返回传送成功的标志值,以便通知主节点设备分配下一个数据分片;在数据拼接器传送数据分片失败后,则返回传送失败的标志值,以便通知主节点设备暂停分配下一个数据分片。
另外,在GPU内存中同样分配ResultBuffer,该ResultBuffer用来保存运算后的结果,之后调用API接口,将该运算结果返回CPU并存储在CPU分配的ResultBuffer当中,作为MapReduce下的Reduce任务的输入。
CPU中用来存储数据集合的DirectBuffer、存储数据格式转换后的数据块的LaunchingBuffer和用来存储GPU返回的运算结果的ResultBuffer都是由CPU自动分配和回收,其中,LaunchingBuffer的生存周期是一个数据块的处理时间;GPU中用来存储接收的数据块的WorkingBuffer和存储运算结果的ResultBuffer都是由GPU自动分配和回收,其中,WorkingBuffer的生存周期是一个数据分片的处理时间;ResultBuffer的生存周期与WorkingBuffer的生存周期一样。CPU和GPU中buffer自动实现同步,例如CPU中ResultBuffer与GPU中WorkingBuffer、ResultBuffer实现分配和回收同步。
如图5-a所示,本发明实施例还提供一种数据预处理器500,可包括:
第一读取单元510,用于从所述CPU的第一缓冲区读取元数据;其中,当从数据分片获取的数据集合存储进所述第一缓冲区时,在所述第一缓冲区头部为所述数据集合添加元数据,所述元数据中包括所述数据集合的数据在所述第一缓冲区的存储地址;
第二读取单元520,用于根据预设解析函数,将所述数据集合的数据转换成所述预设解析函数所指示的数据格式,并将转换后的数据集合生成数据块;
转换单元530,用于对所述数据进行解析,并将解析后的数据集合生成数据块;
存储单元540,用于将所述数据块存储在所述CPU的第二缓冲区,以使得所述数据拼接器从所述第二缓冲区读取所述数据块拼接到所述GPU。
本发明实施例应用于MapReduce架构下的Hadoop集群,该数据预处理器500设置在Hadoop集群下的从节点设备的CPU中,其中,该CPU还设置有数据拼接器,且每个从节点设备还GPU,从节点设备从Hadoop集群的主节点设备获取数据分片,然后将数据分片中的键值对中的值拼接成数据集合存储进CPU内存中分配的第一缓冲区,由于第一缓冲区的内存可能无法将数据分片中所有键值对的值一次存储完,因此,数据分片中键值对的值可以分多次拼接成数据集合。
在数据集合存储进第一缓冲区时,在第一缓冲区的头部为数据集合添加元数据,该元数据主要包括数据集合的数据在第一缓冲区中的存储地址。之后,由第一读取单元510从第一缓冲区读取元数据,然后第二读取单元520根据元数据所指示的存储地址从第一缓冲区读取数据集合中的数据,再由转换单元530对数据进行数据格式转换,并将格式转换后的整个数据集合生成数据块,存储单元540将数据块存储到CPU的第二缓冲区,第二缓冲区主要是CPU在内存中分配用来存储数据块,以便数据拼接器能够从第二缓冲区读取数据块传送到GPU的工作缓冲区。本发明实施例中,由数据预处理器自动完成数据读取和对数据格式的转换,无需程序员再编写相应的程序,减少了程序员的编程工作,更加有利于后续优化M,apReduce架构,提高CPU的工作效率。
进一步地,元数据具体包括地址索引数组,所述地址索引数组包含有与所述数据集合的数据一一对应的数据元素,所述数据元素用于指示所述数据集合的数据在所述第一缓冲区的存储地址,进而如图5-b所示,上述第二读取单元520可包括:
数据读取单元5210,用于从所述地址索引数组的数据元素指示在第一缓冲区的存储地址开始读取,直到下一个数据元素指示的存储地址或所述第一缓冲区末端结束读取数据。
具体地,数据读取单元5210根据地址索引数组中数据元素所指示的存储地址,在第一缓冲区中从该存储地址开始读取相应的数据,直到下一个数据元素所指示的存储地址或者是读取到第一缓冲区末端时结束,读取到数据集合的一个数据,然后继续读取下一个数据,直到将第一缓冲区中数据集合的数据读取完为止。
如图5-c所示,上述解析单元530包括:
数据格式转换单元5310,用于通过预设的解析函数将所述数据集合的数据转换成所述解析函数指定的满足逻辑运算的数据格式;
生成单元5320,用于将转换的数据集合生成数据块。
在MapReduce架构中,预设解析函数所指定的数据格式,可以是GPU逻辑运算时所要求的数据格式。具体地,该预设解析函数指定的可进行逻辑运算的数据格式,可以是整形数据、浮点型数据、字符串数据等。
如图5-d所示,上述解析单元530还可以包括:
格式转换单元5330,用于当所述第一缓冲区对所述数据集合的数据的存储格式与所述GPU中对数据的存储格式不一致时,将所述数据块中的数据转换成所述GPU中的存储格式。
CPU的第一缓冲区和GPU对数据的存储格式上可能要求不一致,即在大小尾数问题的处理上不一致,其中,小尾数存储格式指的是数据的高位存储在高地址中,数据的低位存储在低地址中;大尾数存储格式指的是数据的高位存储在低地址中,数据的地位存储在高地址中。
在CPU分配的第一缓冲区中自带有成员变量,该成员变量指示数据在该第一缓冲区中是以大尾格式还是小尾格式存储,同样也有指示是否在存储进第二缓冲区时需要转换存储格式,并给出需要转换成大尾格式还是小尾格式的提示。例如,数据集合中的数据以大尾格式存储在第一缓冲区,而GPU对于数据的存储,却是以小尾格式存储,格式转换单元5330则将数据块转换成小尾格式,存储在第二缓冲区。之后,数据拼接器则可以直接从第二缓冲区中读取该数据块拼接到GPU,保证CPU的第二缓冲区和GPU对数据的存储格式一致,保证GPU能够正确读取数据块进行运算处理,避免将数据高位读成低位,或将数据地位读成高位导致运算错误。
如图6-a所示,本发明实施例还提供一种数据拼接器600,可包括:
第三读取单元610,用于从所述CPU的第二缓冲区读取所述数据预处理器生成的数据块;
拼接处理单元620,用于将所述数据块拼接到所述GPU中被分配存储数据块的工作缓冲区。
本发明实施例应用于MapReduce架构下的Hadoop集群,该数据拼接器600设置在Hadoop集群下的从节点设备的CPU中,其中,该CPU还设置有如图5-a所示的数据预处理器500,且每个从节点设备还包括GPU,从节点设备从Hadoop集群的主节点设备获取数据分片,然后将数据分片中的键值对中的值拼接成数据集合存储进CPU内存中分配的第一缓冲区,由于第一缓冲区的内存可能无法将数据分片中所有键值对的值一次存储完,因此,数据分片中键值对的值可以分多次拼接成数据集合。
数据预处理器500根据元数据从第一缓冲区读取数据,然后将数据格式进行转换,再将转换数据格式后的整个数据集合生成数据块,存储到CPU中的第二缓冲区中,之后,则由数据拼接器的第三读取单元610从CPU的第二缓冲区中读取数据块,由拼接处理单元620将读取的数据块拼接到GPU中被分配存储数据块的工作缓冲区中。
其中,在从节点设备的CPU中,由数据预处理器500完成数据格式转换,而由数据拼接器完成数据块拼接,不再依赖于程序员编写相应的程序,能够简化程序员的编程工作,而且通过数据预处理器500和数据拼接器自动操作,能够提高CPU的工作效率,也有利于后续对MapReduce的优化。
数据拼接器600管理着一个游标参数,游标参数指示GPU的工作缓冲区可存储数据的起始地址,在每一次将数据块拼接到GPU的工作缓冲区后,就相应更新游标参数,以便下次能够准确知道GPU的工作缓冲区可以存储数据的起始地址。在需要将数据块传送到GPU的工作缓冲区时,拼接处理单元620根据游标参数指示的起始地址,将数据块拼接到GPU的工作缓冲区。
因此,上述拼接处理单元620具体用于从游标参数指示的起始地址开始拼接所述数据块,所述游标参数用于指示所述GPU中被分配存储数据块的工作缓冲区中可用于存储数据块的起始地址。
如图6-b所示,上述数据拼接器还包括:
触发处理单元630,用于当所述数据拼接器将所述数据块拼接到所述GPU中被分配存储数据块的工作缓冲区失败时,则暂停拼接所述数据块,并触发所述GPU处理所述工作缓冲区存储的数据块。
数据拼接器600的第三读取单元610从第二缓冲区读取到的数据块中的数据是可以直接进行逻辑运算的,且满足GPU对数据的存储格式要求。调用API将所述数据块中的数据拼接到GPU的工作缓冲区。若GPU的工作缓冲区的剩余内存能够拼接完从CPU的第二缓冲区读取的数据块,则将整个数据块都拼接到GPU的工作缓冲区中;如果GPU的工作缓冲区的剩余内存不能拼接完从CPU的第二缓冲区读取的数据块,即拼接数据块失败时,那么将暂停拼接该数据块,数据块仍然保存在第二缓冲区中,另外触发处理单元630触发GPU开始对工作缓冲区中的所有数据块进行运算处理。
进一步地,如图6-c所示,上述数据拼接器600还可以包括:
通知单元640,用于通知所述GPU所述数据块的大小;
更新单元650,用于更新所述游标参数。
在每一次将数据块成功拼接到GPU后,通知单元640都将数据块大小通知到GPU,GPU能够直接使用,无需再计算数据块大小,能够减少GPU的工作量。另外,由更新单元650更加游标参数。
如图7所示,本发明实施例提供一种处理器700,包括如图5-a所示的数据预处理器500和如图6-a所示的数据拼接器600,具体可以参考上述对数据预处理器500和数据拼接器600的介绍,在此不作赘述。
其中,在CPU中自动分配和回收第一缓冲区和第二缓冲区,第一缓冲区的生存周期为一个数据分片的处理时间,第二缓冲区的生存周期为一个数据块的处理时间;同样,在GPU中也自动分配工作缓冲区,该工作缓冲区的生存时间为上一个数据分片的处理时间。
如图8-a所示,本发明实施例还提供一种从节点设备,可包括:
如上述图7所示的处理器CPU-700,以及图形处理器GPU-800;
其中,CPU-700如上述介绍,在此不再赘述。
具体地,所述CPU-700中的数据预处理器用于将从数据分片获取的数据集合转换数据格式,并将转换数据格式后的数据集合生成数据块,通过所述CPU-700中的数据拼接器将所述数据块拼接到所述GPU-800中分配存储数据块的工作缓冲区中;
所述GPU-800用于对所述数据块进行处理得到处理结果,之后将所述处理结果返回给所述CPU-700。
实际应用中,CPU-700中还将自动分配和回收一个ResultBuffer,同样,在GPU-800中自动分配和回收一个ResultBuffer,CPU-700中的ResultBuffer和GPU-800中的ResultBuffer的生存周期相同,都是用于存储运算得到的结果。若实际应用中,CPU-700所分配的第一缓冲区为DirectBuffer,第二缓冲区为LaunchingBuffer,GPU-800分配的工作缓冲区为WorkingBuffer,那么如图8-b所示,图8-b为本发明实施例提供的从节点设备中CPU-700与GPU-800之间的交互示意图。如图8-b所示,在该CPU-700设置数据预处理器500和数据拼接器600。另外,在CPU-700中分配有DirectBuffer、LaunchingBuffer和ResultBuffer,DirectBuffer中存储着需要转换数据格式的数据集合,数据集合包括由键值对中的值拼接组成的数据,且在DirectBuffer添加元数据,元数据主要包括数据集合的数据在DirectBuffer的存储地址,预处理器500根据元数据数据能够从DirectBuffer中读取数据集合中的数据,再通过指定的预设解析函数对数据进行自动数据格式转换,转换后的数据集合生成数据块,最后数据预处理器500将数据块存储进LaunchingBuffer。如果在存储进LaunchingBuffer时,需要转换数据块中数据的存储格式时,将进行存储格式的转换,保证在LaunchingBuffer中数据的存储格式与GPU-800中WorkingBuffer相同。数据拼接器600从LaunchingBuffer读取数据块拼接到GPU-800中WorkingBuffer中,若拼接失败,说明WorkingBuffer不能再存储数据块,则先触发GPU对WorkingBuffer中所存储的数据块进行运算处理,GPU将运算结果存储到其所在的ResultBuffer中,调用API接口后将运算结果传送到CPU中的ResultBuffer。
请参阅图9,本发明实施例还提供一种数据处理设备,可包括:存储器910和至少一个处理器920(图9中以一个处理器为例)。本发明实施例的一些实施例中,存储器910和处理器920可通过总线或其它方式连接,其中,图9以通过总线连接为例。
其中,处理器920可以执行以下步骤:所述数据预处理器从所述CPU的第一缓冲区读取元数据;其中,当从数据分片获取的数据集合存储进所述第一缓冲区时,在所述第一缓冲区头部为所述数据集合添加元数据,所述元数据中包括所述数据集合的数据在所述第一缓冲区的存储地址;所述数据预处理器根据所述元数据所指示的存储地址从所述第一缓冲区读取所述数据集合的数据;所述数据预处理器根据预设解析函数,将所述数据集合的数据转换成所述预设解析函数所指示的数据格式,并将转换后的数据集合生成数据块后存储在所述CPU的第二缓冲区,以使得所述数据拼接器从所述第二缓冲区读取所述数据块拼接到所述GPU。
或
所述数据拼接器从所述CPU的第二缓冲区读取所述数据预处理器生成的数据块;所述数据拼接器将所述数据块拼接到所述GPU中被分配存储数据块的工作缓冲区。
在本发明一些实施例中,处理器920还可以执行以下步骤:所述数据预处理器从所述地址索引数组的数据元素指示在第一缓冲区的存储地址开始读取,直到下一个数据元素指示的存储地址或所述第一缓冲区末端结束读取数据。
在本发明一些实施例中,处理器920还可以执行以下步骤:所述数据预处理器根据所述预设的解析函数将所述数据集合的数据转换成所述解析函数指定的满足逻辑运算的数据格式。
在本发明一些实施例中,处理器920还可以执行以下步骤:所述数据预处理器将所述数据块中的数据转换成所述GPU中的存储格式。
在本发明一些实施例中,处理器920还可以执行以下步骤:当所述数据拼接器将所述数据块拼接到所述GPU中被分配存储数据块的工作缓冲区失败时,则暂停拼接所述数据块,并触发所述GPU处理所述工作缓冲区存储的数据块。
在本发明一些实施例中,处理器920还可以执行以下步骤:所述数据拼接器从游标参数指示的起始地址开始拼接所述数据块,所述游标参数用于指示所述GPU中被分配存储数据块的工作缓冲区中可用于存储数据块的起始地址。
在本发明一些实施例中,处理器920还可以执行以下步骤:所述数据拼接器通知所述GPU所述数据块的大小;所述数据拼接器更新所述游标参数。
在本发明一些实施例中,存储器910可以用来存储数据集合、元数据以及数据块;
在本发明一些实施例中,存储器910还可以用来存储地址索引数组。
在本发明一些实施例中,存储器910还可以用来存储游标参数。
在本发明一些实施例中,存储器910还可以用来存储运算结果。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上对本发明所提供的一种数据处理方法及相关设备进行了详细介绍,对于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (22)
1.一种数据处理方法,其特征在于,应用于MapReduce架构下的Hadoop集群,所述Hadoop集群包括主节点设备和从节点设备,所述从节点设备包括处理器CPU和图形处理器GPU,所述从节点设备从所述主节点设备获取数据分片,所述CPU中设置有数据预处理器和数据拼接器,所述方法包括:
所述数据预处理器从所述CPU的第一缓冲区读取元数据;其中,当从数据分片获取的数据集合存储进所述第一缓冲区时,在所述第一缓冲区头部为所述数据集合添加元数据,所述元数据中包括所述数据集合的数据在所述第一缓冲区的存储地址;
所述数据预处理器根据所述元数据所指示的存储地址从所述第一缓冲区读取所述数据集合的数据;
所述数据预处理器根据预设解析函数,将所述数据集合的数据转换成所述预设解析函数所指示的数据格式,并将转换后的数据集合生成数据块后存储在所述CPU的第二缓冲区,以使得所述数据拼接器从所述第二缓冲区读取所述数据块拼接到所述GPU。
2.根据权利要求1所述的方法,其特征在于,所述元数据具体包括地址索引数组,所述地址索引数组包含有与所述数据集合的数据一一对应的数据元素,所述数据元素用于指示所述数据集合的数据在所述第一缓冲区的存储地址,进而所述数据预处理器根据所述元数据所指示的存储地址从所述第一缓冲区读取数据集合中的数据包括:
所述数据预处理器从所述地址索引数组的数据元素指示在第一缓冲区的存储地址开始读取,直到下一个数据元素指示的存储地址或所述第一缓冲区末端结束读取数据。
3.根据权利要求1所述的方法,其特征在于,所述将所述数据集合的数据转换成所述预设解析函数所指示的数据格式包括:
所述数据预处理器根据所述预设的解析函数将所述数据集合的数据转换成所述解析函数指定的满足逻辑运算的数据格式。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
当所述第一缓冲区对所述数据集合的数据的存储格式与所述GPU中对数据的存储格式不一致时,所述将转换后的数据集合生成数据块后包括:
所述数据预处理器将所述数据块中的数据转换成所述GPU中的存储格式。
5.根据权利要求1~4任一项所述的方法,其特征在于,
所述数据集合具体由所述数据分片中的多个键值对的值拼接组成。
6.根据权利要求1~4任一项所述的方法,其特征在于,
所述第一缓冲区和所述第二缓冲区由所述CPU自动分配和回收,所述第一缓冲区的生存周期为一个数据分片的处理时间,所述第二缓冲区的生存周期为一个数据集合的处理时间。
7.一种数据处理方法,其特征在于,应用于MapReduce架构下的Hadoop集群,所述Hadoop集群包括主节点设备和从节点设备,所述从节点设备包括处理器CPU和图形处理器GPU,所述从节点设备从所述主节点设备获取数据分片,所述CPU中设置有数据预处理器和数据拼接器,所述方法包括:
所述数据拼接器从所述CPU的第二缓冲区读取所述数据预处理器生成的数据块;
所述数据拼接器将所述数据块拼接到所述GPU中被分配存储数据块的工作缓冲区;
其中,所述CPU的第二缓冲区中的数据块是由所述数据预处理器根据预设解析函数,将数据集合的数据转换成所述预设解析函数所指示的数据格式,并将转换后的数据集合生成数据块后存储在所述CPU的第二缓冲区中的。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
当所述数据拼接器将所述数据块拼接到所述GPU中被分配存储数据块的工作缓冲区失败时,则暂停拼接所述数据块,并触发所述GPU处理所述工作缓冲区存储的数据块。
9.根据权利要求7或8所述的方法,其特征在于,所述数据拼接器将所述数据块拼接到所述GPU中被分配存储数据块的工作缓冲区包括:
所述数据拼接器从游标参数指示的起始地址开始拼接所述数据块,所述游标参数用于指示所述GPU中被分配存储数据块的工作缓冲区中可用于存储数据块的起始地址。
10.根据权利要求9所述的方法,其特征在于,当拼接所述数据块成功后,所述方法还包括:
所述数据拼接器通知所述GPU所述数据块的大小;
所述数据拼接器更新所述游标参数。
11.一种数据预处理器,其特征在于,应用于MapReduce架构下的Hadoop集群,所述Hadoop集群包括主节点设备和从节点设备,所述从节点设备包括处理器CPU和图形处理器GPU,所述从节点设备从所述主节点设备获取数据分片,所述CPU中设置有所述数据预处理器和数据拼接器,包括:
第一读取单元,用于从所述CPU的第一缓冲区读取元数据;其中,当从数据分片获取的数据集合存储进所述第一缓冲区时,在所述第一缓冲区头部为所述数据集合添加元数据,所述元数据中包括所述数据集合的数据在所述第一缓冲区的存储地址;
第二读取单元,用于根据所述元数据所指示的存储地址从所述第一缓冲区读取所述数据集合的数据;
转换单元,用于根据预设解析函数,将所述数据集合的数据转换成所述预设解析函数所指示的数据格式,并将转换后的数据集合生成数据块;
存储单元,用于将所述数据块存储在所述CPU的第二缓冲区,以使得所述数据拼接器从所述第二缓冲区读取所述数据块拼接到所述GPU。
12.根据权利要求11所述的数据预处理器,其特征在于,所述元数据具体包括地址索引数组,所述地址索引数组包含有与所述数据集合的数据一一对应的数据元素,所述数据元素用于指示所述数据集合的数据在所述第一缓冲区的存储地址,进而所述第二读取单元包括:
数据读取单元,用于从所述地址索引数组的数据元素指示在第一缓冲区的存储地址开始读取,直到下一个数据元素指示的存储地址或所述第一缓冲区末端结束读取数据。
13.根据权利要求11或12所述的数据预处理器,其特征在于,所述解析单元包括:
数据格式转换单元,用于通过预设的解析函数将所述数据集合的数据转换成所述解析函数指定的满足逻辑运算的数据格式
生成单元,用于将转换的数据集合生成数据块。
14.根据权利要求11所述的数据预处理器,其特征在于,所述解析单元还包括:
格式转换单元,用于当所述第一缓冲区对所述数据集合的数据的存储格式与所述GPU中对数据的存储格式不一致时,将所述数据块中的数据转换成所述GPU中的存储格式。
15.一种数据拼接器,其特征在于,应用于MapReduce架构下的Hadoop集群,所述Hadoop集群包括主节点设备和从节点设备,所述从节点设备包括处理器CPU和图形处理器GPU,所述从节点设备从所述主节点设备获取数据分片,所述CPU中设置有数据预处理器和所述数据拼接器,包括:
第三读取单元,用于从所述CPU的第二缓冲区读取所述数据预处理器生成的数据块;其中,所述CPU的第二缓冲区中的数据块是由所述数据预处理器根据预设解析函数,将数据集合的数据转换成所述预设解析函数所指示的数据格式,并将转换后的数据集合生成数据块后存储在所述CPU的第二缓冲区中的;
拼接处理单元,用于将所述数据块拼接到所述GPU中被分配存储数据块的工作缓冲区。
16.根据权利要求15所述的数据拼接器,其特征在于,所述数据拼接器还包括:
触发处理单元,用于当所述数据拼接器将所述数据块拼接到所述GPU中被分配存储数据块的工作缓冲区失败时,则暂停拼接所述数据块,并触发所述GPU处理所述工作缓冲区存储的数据块。
17.根据权利要求15或16所述的数据拼接器,其特征在于,所述拼接处理单元具体用于从游标参数指示的起始地址开始拼接所述数据块,所述游标参数用于指示所述GPU中被分配存储数据块的工作缓冲区中可用于存储数据块的起始地址。
18.根据权利要求17所述的数据拼接器,其特征在于,所述数据拼接器还包括:
通知单元,用于通知所述GPU所述数据块的大小;
更新单元,用于更新所述游标参数。
19.一种处理器,其特征在于,包括:如权利要求11所述的数据预处理器和权利要求15所述的数据拼接器。
20.根据权利要求19所述的处理器,其特征在于,所述处理器还包括:
自动分配和回收所述第一缓冲区和所述第二缓冲区,所述第一缓冲区的生存周期为一个数据分片的处理时间,所述第二缓冲区的生存周期为一个数据集合的处理时间。
21.一种从节点设备,其特征在于,所述从节点设备为Hadoop集群中的从节点设备,所述Hadoop集群还包括主节点设备,所述从节点设备从所述Hadoop集群接收数据分片,所述从节点设备包括:图形处理器GPU以及如权利要求19所述的处理器CPU;
其中,所述CPU中的数据预处理器用于将从数据分片获取的数据集合转换数据格式,并将转换数据格式后的数据集合生成数据块,通过所述CPU中的数据拼接器将所述数据块拼接到所述GPU中分配存储数据块的工作缓冲区中;
所述GPU用于对所述数据块进行处理得到处理结果,之后将所述处理结果返回给所述CPU。
22.根据权利要求21所述的从节点设备,其特征在于,所述GPU还包括:
自动分配和回收所述工作缓冲区,所述工作缓冲区的生存周期为一个数据分片的处理时间。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310719857.4A CN104731569B (zh) | 2013-12-23 | 2013-12-23 | 一种数据处理方法及相关设备 |
PCT/CN2014/094071 WO2015096649A1 (zh) | 2013-12-23 | 2014-12-17 | 一种数据处理方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310719857.4A CN104731569B (zh) | 2013-12-23 | 2013-12-23 | 一种数据处理方法及相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104731569A CN104731569A (zh) | 2015-06-24 |
CN104731569B true CN104731569B (zh) | 2018-04-10 |
Family
ID=53455495
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310719857.4A Expired - Fee Related CN104731569B (zh) | 2013-12-23 | 2013-12-23 | 一种数据处理方法及相关设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN104731569B (zh) |
WO (1) | WO2015096649A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105159610B (zh) * | 2015-09-01 | 2018-03-09 | 浪潮(北京)电子信息产业有限公司 | 大规模数据处理系统及方法 |
CN106326029A (zh) * | 2016-08-09 | 2017-01-11 | 浙江万胜智能科技股份有限公司 | 一种用于电力仪表的数据存储方法 |
KR102482516B1 (ko) * | 2016-11-29 | 2022-12-29 | 에이알엠 리미티드 | 메모리 어드레스 변환 |
CN109408450B (zh) * | 2018-09-27 | 2021-03-30 | 中兴飞流信息科技有限公司 | 一种数据处理的方法、系统、协处理装置和主处理装置 |
CN111143232B (zh) * | 2018-11-02 | 2023-08-18 | 伊姆西Ip控股有限责任公司 | 用于存储元数据的方法、设备和计算机可读介质 |
CN109522133B (zh) * | 2018-11-28 | 2020-10-02 | 北京字节跳动网络技术有限公司 | 一种数据拼接方法、装置、电子设备及存储介质 |
CN113168322A (zh) * | 2019-05-27 | 2021-07-23 | 华为技术有限公司 | 一种图形处理方法和装置 |
CN110769064B (zh) * | 2019-10-29 | 2023-02-24 | 广州趣丸网络科技有限公司 | 一种用于离线推送消息的系统、方法和设备 |
CN113535857A (zh) * | 2021-08-04 | 2021-10-22 | 阿波罗智联(北京)科技有限公司 | 数据同步方法及装置 |
CN114003973A (zh) * | 2021-10-13 | 2022-02-01 | 杭州趣链科技有限公司 | 数据处理方法、装置、电子设备和存储介质 |
CN115952561A (zh) * | 2023-03-14 | 2023-04-11 | 北京全路通信信号研究设计院集团有限公司 | 应用于轨道交通系统的数据处理方法、装置、设备及介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102662639A (zh) * | 2012-04-10 | 2012-09-12 | 南京航空航天大学 | 一种基于Mapreduce的多GPU协同计算方法 |
CN102708088A (zh) * | 2012-05-08 | 2012-10-03 | 北京理工大学 | 面向海量数据高性能计算的cpu/gpu协同处理方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7119810B2 (en) * | 2003-12-05 | 2006-10-10 | Siemens Medical Solutions Usa, Inc. | Graphics processing unit for simulation or medical diagnostic imaging |
-
2013
- 2013-12-23 CN CN201310719857.4A patent/CN104731569B/zh not_active Expired - Fee Related
-
2014
- 2014-12-17 WO PCT/CN2014/094071 patent/WO2015096649A1/zh active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102662639A (zh) * | 2012-04-10 | 2012-09-12 | 南京航空航天大学 | 一种基于Mapreduce的多GPU协同计算方法 |
CN102708088A (zh) * | 2012-05-08 | 2012-10-03 | 北京理工大学 | 面向海量数据高性能计算的cpu/gpu协同处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104731569A (zh) | 2015-06-24 |
WO2015096649A1 (zh) | 2015-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104731569B (zh) | 一种数据处理方法及相关设备 | |
CN107395665B (zh) | 一种区块链业务受理及业务共识方法及装置 | |
TWI549060B (zh) | Access methods and devices for virtual machine data | |
CN105677251B (zh) | 基于Redis集群的存储系统 | |
WO2016011811A1 (zh) | 一种内存管理方法、装置及存储介质 | |
US9400767B2 (en) | Subgraph-based distributed graph processing | |
CN104394096A (zh) | 一种基于多核处理器的报文处理方法及多核处理器 | |
US11451629B2 (en) | Distributed metadata management method for distributed file system | |
US11947842B2 (en) | Method for writing data in append mode, device and storage medium | |
CN103218176A (zh) | 数据处理方法及装置 | |
CN105138679A (zh) | 一种基于分布式缓存的数据处理系统及处理方法 | |
CN102195895A (zh) | 一种消息发送、接收处理的方法及其装置 | |
EP3077914B1 (en) | System and method for managing and supporting virtual host bus adaptor (vhba) over infiniband (ib) and for supporting efficient buffer usage with a single external memory interface | |
US20170249304A1 (en) | File system quota versioning | |
CN102567419B (zh) | 基于树结构的海量数据存储装置及方法 | |
US20200371827A1 (en) | Method, Apparatus, Device and Medium for Processing Data | |
CN109410063B (zh) | 基于区块链的交易处理方法、装置和存储介质 | |
CN112860412B (zh) | 业务数据处理方法、装置、电子设备及存储介质 | |
CN101783814A (zh) | 海量存储系统的元数据存储方法 | |
CN112804003A (zh) | 一种基于光模块通信的存储方法、系统及终端 | |
CN103577604B (zh) | 一种用于Hadoop分布式环境的图像索引结构 | |
US10146791B2 (en) | Open file rebalance | |
US11893407B2 (en) | Overlay container storage driver for microservice workloads | |
CN110688209B (zh) | 一种基于二叉树的大窗口访存流量调度缓冲结构及方法 | |
CN110445874B (zh) | 一种会话处理方法、装置、设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180410 Termination date: 20201223 |
|
CF01 | Termination of patent right due to non-payment of annual fee |