本发明涉及机器学习算法处理领域,尤其涉及基于FPGA的FP-Growth算法的改进方法及装置。
背景技术:
基于Spark平台的FP-Growth算法采用MapReduce分布式计算模型、立足于内存计算,实现了该算法的并行化,在一定程度上提升了该算法的挖掘效率;然而随着大数据时代的到来,科学和工程计算领域的数据量急剧增长,计算复杂度不断增加,给基于Spark平台的FP-Growth算法的计算性能带来了极大挑战。由于单节点处理能力有限,Spark通过扩展集群节点规模来实现算法性能的提升;而这种集群扩展不仅使得系统成本和能耗快速增加,而且使得集群网络复杂度和节点间的数据传输开销急剧上升,降低了集群扩展带来的计算性能增益。如何才能解决上述问题,增强单节点处理能力、进而减少计算集群快速扩张带来的网络传输开销,最终实现FP-Growth算法的性能提升成为亟待解决的热点问题。
技术实现要素:
本发明提供的基于FPGA的FP-Growth算法的改进方法及装置,克服了现有技术中存在的不足,显著的提升了FP-Growth算法的计算性能。
为了达到上述目的,本发明是通过以下技术方案实现的:
本发明提供一种基于FPGA的FP-Growth算法的改进方法,包括以下步骤:
扫描Spark集群中的数据库,获取频繁项集;
将频繁项集进行分组;
为Spark集群中的每个节点加配一块FPGA板卡;
在FPGA板卡上对每一组的频繁项集建FP树;
在FPGA板卡上对每一组建的FP树进行递归挖掘;
将每一组递归挖掘的结果进行合并。
进一步地,将频繁项集进行分组,包括:
将其按频繁1-项集顺序递减排列;
根据数据库的大小确定分组个数,按照预先设定的分组规则将其分为若干组。
进一步地,在FPGA板卡对每一组建FP树,包括:
建立一个根节点为NULL的FP树和一个存储节点信息的Tab表;
将频繁项表中的每条处理好的事务中的数据项按降序依次插入到FP树中,构建出FP树的一条路径;
在上述的插入过程中,同时用Tab的指针指向对应项的节点,并将每个节点的计数增加1。
进一步地,在FPGA板卡对每一组建的FP树进行递归挖掘,包括:
A:从Tab表的尾部的项开始向上遍历FP树,每次遍历得到该项的条件模式基;
B:将其条件模式基转化为条件FP树;
C:迭代重复步骤A步骤B,直到FP树包含一个元素项为止。
进一步地,将每一组递归挖掘的结果进行合并,包括:
将每一棵条件FP树生成所有的从根节点到叶子节点的路径,由路径中的集合生成其所有的非空子集。
基于上述的任一项一种基于FPGA的FP-Growth算法的改进方法的一种基于FPGA的FP-Growth算法的改进装置,包括:
获取模块,用于扫描Spark集群中的数据库,获取频繁项集;
分组模块,用于将频繁项集进行分组;
板卡模块,用于为Spark集群中的每个节点加配一块FPGA板卡;
建树模块,用于在FPGA板卡上对每一组的频繁项集建FP树;
挖掘树模块,用于在FPGA板卡上对每一组建的FP树进行递归挖掘;
结果模块,用于将每一组递归挖掘的结果进行合并。
本发明所提供的一种基于FPGA的FP-Growth算法的改进方法,具有如下优点:
1.本发明通过在原有Spark集群的基础上加配FPGA,为每个集群节点增加一块FPGA板卡,由于FPGA板卡具有高性能、低功耗、易编程、动态可重构等突出优势,是一种新型的异构计算加速器件,将FPGA板卡与原有节点组成新的Spark集群节点服务于整个Spark集群,来提高集群单节点的计算能力,同时保留了Spark集群自身的并行计算框架,有效提高了大数据环境下FP-Growth算法的整体性能,且FPGA作为加速设备与CPU相配合形成异构计算平台,能够有效的提升Spark集群的综合性能;
2.本发明将FPGA与Spark相结合,将算法中最耗时、计算量最大的建树与挖掘树部分从Spark源码中抽离并在FPGA上开发实现并优化,而算法的其他部分如数据分组、挖掘结果综合等计算量较小的部分仍按照Spark原有机制运行,充分发挥二者优势,并在此基础上对FP-Growth算法进行优化改进,有效的提升FP-Growth算法的计算性能。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例。
图1为本发明实施例1基于FPGA的FP-Growth算法的改进方法的流程示意图之一。
图2为本发明实施例2基于FPGA的FP-Growth算法的改进方法的流程示意图之二。
图3为本发明实施例3基于FPGA的FP-Growth算法的改进装置的结构示意图。
具体实施方式
下面对本发明中涉及到的一些技术词语进行解释:
频繁项:在多个集合中,频繁出现的元素/项。
频繁项集:一系列集合,这些集合有些相同的元素,集合中同时出现频率高的元素形成一个子集,满足一定阈值条件的项集。
条件模式基:同一个频繁项在FP树中的所有节点的祖先路径的集合。
Spark:是通用并行框架,启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS。
FPGA: 英文全称为Field-Programmable Gate Array,即现场可编程门阵列,它是一种逻辑器件,是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合附图和实施例对本发明进行详细的描述。
实施例1
参考图1,本发明的一种基于FPGA的FP-Growth算法的改进方法,包括以下步骤:
S101:扫描Spark集群中的数据库,获取频繁项集;
S102:将频繁项集进行分组;
S103:为Spark集群中的每个节点加配一块FPGA板卡;
S104:在FPGA板卡上对每一组的频繁项集建FP树;
S105:在FPGA板卡上对每一组建的FP树进行递归挖掘;
S106:将每一组递归挖掘的结果进行合并。
实施例2
参考图2,本发明的一种基于FPGA的FP-Growth算法的改进方法,包括以下步骤:
S201:扫描Spark集群中的数据库,获取频繁项集;
S202:将其按频繁1-项集顺序递减排列;
S203:根据数据库的大小确定分组个数,按照预先设定的分组规则将其分为若干组;
S204:为Spark集群中的每个节点加配一块FPGA板卡;
S205:建立一个根节点为NULL的FP树和一个存储节点信息的Tab表;
S206:将频繁项表中的每条处理好的事务中的数据项按降序依次插入到FP树中,构建出FP树的一条路径;
S207:在上述的插入过程中,同时用Tab的指针指向对应项的节点,并将每个节点的计数增加1;
S208:从Tab表的尾部的项开始向上遍历FP树,每次遍历得到该项的条件模式基;
S209:将其条件模式基转化为条件FP树;
S210:迭代重复步骤S208、步骤S209,直到FP树包含一个元素项为止;
S211:将每一棵条件FP树生成所有的从根节点到叶子节点的路径,由路径中的集合生成其所有的非空子集。
实施例3
参考图3,本发明的基于FPGA的FP-Growth算法的改进装置,包括:获取模块101,分组模块102,板卡模块103,建树模块104,挖掘树模块105和结果模块106;所述的获取模块101依次连接分组模块102、板卡模块103、建树模块104、挖掘树模块105和结果模块106。
获取模块101用于扫描Spark集群中的数据库,获取频繁项集;分组模块102用于将频繁项集进行分组;板卡模块103用于为Spark集群中的每个节点加配一块FPGA板卡;建树模块104用于在FPGA板卡上对每一组的频繁项集建FP树;挖掘树模块105用于在FPGA板卡上对每一组建的FP树进行递归挖掘;结果模块106用于将每一组递归挖掘的结果进行合并。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。