基于Hadoop的歌曲推荐系统设计与开发
摘 要:基于Hadoop的歌曲推荐管理系统是针对当前火热的大数据技术,在海量歌曲的管理基础上,让用户具有更好的使用体验,对有相同品味的用户,推荐可能喜欢的歌曲,在提升音乐平台的高可用性的同时,通过智能推荐提升用户对此音乐平台的好感度。
本歌曲推荐管理系统就是深入了解用户行为的各种切实需求而开发的一种融合用户管理、歌曲管理、歌曲评分、歌曲推荐等功能于一体的推荐管理系统。该系统是基于BS结构,采用MVC设计思想,使用Java程序设计语言、MySQL数据库、Hadoop离线分析、Java开源工具Eclipse编写程序、Tomcat模拟服务器、Java的JRE运行环境、jsp页面等工具开发而来。
关键词:Hadoop;歌曲推荐系统;MVC;B/S结构;MySQL数据库;Tomcat;JSP
1 研究意义
随着人们生活的节奏越来越快,对娱乐的需求也是越来越强烈。其中比较人们所常用的便是听各种不同的歌曲来放松疲惫的身心,于是各种歌曲推荐系统随之产生,用信息技术与互联网技术相结合的音乐网站,其便利性、数据安全性、共享性、数据容量等,明显优于传统的磁带或CD。
从以前的古筝,笛子等乐器到现在的吉他,小提琴等,音乐一直陪伴在我们的身边。如今人们大多数通过手机,MP3等电子设备,或通过电脑聆听音乐,享受音乐,可以使人们对音乐的需求及体验度在不断的提升。因此一款好的音乐软件,不仅能够满足用户对不同种类音乐的需求,还要能向用户智能推荐他可能会喜欢的歌曲,歌曲推荐系统因此应运而生。
通过基于Hadoop,Java编程语言,B/S构架以及MVC思想设计的歌曲推荐系统通过运用当前火热的大数据技术,存储海量的歌曲满足用户对各式各样歌曲的需求的同时,对各个用户的播放记录做一个离线分析,当用户下次上线的时候,便会接收到该系统为其推荐的喜欢的歌曲。
2 相关技术方法
1、UI端(页面):
歌曲推荐系统UI端采用JSP(Java Server Pages)页面设计,其中嵌入了html语言、CSS和js,并采用了AJAX与后台互交。具有动态性、实时性。
2、服务器端:
服务器端代码我们采用了Java程序设计语言,并且采用了Java常用的servlet技术和基于Java开发的Hadoop生态圈,能极大的降低代码的耦合性,提高代码健壮性和可拓展性。
3、数据库端:
数据库端我们采用当前比较流行的开源数据库MySQL,MySQL具有承载率大,稳定性强以及可降低成本等优势。
4、B\S结构:
我们采用了现在运用最广泛的B\S结构模式(即客户\服务器机构模式),用户只需要在客户端发送请求,服务器端就会根据客户发送的请求进行相应的响应已达到客户的需求。
另外我们使用了JDK、Tomcat、MySQL、JSP、Servlet、Eclipse等相关的工具。
3 系统分析
采用当下最流行的Java编程语言、MySQL数据库、Tomcat服务器等都是开源免费工具,具有经济可行性。项目并未将整个系统功能全部实现,如果需要完整实现还需要后续投入改进,具有技术可行性。系统具有完整的学习、管理功能,具有操作可行性。
系统分为系统管理员与普通用户,系统管理员用户管理后台,普通用户可以正常访问系统所有对外开放播放、下载的功能。
管理员登录用例图:
图1
用户登录注册用例图:
图2
系统分为管理员和普通用户。
系统管理员:系统管理员可以进入后台,后台首先进入首页、然后用管理中心负责对音乐文件进行增加和删除,还可以增加对新出歌曲的推送信息或广告信息,推送在首页。
一般用户:一般用户可以访问除后台管理外的所有功能。主要分为网站首页、歌曲搜索、推荐歌曲、个人中心。网站首页展示有新出歌曲的推送或者广告等信息;歌曲搜索可以模糊匹配也可以进行歌曲名的匹配搜索;歌曲下载可也根据所搜索或者在听的歌曲进行下载;通过在听音乐可以对该歌曲进行评论;个人中心主要是个人资料版块。
4 系统设计
系统具有多个系统实例,实例之间具有许多联系,如下为ER图,展示了实体间的关系。
图3
该歌曲推荐管理系统主要涉及7个数据表,包括用户数据表user,管理员数据表administrator,歌曲数据表music,评论数据表comment,评分数据表score,歌曲推荐数据表recommend,消息推送数据表send。
系统后台代码我们使用MVC分层设计思想,service为服务层,dao与数据库交互层,bean为实体类层,common为公共类层,web为与前台页面交互的网络层。
图4
5 系统测试
软件开发离不开软件测试的验证,所以对于其他功能模块,我们采用了黑盒测试,对歌曲推荐管理系统登录与注册模块进行了测试,预期效果和测试结果一致,表明我们的系统满足项目需求,可以正常的使用。测试图如下:
图5
图6
我们测试所使用平台信息如下
硬件: CPU,i5 2.5 GHz;内存8G以上。
软件:系统Ubuntu;MySQL 5.7.16数据库;Tomcat7.0服务器;Eclipse Jee Neon;JDK 1.8.0_91;
6 总结
通过几个月来对本系统的分析,设计到开发,我充分体会到了一个完整的系统开发需要做的任务量有多么大,以及对整个系统的大致设计思路和具体实现是完全不一样的,这也代表了未来客户的需求和我们的开发的难度是很大的,充分表明了理论和实际结合的重要性。认识到系统开发中应该注重系统的规划和按步骤一步一步的进行实施。系统作为一个多模块、多页面的整体,我们不仅需要考虑到系统的功能实现,也要考虑到一个美观的页面将系统展现给用户。同时对此系统的开发也是一个机会让我去巩固以前所学的计算机软件开发知识,当然也有很多自己没接触过的知识,所以这也是一个掌握新技能的过程。
7 参考文献
[1]《面向对象程序设计java语言》——杜春涛 编著 中国铁道出版社,2009年8月
[2]《数据库系统概论》——萨师煊 王珊 编著 高等教育出版社 2010年2月
[3]《软件工程》——陆惠恩 编著 人民邮电出版社 2009年8月
[4]《JSP程序设计实例教程》——刘志成 主编 人民邮电出版社 2009年5月
[5]《Hadoop权威指南》——(美)怀特 清华大学出版社 2010年5月
[6]《Dreamweaver应用基础教程》——颜虹 主编 上海科技普及出版社 2010年2月
[7]《Hadoop实战》——Chuck Lam 编著 人民邮电出版社 2011年10月
[8]张少华,姚正阳,袁晓勇,等.一种高度集中的数字社区管理系统[J],智能建筑,2008(3):64-67.
[9]李红等编著.管理信息系统开发与应用.[M].电子工业出版社,2003年:8页
[10]郭汉军.吴健强.学生管理信息系统的开发[J].新疆大学学报(自然科学版),2006年
[11]王晟.韩泽坤.Access数据库开发经典案例解析.[M].清华大学出版社:76页
[12]蔡长安,王琪.基于B/S模式的学生信息管理系统设计与实现.计算机工程与设计,2006年7月.第27卷第14期:
[13]周之英编著.现代软件工程.[M].科学出版社,2003年.下册:22页
[14]韩万江.软件工程案例教程[M].北京:机械工业出版社,2007:55—99.
[15]斯蒂芬·哈格(Stephen Haag),梅芙·卡明斯(Maeve Cummings)著,严建援等译.哈格管理信息系统(第2版).北京:中国人民大学出版社,2009:337.341