劉卓 崔忠偉
摘要:高速發(fā)展的信息技術(shù)和迅速增加的數(shù)據(jù),給人們的生活帶來困惑,推薦系統(tǒng)(Recommender System)可以從海量的用戶瀏覽信息中,根據(jù)用戶的特點(diǎn),選擇出特定的內(nèi)容推薦給用戶,推薦系統(tǒng)給用戶提供了極大的便捷,但是,目前的推薦系統(tǒng)在空間存儲(chǔ)的可擴(kuò)展性與算法的效率存在缺陷,基于Hadoop構(gòu)架的推薦系統(tǒng)解決了這一缺陷,它經(jīng)濟(jì)適用強(qiáng),效率高,并且極大的提高了基于分布式計(jì)算Hadoop構(gòu)架能夠解決推薦系統(tǒng)的可擴(kuò)展性問題,同時(shí),對于大數(shù)據(jù)技術(shù)在實(shí)際中的應(yīng)用具有實(shí)際意義。
關(guān)鍵詞:Hadoop構(gòu)架;大數(shù)據(jù)技術(shù);推薦系統(tǒng)平臺(tái)
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)12-0012-03
The Recommendation System Based on Hadoop Structure
LIU Zhuo 1,2, CUI Zhong-wei1,2
(1.School of Mathematics and Computer Science,Guiyang Normal College,Guiyang 550018, China 2.Industrial Internet of Things Engineering Research Center of the Higher Education Institutions of Guizhou Province, Guiyang 550018, China)
Abstract: the rapid development of information technology and the rapid increase of data give the people life confusion, according to the user characteristic the recommendation system can select the specific content from the mass of user browsing information ,which provides the user with great convenience, but, at present, the recommendation system has defects in the space storage scalability and the algorithm deficiency, the recommendation system based on Hadoop structure solves the defects, and it is affordable, high efficiency, and greatly improves the scalability problem based on the Hadoop distributed framework ,also which has an important significance for the application of big data technology in practice.
Key words: Hadoop framework; the Big Data; the Recommendation System
1概述
隨著電子商務(wù)的快速發(fā)展,網(wǎng)上商品的種類和數(shù)量日益繁雜,顧客面對選擇的時(shí)候,往往不知道從何抉擇,為了解決這一個(gè)困惑,推薦系統(tǒng)平臺(tái)應(yīng)運(yùn)而生, 目前,推薦系統(tǒng)平臺(tái)引領(lǐng)了各個(gè)搜索型網(wǎng)站,交友軟件的好友推薦、美團(tuán)網(wǎng)網(wǎng)站的熱門推薦、購物網(wǎng)站的商品推薦、視頻網(wǎng)站的電影推薦、資源網(wǎng)站的優(yōu)質(zhì)資源推薦等,這些推薦系統(tǒng)提高各個(gè)網(wǎng)站的點(diǎn)擊率和銷售額,影響著人們的學(xué)習(xí)、生活、工作。
Hadoop,是大數(shù)據(jù)技術(shù)的核心技術(shù),即分布式系統(tǒng)基礎(chǔ)構(gòu)架,主要有HDFS和MapReduce兩部分組成,它能夠?qū)崿F(xiàn)對大量數(shù)據(jù)的存儲(chǔ)和計(jì)算,能夠?qū)⒍嗯_(tái)普通或者低性能的服務(wù)器組合成分布式的運(yùn)算集聚。如果我們把Hadoop的這一特性應(yīng)用到推薦系統(tǒng),勢必能夠提高推薦系統(tǒng)的推薦范圍和推薦的精準(zhǔn)度[1],,克服了目前的推薦系統(tǒng)在空間存儲(chǔ)的可擴(kuò)展性與算法的效率存在缺陷。
2 Hadoop
2.1 HDFS
HDFS即分布式文件系統(tǒng),由block、namenode和datanode組成,是Hadoop的核心技術(shù)之一,主要是超大文件的存儲(chǔ)和超高效的訪問模式,它可以存儲(chǔ)GB、TB的文件,它所存儲(chǔ)的數(shù)據(jù)集既是我們的分析對象,我們可以借助HDFS長時(shí)間對這些數(shù)據(jù)進(jìn)行分析,它的一個(gè)顯著的優(yōu)點(diǎn)就是可以運(yùn)行在普通的服務(wù)器上面,但是它在數(shù)據(jù)訪問時(shí)要求高延遲,在存儲(chǔ)大量的小文件時(shí),內(nèi)存可能跟不上要求,目前HDFS只支持單個(gè)用戶寫,無法滿足多個(gè)用戶并行寫。
基于HDFS的上述特點(diǎn),我們對HDFS(分布式文件系統(tǒng))的遵守的原則如下:
1)訪問的透明性:在分布式文件系統(tǒng)中,對于本地文件和遠(yuǎn)程資源的訪問,用戶可以通過同樣的操作完成;2)位置的透明性:在不改變文件路徑的前提下,使用同樣的文件命名空間,那么在這種前提下,文件可以重新被定位,在HDFS文件中,我們只使用一個(gè)namenode來管理文件系統(tǒng),我們可以根據(jù)block副本的數(shù)量來重新復(fù)制;3)移動(dòng)的透明性:這個(gè)有namenode的edits中的日記文件對文件的移動(dòng)、復(fù)制,增加因子等變化進(jìn)行記錄,而客戶端和客戶端程序并不需要改變什么;4)性能的透明性:HDFS一個(gè)顯著的優(yōu)點(diǎn)就是能夠在普通廉價(jià)的服務(wù)器上面,它的性能可以參看首頁上的benchmark。
2.2 MapReduce
MapReduce是Hadoop的核心技術(shù),通過映射和化簡來實(shí)現(xiàn)大量數(shù)據(jù)的并行計(jì)算,是大數(shù)據(jù)計(jì)算的開發(fā)模式和思想方法,先把一個(gè)大的問題進(jìn)行分解成小問題,找出各個(gè)小問題的并行處理部分,在根據(jù)相關(guān)要求寫出Map程序,接下來可使用服務(wù)器群來執(zhí)行Map程序[2],每一個(gè)服務(wù)器可執(zhí)行Map程序的一個(gè)并行小段,對于Map程序的執(zhí)行結(jié)果,通過Reduce程序來實(shí)現(xiàn)執(zhí)行結(jié)果的合并,最終,就可以合并出最終的完整結(jié)果[3]。例如:你要在一個(gè)瀏覽器中搜索“computer”,可以先通過Map程序找出每一個(gè)網(wǎng)頁中這個(gè)詞語的位置,然后在使用Reduce程序獲得相應(yīng)的URL,這樣就可以得到最終的搜索結(jié)果[4]。
3基于Hadoop的推薦系統(tǒng)的設(shè)計(jì)
3.1算法模型
以前的推薦系統(tǒng)平臺(tái)常用的算法模型是最近鄰模型;基于矩陣分解的模型;社會(huì)網(wǎng)絡(luò)圖模型;Hadoop出現(xiàn)以后,我們把Hadoop構(gòu)架和推薦系統(tǒng)的算法模型結(jié)合,即分布式基于物品的協(xié)同過濾算法,算法的主要思想:
1) 建立物品的同現(xiàn)矩陣:根據(jù)用戶的瀏覽記錄,兩兩一組對瀏覽記錄進(jìn)行計(jì)數(shù),同現(xiàn)矩陣如圖1所示。
2)建立用戶對物品的評(píng)分矩陣:找個(gè)用戶對某一個(gè)物品的評(píng)分,評(píng)分矩陣如圖2:
3)通過對物品同現(xiàn)矩陣和評(píng)分矩陣的計(jì)算,得出推薦結(jié)果,即表達(dá)為:同現(xiàn)矩陣*評(píng)分矩陣=推薦結(jié)果,經(jīng)過計(jì)算得出推薦結(jié)果如圖3:
4)使用MapReduce完成最終計(jì)算
1使用Map程序,根據(jù)用戶分組,計(jì)算出相應(yīng)物品的組合列表得,得到評(píng)分矩陣;
2使用Map程序,建立相應(yīng)物品的同現(xiàn)矩陣;
3使用Reduce程序,合并矩陣并計(jì)算結(jié)果列表。
以上是計(jì)算模型,模型本身并復(fù)雜,但是面對海量的數(shù)據(jù)存儲(chǔ)時(shí)Hadoop就能夠發(fā)揮它實(shí)現(xiàn)大量數(shù)據(jù)儲(chǔ)存和大量數(shù)據(jù)計(jì)算的功能。
3.2推薦系統(tǒng)構(gòu)架設(shè)計(jì)
結(jié)合算法設(shè)計(jì)模型,我們把算法設(shè)計(jì)成如下步驟:
1) 在Application中的Database記錄了用戶的瀏覽記錄和對某項(xiàng)物品的打分記錄;
2) 通過CRON(系統(tǒng)定時(shí)器),每隔一段時(shí)間,把Database中記錄的數(shù)據(jù)導(dǎo)入到HDFS;
3) 數(shù)據(jù)導(dǎo)入完成后,系統(tǒng)啟動(dòng)MapReduce程序,運(yùn)行推薦系統(tǒng)模型算法;
4) 計(jì)算完畢后,從HDFS中導(dǎo)出數(shù)據(jù)到數(shù)據(jù)庫中。
3.3 MapReduce程序設(shè)計(jì)
我們使用Map程序把大任務(wù)分解成各個(gè)并行的小任務(wù),在依靠Reduce程序進(jìn)行合并計(jì)算[5],在MapReduce程序設(shè)計(jì)中我們主要采用java語言,有main.java、frist1.java、frist2. Java和frist3. Java四個(gè)主要的程序組成。
1) 啟動(dòng)主任務(wù):main.java ,在主任務(wù)中,給出各個(gè)分程序的路徑;
2) 計(jì)算評(píng)分矩陣:frist1.java,依據(jù)算法模型,根據(jù)用戶分組的不同,得出各個(gè)分組的評(píng)分;
3) 計(jì)算同現(xiàn)矩陣:frist2. Java;
4) 計(jì)算推薦結(jié)果:frist3. Java,依據(jù)算法模型:推薦結(jié)果=同現(xiàn)矩陣*評(píng)分矩陣;
3.4 設(shè)計(jì)的優(yōu)缺點(diǎn)
基于Hadoop構(gòu)架的推薦系統(tǒng)能夠在大范圍內(nèi)、高效率精準(zhǔn)地進(jìn)行推薦,極大的改變現(xiàn)在推薦系統(tǒng)有限的推薦范圍,同時(shí),由于Hadoop的成本并不高,設(shè)計(jì)成本合理,使用性強(qiáng),是大數(shù)據(jù)技術(shù)的又一個(gè)經(jīng)典實(shí)例。
在MapReduce程序設(shè)計(jì)frist3. Java這一步驟的運(yùn)行過程中,這種程序設(shè)計(jì)具有明顯的缺陷:Hadoop讀入順序不能夠隨便制定,面對多個(gè)節(jié)點(diǎn)的Hadoop集群環(huán)境,假如有兩個(gè)輸入集,那么輸入的順序有可能發(fā)生錯(cuò)誤,進(jìn)而導(dǎo)致產(chǎn)生空指針。這個(gè)計(jì)算過程,同現(xiàn)矩陣和評(píng)分矩陣存儲(chǔ)過大,在內(nèi)存中進(jìn)行存儲(chǔ)和計(jì)算,如果矩陣存儲(chǔ)量過大,會(huì)造成單個(gè)節(jié)點(diǎn)的存儲(chǔ)不足[6]。
4總結(jié)
在大數(shù)據(jù)技術(shù)的熱潮影響下,各行各業(yè)已經(jīng)受到極大的影響,大數(shù)據(jù)的關(guān)鍵性技術(shù)Hadoop具有較強(qiáng)的應(yīng)用市場,本文把目前流行的推薦系統(tǒng)平臺(tái)和Hadoop構(gòu)建融合在一起,克服了目前的推薦系統(tǒng)在空間存儲(chǔ)的可擴(kuò)展性與算法的效率存在缺陷,它經(jīng)濟(jì)適用強(qiáng),效率高,并且極大地提高了基于分布式計(jì)算Hadoop構(gòu)架能夠解決推薦系統(tǒng)的可擴(kuò)展性問題,對于大數(shù)據(jù)技術(shù)在實(shí)際中的應(yīng)用具有重要的意義。
但是,目前基于Hadoop構(gòu)架的推薦系統(tǒng)還存在一點(diǎn)的缺陷,由于Hadoop平臺(tái)中數(shù)據(jù)的輸入順序無法限定,容易造成數(shù)據(jù)的混淆,造成誤差,在以后Hadoop版本中我們要積極解決這些問題,使Hadoop技術(shù)更加成熟和完善。
參考文獻(xiàn):
[1] 林清瀅.基于Hadoop的云計(jì)算模型[J].現(xiàn)代計(jì)算機(jī),2013(7) :114-118.
[2] 陶冶.基于MapReduce的分布式Web服務(wù)搜索引擎研究與實(shí)現(xiàn)[D].湘潭:湖南科技大學(xué),2012.
[3] 李光.MapReduce型海量數(shù)據(jù)處理平臺(tái)中的內(nèi)存級(jí)數(shù)據(jù)緩存技術(shù)研究[D]. 北京:北京工業(yè)大學(xué),2013.
[4] 陳飛.MapReduce模式下的位置服務(wù)數(shù)據(jù)索引設(shè)計(jì)與應(yīng)用[D]. 天津:天津大學(xué),2012.
[5] 孫廣中,肖鋒,曦.MapReduce模型的調(diào)度及容錯(cuò)機(jī)制研究[J].微電子學(xué)與計(jì)算機(jī),2012(09) :134-138.
[6] 盧強(qiáng).基于MapReduce的移動(dòng)學(xué)習(xí)用戶群聚類分析[D].武漢:華中師范大學(xué),2013.