APP下载

基于Hadoop平台的Spark快数据推荐算法分析与应用

2016-06-23陈虹君吴雪琴电子科技大学成都学院四川成都60074四川托普信息技术职业学院四川成都6743

现代电子技术 2016年10期

陈虹君,吴雪琴(.电子科技大学成都学院,四川成都 60074;.四川托普信息技术职业学院,四川成都 6743)



基于Hadoop平台的Spark快数据推荐算法分析与应用

陈虹君1,吴雪琴2
(1.电子科技大学成都学院,四川成都610074;2.四川托普信息技术职业学院,四川成都611743)

摘要:Hadoop大数据平台上可以搭建Yarn,Mahout,Storm,GraphLab等框架,其提供了大数据的各种处理能力。但它们各自按自己的机制工作,整合度极低。虽然在Mahout框架中,对机器学习的算法支持较为完善,但是数据必需是离线的。在大数据时代,要求不仅具有处理能力,还强调了数据的时效性,以前的框架都显得有点力不从心。Spark是Hadoop平台上的新型利器,它的各个部分几乎能替代以前的分散的框架,且采用统一的处理机制,整合度很好,速度比传统处理方式快几十倍甚至几百倍。基于Hadoop平台的Spark快数据推荐算法分析与应用是在Hadoop平台上用Yarn作资源管理,Spark作快数据的处理,这极大地提高了大数据的处理效率。该文以专业推荐系统为应用基础,采用Yarn作资源管理,及Spark ALS算法做推荐,Spark PageRank算法做专业排名,实验结果表明,Spark框架对大数据的处理机制能够满足日益增值的大数据应用对速度的要求。

关键词:Hadoop;Spark;快数据;ALS算法;PageRank算法

Hadoop平台是开源组织Apache基金会开发的分布式架构,是大数据的基础平台。Hadoop平台上目前可以搭建Yarn,Mahout,Storm,GraphLab和Spark等。Yarn用于资源管理,自动或者手动地为大数据挖掘提供容器资源。在Mahout框架中对机器学习的算法支持较为完善,缺点是数据必须是离线的,不能做到实时性,同时由于其采用MapReduce计算模型,随着数据量的增大,其挖掘时效已经达不到要求。Storm用于实时在线数据的处理。GraphLab主要用于图计算。Spark框架称为快数据,是基于内存的编程模型,它可以把中间的迭代过程不放在磁盘中,直接数据一个不落地在内存中执行,极大地提高了它的执行速度。Spark是大数据挖掘的新型利器。Spark的优点不仅仅体现在快,也体现在功能强大的整合能力,其整合能力体现在它的大数据能力的强大。Spark的框架分为4大模块:Spark SQL⁃RDD(数据执行的基本单元),MLlib(机器学习),Graphx(图计算)和Spark Streaming(实时处理)[1];这四个部分的数据处理单元都是RDD,所以整个框架形成了大数据处理各种应用场景编程的一致性。Spark框架集机器学习、图计算和在线学习于一身,是一个简洁、强大、高效的框架。

1 专业推荐的理论基础

专业推荐旨在基于Hadoop平台的Spark框架,采用Spark SQL的RDD数据处理机制对数据做结构的包装,采用Spark机器学习Mllib中的ALS算法作推荐,以及利用Spark图计算的PageRank算法做专业排名,通过以上机制能够达到对报考志愿的学生按相似性格作专业推荐,并对专业做评分[2]。流程图如图1所示。

图1 专业推荐的流程图

1.1RDD的数据表示机制

RDD(Resilient Distributed Datasets),称为弹性分布式数据集[3],本质上是Spark分布式内存模型中的数据结构,可以让用户显式地将数据存储到磁盘和内存中,并能控制数据的分区。对开发者而言,RDD可以看作是Spark的一个对象,它本身运行于内存中,如读文件是一个RDD,对文件计算是一个RDD,结果集也是一个RDD,不同的分片、数据之间的依赖、key⁃value类型的map数据都可以看做RDD。Spark SQL允许在SQL和HiveQL中的相关查询表达式在Spark中的执行。

RDD是高度受限的共享内存模型,即RDD是只读的记录分区的集合,只能通过在其他RDD执行确定的转换操作(如map,filter,join,partionBy和groupByKey等)而创建,但是这种创建过程的开销很低。

在专业推荐对存在Hadoop文件系统HDFS中待处理数据data进行RDD的转换,程序片段如:

把对经过ALS算法和PageRank算法的结果进行RDD转换。

1.2ALS算法

ALS是交替最小二乘(Alternating Least Squares)的简称。在机器学习的上下文中,ALS特指使用交替最小二乘求解的一个协同推荐算法。它通过观察到的所有用户给产品的打分,来推断每个用户的喜好并向用户推荐适合的产品。

专业推荐的打分矩阵U×M,其算法模型如下:

