一种在计算机集群上进行矩阵乘积运算的方法和系统技术方案

技术编号:8105693 阅读:441 留言:0更新日期:2012-12-21 04:24
本发明专利技术提供了一种在计算机集群上进行矩阵乘积运算的方法和装置,所述计算机集群上部署有分布式文件系统、用来执行映射Map任务和化简Reduce任务的多个计算节点,其中的方法具体包括:在所述多个计算节点上执行第一Map任务、第一Reduce任务、第二Map任务和第二Reduce任务;其中,所述第一Map任务进行第一处理得到相应的第一键值对结果;所述第一Reduce任务对第一键值对结果中相同主键的键值进行聚合;第二Map任务识别得到第一矩阵和第二矩阵的元素,并进行两两组合求乘积运算,得到第二键值对结果;第二Reduce任务对所述第二键值对结果中相同主键的键值进行求和。本发明专利技术能够提高矩阵乘积的运算速度。

【技术实现步骤摘要】

本申请涉及计算机并行运算
,特别是涉及一种在计算机集群上进行矩阵乘积运算的方法和系统
技术介绍
目前,随着高性能应用和运算需求的迅猛发展,单台计算机已经不能解决一些超大规模应用问题,如空间连接、多个数据集的最近邻查询等。这就需要将多台计算机资源联合起来,构成计算机集群,共同解决大规模应用问题。海盗(Hadoop)就是这样一个分布式系统的集群架构,可以实现高效率的并行计算和海量存储。Hadoop由许多兀素构成,其最底部是海盗分布式文件系统(Hadoop DistributedFile System, HDFS),它存储Hadoop集群中所有存储节点上的文件;HDFS的上一层是映射化简(MapReduce)引擎,MapReduce引擎是一个分布式计算框架,用于数据分析处理。主键-键值(key-value)存储可以为HDFS元数据存储管理带来更好的扩展性,故在Hadoop中常用于存储运算中的中间数据或结果数据。用计算机对大规模矩阵进行运算在工程和科学运算中有着广泛应用,例如在算法中动态规划优化、图邻接矩阵的最小最大边路径问题、数据处理中变量的映射和关联等应用领域均需要进行矩阵乘积的运算。现有技术一种在Hadoop上进行矩阵乘积运算的方法,其通过对矩阵进行分块将矩阵乘积运算分割成多个子运算,最后将多个子运算的结果合并处理成最终的乘积矩阵,参照图I所示的流程示意图,该方法具体可以包括作业I (jobl)和作业2 (job2);其中,在jobl的Map任务阶段,分别以矩阵I和矩阵2的列坐标和行坐标为主键(key)标记兀素;在jobl的Reduce任务阶段,对key相同的矩阵I和矩阵2中的元素两两组合求乘积; 在job2的Map任务阶段,对key相同的元素求和得到乘积矩阵中的元素;在job2的Reduce任务阶段,将乘积矩阵中的元素输出至HDFS。在MapReduce引擎中,Reduce任务数通常为O. 95或者I. 75 X计算节点数 XMapred. tasktracker. tasks, maximum,其中,计算节点(Computer Nodes)相当于Hadoop的服务器主机(Host),其上通常部署有多个任务追踪器(tasktracker)节点,一个tasktracker 节点可用于执行一个 Map/Reduce 任务,Mapred. tasktracker. Map. tasks,maximum通常设置为计算节点的cpu核数目减1,如果计算节点的Host为8核,则Reduce任务数为6. 65或者12. 25*计算节点数,也即,Reduce任务数是有限的;这样,在矩阵规模比较大时,在jobl的Reduce任务阶段,需要用有限的任务数完成大量的两矩阵元素两两组合并求乘积的运算,这个过程十分耗时,成为整个矩阵乘积运算速度的瓶颈。总之,需要本领域技术人员迫切解决的一个技术问题就是如何能够提高矩阵乘积的运算速度。
技术实现思路
本申请所要解决的技术问题是提供一种在计算机集群上进行矩阵乘积运算的方法和系统,能够提高矩阵乘积的运算速度。为了解决上述问题,本申请公开了一种在计算机集群上进行矩阵乘积运算的方法,所述计算机集群上部署有分布式文件系统、用来执行映射Map任务和化简Reduce任务的多个计算节点,所述方法包括在所述多个计算节点上执行第一Map任务、第一Reduce任务、第二 Map任务和第二 Reduce任务;其中, 所述第一 Map任务从分布式文件系统读取第一矩阵和第二矩阵的行数据,并对所述行数据进行第一处理得到相应的第一键值对结果,并输出;所述第一 Reduce任务对所述第一键值对结果中相同主键的键值进行聚合,并将相应的聚合结果输出至分布式文件系统;所述第二 Map任务从分布式文件系统读取所述聚合结果,从所述聚合结果中识别得到第一矩阵和第二矩阵的元素,并对所述第一矩阵和第二矩阵的元素进行两两组合求乘积运算,将运算得到的第二键值对结果进行输出;其中,所述第二键值对结果的主键为乘积矩阵元素的行列号,键值为乘积矩阵元素的值;所述第二 Reduce任务对所述第二键值对结果中相同主键的键值进行求和,并将相应的求和结果作为乘积矩阵元素的值输出至分布式文件系统。优选的,所述第一矩阵对应的第一键值对结果的键值包括第一标识、行坐标和元素值,所述第二矩阵对应的第一键值对结果的键值包括第二标识、列坐标和元素值;则所述从所述聚合结果中识别得到第一矩阵和第二矩阵的元素的步骤进一步包括针对所述聚合结果中的键值,如果其包括第一标识则从中获取第一矩阵的元素,如果其包括第二标识则从中获取第二矩阵的元素。优选的,所述第一矩阵对应的第一键值对结果的键值包括第一标识、行坐标和元素值,所述第二矩阵对应的第一键值对结果的键值包括第二标识、列坐标和元素值;则所述对所述第一矩阵和第二矩阵的元素进行两两组合求乘积运算的步骤进一步包括以所述第一矩阵的元素对应的行坐标为关键字,将所述第一矩阵的元素存放至第一存储结构;以所述第二矩阵的元素对应的列坐标为关键字,将所述第二矩阵的元素存放至第二存储结构;对所述第一存储结构和第二存储结构中的元素进行两两组合求乘积运算,得到相应的第二键值对结果,其中,以两个元素对应的关键字共同作为所述第二键值对结果的主键,以两个元素的乘积作为所述第二键值对结果的键值。优选的,所述从分布式文件系统读取第一矩阵和第二矩阵的行数据的步骤进一步包括每读入一行数据,获取分布式文件系统的环境变量,并依据该环境变量确定该行数据来自第一矩阵还是第二矩阵。优选的,所述对所述行数据进行第一处理得到相应的第一键值对结果的步骤进一步包括针对第一矩阵的行数据中的元素,以其列坐标为主键,以其第一标识、行坐标和元素值为键值;针对第二矩阵的行数据中的元素,以其行坐标为主键,以其第二标识、列坐标和元素值为键值;所述第一键值对结果中存储有第一矩阵和第二矩阵的主键和键值。优选的,所述计算机集群上还部署有作业服务器,所述作业服务器用于将所述第一 Map任务、第一 Reduce任务、第二 Map任务和第二 Reduce任务分配到所述多个计算节占.则所述方法还包括 在所述多个计算节点上执行所述作业服务器分配的第一 Map任务;在所述多个计算节点上执行所述作业服务器分配的第一 Reduce任务;在所述多个计算节点上执行所述作业服务器分配的第二 Map任务;在所述多个计算节点上执行所述作业服务器分配的第二 Reduce任务。另一方面,本申请还提供了一种在计算机集群上进行矩阵乘积运算的装置,所述计算机集群上部署有分布式文件系统、用来执行映射Map任务和化简Reduce任务的多个计算节点,所述装置包括第一Map任务执行模块,用于在所述多个计算节点上执行第一Map任务;所述第一Map任务从分布式文件系统读取第一矩阵和第二矩阵的行数据,并对所述行数据进行第一处理得到相应的第一键值对结果,并输出;第一 Reduce任务执行模块,用于在所述多个计算节点上执行第一 Reduce任务;所述第一 Reduce任务对所述第一键值对结果中相同主键的键值进行聚合,并将相应的聚合结果输出至分布式文件系统;第二Map任务执行模块,用于在所述多个计算节点上执行第二Map任务;所述第二Map本文档来自技高网
...

