数据处理方法和中心节点的制作方法

文档序号:9579037阅读:255来源:国知局
数据处理方法和中心节点的制作方法
【技术领域】
[0001 ] 本发明实施例涉及计算机技术,尤其涉及一种数据处理方法和中心节点。
【背景技术】
[0002] 采用大规模集群进行大数据处理的系统中,MapReduce是目前最为流行的编程模 型。
[0003] 在同构的集群系统(例如:由多个中央处理器(Central Processing Unit,简称 CPU)经过网络连接构成的集群系统)中,MapReduce目前使用的是Hadoop编程框架,在 Hadoop编程框架下,程序员仅需要编写Map函数和Reduce函数,提交给集群系统的中心节 点上运行的Hadoop程序,当有计算任务需要处理时,Hadoop程序将计算任务分解为多个 子数据块(split),并将Map函数和Reduce函数以及子数据块发送给需要进行计算的计 算节点,计算节点接到执行任务指令时,调用Map函数对接收到的子数据块进行处理,然后 Reduce函数对Map函数的处理结果进行排序、混合等处理后输出最终结果。
[0004] 然而,现有技术中的Hadoop编程框架仅适用于同构的集群系统,而无法适用于混 合集群系统(例如:CPU和图像处理器(Graphic Processing Unit,简称GPU)混合的集群 系统)进行数据处理。

【发明内容】