式中:U表示学生,U=ui,其中i=1,2,…,nu,nu表示了学生的数量;M代表专业,M=mj,其中j=1,2,…,mj,mj表示了学生的数量;rij表示i学生对j专业的评分,这个分数可以是一个真实的数字或是无值的;T表示矩阵的转置,λ表示矩阵的特征向量。

在专业推荐中,采用Spark的ALS算法模型做数据集的训练及作预测函数,每次收到新的数据后,将其更新到训练数据集中,然后更新ALS训练得到的模型[4]。该初始数据为100万条数据,ALS训练模型中设置迭代次数为20,收敛值为0.01。如下语句所示,训练后的数据集在model中。

val rank = 10

val numIterations = 20

val model = ALS.train(ratings,rank,numIterations,0.01)

1.3PageRank算法

PageRank算法主要应用于搜索引擎的搜索结果的排名。搜索的每个页面的重要性可以由其“得票数”确定。“得票数”由所有链向它的页面的重要性来决定。到1个页面的超链接相当于对该页投1票。1个超链接指向了s个页面,那么它对每个页面的贡献值是1 s。一个页面的重要性排名PageRank是由所有链向它的页面的重要性经过递归算法得到的[5]。

数学模型如下:

式中:p1,p2,…,pn是被研究的专业;M(p)i是pi关注该专业的数量;L(p)j是pj关注该专业的人关注其他专业的数量,而N是所有专业的数量。在专业推荐中,采用了Spark Graphx中的PageRank算法做专业排名。代码片段如下:

val graph = GraphLoader.edgeListFile(sc,"hdfs://hadoop135:8020/spark/combine/Major_PR.data").cache()

val ranks = graph.pageRank(0.001).vertices

2 实验环境与测试结果

本实验环境,采用Spark对比传统MapReduce的方式对该专业模型中的ALS推荐部分做了测试。采用Hadoop 2.2大数据平台,并采用Yarn管理有2个主机的集群。每个主机的配置:每台机器4块内存条,每块4 GB,共32 GB内存,数据量为2 GB,共100万条数据。为了更好的测试运行的效率,实验对比了ALS算法,如表1所示。

表1 Spark对比传统MapReduce的执行效率

实验得出,Spark处理推荐性能明显优于传统的MapReduce方式。

3 结 语

Spark是Hadoop大数据平台的一个利器,速度快,整合能力强。在大数据的分析与应用发展极为迅速的今天,Spark是非常值得研究的。本文中的专业推荐模型还可以从实时数据的收据、处理、呈现等方面继续改进。

参考文献

[1]陈虹君.基于Hadoop平台的Spark框架研究[J].电脑知识与技术,2014(35):8407⁃8408.

[2]SPIEWAK D,ZHAO Tian. ScalaQL:Language⁃integrated data⁃base queries for scala [C]// Proceedings of Second International Conference on Software Language Engineering. [S.l.:s.n.],2009:154⁃163.

[3]Anon. Resilient distributed datasets:a fault⁃tolerant abstraction for in⁃memory cluster computing,UCB/EECS⁃2011⁃82 [R]. Berkeley:EECS Department,University of California,2011.

[4]BU Yingyi,HOWE B,BALAZINSKA M,et al. Ernst. HaLoop:efficient iterative data processing on large clusters [J]. Proceedings of VLDB endowment,2010,3(1):285⁃296.

[5]陈虹君.Spark框架的Graphx算法研究[J].电脑知识与技术,2015(1):75⁃77.

[6]徐剑,陈群,王卓,等.一种基于Hadoop的多表链接策略[J].现代电子技术,2014,37(6):90⁃94.

Analysis and application of Spark fast data recommendation algorithm based on Hadoop platform

CHEN Hongjun1,WU Xueqin2
(1. Chengdu College,University of Electronic Science and Technology of China,Chengdu 610074,China;2. Sichuan TOP IT Vacational Institute,Chengdu 611743,China)

Abstract:Analysis and application of Spark fast data recommendation algorithm based on Hadoop platform is to use Yarn as resource management on Hadoop platform,and Spark as fast data processing,which greatly improves the processing efficien⁃cy of large data. In this paper,the specialty recommendation system is taken as application foundation,Yarn as resource manage⁃ment,Spark ALS algorithm as the basis of professional recommendation system,and Spark PageRank algorithm as specialist ranking. The experimental results show that,as for the big data processing mechanism,the Spark framework can meet the speed requirement of increasingly value⁃added big data application.

Keywords:Hadoop;Spark;fast data;ALS algorithm;PageRank algorithm

中图分类号:TN911⁃34

文献标识码:A

文章编号:1004⁃373X(2016)10⁃0018⁃03

doi:10.16652/j.issn.1004⁃373x.2016.10.005

收稿日期:2015⁃11⁃04

基金项目:四川省科技厅项目:基于北斗的公共位置服务云平台的研究与开发(15ZC1189)

作者简介:陈虹君(1979—),女,成都郫县人,副教授,硕士。研究方向为大数据Spark。吴雪琴(1980—),女,成都郫县人,副教授,硕士。研究方向为软件技术。