【技术保护点】
一种在计算机集群上进行矩阵乘积运算的方法,所述计算机集群上部署有分布式文件系统、用来执行映射Map任务和化简Reduce任务的多个计算节点,其特征在于,所述方法包括:在所述多个计算节点上执行第一Map任务、第一Reduce任务、第二Map任务和第二Reduce任务;其中,所述第一Map任务从分布式文件系统读取第一矩阵和第二矩阵的行数据,并对所述行数据进行第一处理得到相应的第一键值对结果,并输出;所述第一Reduce任务对所述第一键值对结果中相同主键的键值进行聚合,并将相应的聚合结果输出至分布式文件系统;所述第二Map任务从分布式文件系统读取所述聚合结果,从所述聚合结果中识别得到第一矩阵和第二矩阵的元素,并对所述第一矩阵和第二矩阵的元素进行两两组合求乘积运算,将运算得到的第二键值对结果进行输出;其中,所述第二键值对结果的主键为乘积矩阵元素的行列号,键值为乘积矩阵元素的值;所述第二Reduce任务对所述第二键值对结果中相同主键的键值进行求和,并将相应的求和结果作为乘积矩阵元素的值输出至分布式文件系统。

【技术特征摘要】

【专利技术属性】
技术研发人员:张一凡张中峰罗峰黄苏支李娜
申请(专利权)人:北京亿赞普网络技术有限公司
类型:发明
国别省市:

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

1