[0005] 本发明实施例提供一种数据处理方法和中心节点,以使Hadoop编程框架适用于 混合集群系统进行数据处理。
[0006] 本发明第一方面提供一种数据处理方法,所述方法应用于Hadoop集群系统,所述 Hadoop集群系统中包括计算节点和中心节点,所述中心节点上运行Hadoop程序,所述中心 节点对所述计算节点进行MapReduce运算管理,所述计算节点上包含有CPU和具有N个核 的GPU,所述方法包括:
[0007] 所述中心节点接收用户根据所述Hadoop程序所提供的MapReduce计算框架编写 的第一循环函数,所述第一循环函数中包括用户提供的Map计算函数,所述第一循环函数 用于循环调用所述用户提供的Map计算函数;
[0008] 所述中心节点利用运行的所述Hadoop程序将所述第一循环函数中的Map计算函 数替换为第一拷贝函数以生成第二循环函数,所述第一拷贝函数用于将所述计算节点中需 要所述GPU处理的多个数据记录从所述计算节点的内存拷贝到所述GPU的显存中,所述第 二循环函数用于对所述第一拷贝函数进行循环执行;
[0009] 所述中心节点根据所述第一循环函数生成启动计算函数,所述启动计算函数中的 Map计算函数用于指示所述GPU对所述GPU负责处理的数据记录进行处理;
[0010] 所述中心节点生成第二拷贝函数,所述第二拷贝函数用于将所述GPU对所述多个 数据记录的计算结果从所述GPU的显存中拷贝至所述计算节点的内存中。
[0011] 结合本发明第一方面,在本发明第一方面的第一种可能的实现方式中,所述启动 计算函数中的Map计算函数包括:输入部分、计算部分、输出部分,其中,所述输入部分用于 从所述GPU的显存中读取所述GPU需要处理的数据记录,所述计算部分用于对所述输入部 分读取的需要处理的数据记录进行处理,所述输出部分用于将所述计算部分处理后数据记 录的计算结果存储到所述GPU的显存中。
[0012] 结合本发明第一方面以及本发明第一方面的第一种可能的实现方式,在本发明第 一方面的第二种可能的实现方式中,所述启动计算函数中的Map计算函数用于对所述GPU 负责处理的多个数据记录并行处理,其中,所述GPU的多个核分别处理所述GPU负责处理的 多个数据记录中的至少一个数据记录。
[0013] 结合本发明第一方面的第二种可能的实现方式,在本发明第一方面的第三种可能 的实现方式中,当所述启动计算函数中的Map计算函数用于对所述GPU负责的多个数据记 录并行处理时,所述输入部分的输入地址包括所述GPU的每个核的输入地址,以使所述GPU 的每个核根据自己的输入地址从所述GPU的显存中读取需要处理数据记录,所述输出部分 的输出地址包括所述GPU的每个核的输出地址,以使所述GPU的每个核根据自己的输出地 址将处理后的数据记录的结果存储到自己的输出地址中。
[0014] 结合本发明第一方面的第三种可能的实现方式,在本发明第一方面的第四种可能 的实现方式中,所述中心节点生成启动计算函数,包括:
[0015] 所述中心节点将所述用户提供的Map计算函数中的输入地址修改为所述GPU的每 个核的输入地址以生成所述输入部分的输入地址;
[0016] 所述中心节点将所述用户提供的Map计算函数中的输出地址修改所述GPU的每个 核的输出地址以生成所述输出部分的输出地址;
[0017] 所述中心节点将所述用户提供的Map计算函数外层的所述第一循环函数替换为 第三循环函数,所述第三循环函数的循环次数为所述GPU负责处理的数据记录的数目Μ ;
[0018] 所述中心节点将所述第三循环函数中的循环拆分为外层循环和内层循环,以将所 述GPU负责处理的Μ个数据记录划分为「Μ/:B~j个并行执行的数据记录块,其中,所述外层 循环的次数为,所述内层循环的次数为B,所述GPU的每个核执行一个数据记录块;
[0019] 所述中心节点将所述用户提供的Map计算函数的局部变量声明为所述GPU的线程 局部变量,其中,所述GPU的每个核对应一个线程局部变量,所述GPU的每个核通过自己对 应的线程局部变量从所述GPU的显卡中读取需要处理的数据记录。
[0020] 结合本发明第一方面以及本发明第一方面的第一种至第四种可能的实现方式,在 本发明第一方面的第五种可能的实现方式中,所述方法还包括:所述计算节点将所述启动 计算函数的语言转换为所述GPU所能识别的语言。
[0021] 结合本发明第一方面以及本发明第一方面的第一种至第五种可能的实现方式,在 本发明第一方面的第六种可能的实现方式中,所述方法还包括:
[0022] 所述中心节点将所述第一循环函数、所述第二循环函数、所述第二拷贝函数、所述 启动计算函数发送给所述计算节点,以使所述CPU运行所述第一循环函数、所述第二循环 函数和所述第二拷贝函数,并使所述GPU运行所述启动计算函数。
[0023] 本发明第二方面提供一种中心节点,包括:
[0024] 接收模块,用于接收用户根据Hadoop程序所提供的MapReduce计算框架编写的第 一循环函数,所述第一循环函数中包括用户提供的Map计算函数,所述第一循环函数用于 循环调用所述用户提供的Map计算函数;
[0025] 第一生成模块,用于利用运行的所述Hadoop程序将所述第一循环函数中的Map计 算函数替换为第一拷贝函数以生成第二循环函数,所述第一拷贝函数用于将所述计算节点 中需要所述GPU处理的多个数据记录从所述计算节点的内存拷贝到所述GPU的显存中,所 述第二循环函数用于对所述第一拷贝函数进行循环执行;
[0026] 第二生成模块,用于根据所述第一循环函数生成启动计算函数,所述启动计算函 数中的Map计算函数用于指示所述GPU对所述GPU负责处理的数据记录进行处理;
[0027] 第三生成模块,用于生成第二拷贝函数,所述第二拷贝函数用于将所述GPU对所 述多个数据记录的计算结果从所述GPU的显存中拷贝至所述计算节点的内存中。
[0028] 结合本发明第二方面,在本发明第二方面的第一种可能的实现方式中,所述启动 计算函数中的Map计算函数包括:输入部分、计算部分、输出部分,其中,所述输入部分用于 从所述GPU的显存中读取所述GPU需要处理的数据记录,所述计算部分用于对所述输入部 分读取的需要处理的数据记录进行处理,所述输出部分用于将所述计算部分处理后数据记 录的计算结果存储到所述GPU的显存中。
[0029] 结合本发明第二方面以及本发明第二方面的第一种可能的实现方式,在本发明第 二方面的第二种可能的实现方式中,所述启动计算函数中的Map计算函数用于对所述GPU 负责处理的多个数据记录并行处理,其中,所述GPU的多个核分别处理所述GPU负责处理的 多个数据记录中的至少一个数据记录。
[0030] 结合本发明第二方面的第二种可能的实现方式,在本发明第二方面的第三种可能 的实现方式中,当所述启动计算函数中的Map计算函数用于对所述GPU负责的多个数据记 录并行处理时,所述输入部分的输入地址包括所述GPU的每个核的输入地址,以使所述GPU 的每个核根据自己的输入地址从所述GPU的显存中读取需要处理数据记录,所述输出部分 的输出地址包括所述GPU的每个核的输出地址,以使所述GPU的每个核根据自己的输出地 址将处理后的数据记录的结果存储到自己的输出地址中。
[0031] 结合本发明第二方面的第三种可能的实现方式,在本发明第二方面的第四种可能 的实现方式中,所述第二生成模块具体用于:
[0032] 将所述用户提供的Map计算函数中的输入地址修改为所述GPU的每个核的输入地 址以生成所述输入部分的输入地址
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1