劉卓 崔忠偉
摘要:高速發(fā)展的信息技術和迅速增加的數據,給人們的生活帶來困惑,推薦系統(tǒng)(Recommender System)可以從海量的用戶瀏覽信息中,根據用戶的特點,選擇出特定的內容推薦給用戶,推薦系統(tǒng)給用戶提供了極大的便捷,但是,目前的推薦系統(tǒng)在空間存儲的可擴展性與算法的效率存在缺陷,基于Hadoop構架的推薦系統(tǒng)解決了這一缺陷,它經濟適用強,效率高,并且極大的提高了基于分布式計算Hadoop構架能夠解決推薦系統(tǒng)的可擴展性問題,同時,對于大數據技術在實際中的應用具有實際意義。
關鍵詞:Hadoop構架;大數據技術;推薦系統(tǒng)平臺
中圖分類號:TP311 文獻標識碼:A 文章編號: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概述
隨著電子商務的快速發(fā)展,網上商品的種類和數量日益繁雜,顧客面對選擇的時候,往往不知道從何抉擇,為了解決這一個困惑,推薦系統(tǒng)平臺應運而生, 目前,推薦系統(tǒng)平臺引領了各個搜索型網站,交友軟件的好友推薦、美團網網站的熱門推薦、購物網站的商品推薦、視頻網站的電影推薦、資源網站的優(yōu)質資源推薦等,這些推薦系統(tǒng)提高各個網站的點擊率和銷售額,影響著人們的學習、生活、工作。
Hadoop,是大數據技術的核心技術,即分布式系統(tǒng)基礎構架,主要有HDFS和MapReduce兩部分組成,它能夠實現(xiàn)對大量數據的存儲和計算,能夠將多臺普通或者低性能的服務器組合成分布式的運算集聚。如果我們把Hadoop的這一特性應用到推薦系統(tǒng),勢必能夠提高推薦系統(tǒng)的推薦范圍和推薦的精準度[1],,克服了目前的推薦系統(tǒng)在空間存儲的可擴展性與算法的效率存在缺陷。
2 Hadoop
2.1 HDFS
HDFS即分布式文件系統(tǒng),由block、namenode和datanode組成,是Hadoop的核心技術之一,主要是超大文件的存儲和超高效的訪問模式,它可以存儲GB、TB的文件,它所存儲的數據集既是我們的分析對象,我們可以借助HDFS長時間對這些數據進行分析,它的一個顯著的優(yōu)點就是可以運行在普通的服務器上面,但是它在數據訪問時要求高延遲,在存儲大量的小文件時,內存可能跟不上要求,目前HDFS只支持單個用戶寫,無法滿足多個用戶并行寫。
基于HDFS的上述特點,我們對HDFS(分布式文件系統(tǒng))的遵守的原則如下:
1)訪問的透明性:在分布式文件系統(tǒng)中,對于本地文件和遠程資源的訪問,用戶可以通過同樣的操作完成;2)位置的透明性:在不改變文件路徑的前提下,使用同樣的文件命名空間,那么在這種前提下,文件可以重新被定位,在HDFS文件中,我們只使用一個namenode來管理文件系統(tǒng),我們可以根據block副本的數量來重新復制;3)移動的透明性:這個有namenode的edits中的日記文件對文件的移動、復制,增加因子等變化進行記錄,而客戶端和客戶端程序并不需要改變什么;4)性能的透明性:HDFS一個顯著的優(yōu)點就是能夠在普通廉價的服務器上面,它的性能可以參看首頁上的benchmark。
2.2 MapReduce
MapReduce是Hadoop的核心技術,通過映射和化簡來實現(xiàn)大量數據的并行計算,是大數據計算的開發(fā)模式和思想方法,先把一個大的問題進行分解成小問題,找出各個小問題的并行處理部分,在根據相關要求寫出Map程序,接下來可使用服務器群來執(zhí)行Map程序[2],每一個服務器可執(zhí)行Map程序的一個并行小段,對于Map程序的執(zhí)行結果,通過Reduce程序來實現(xiàn)執(zhí)行結果的合并,最終,就可以合并出最終的完整結果[3]。例如:你要在一個瀏覽器中搜索“computer”,可以先通過Map程序找出每一個網頁中這個詞語的位置,然后在使用Reduce程序獲得相應的URL,這樣就可以得到最終的搜索結果[4]。
3基于Hadoop的推薦系統(tǒng)的設計
3.1算法模型
以前的推薦系統(tǒng)平臺常用的算法模型是最近鄰模型;基于矩陣分解的模型;社會網絡圖模型;Hadoop出現(xiàn)以后,我們把Hadoop構架和推薦系統(tǒng)的算法模型結合,即分布式基于物品的協(xié)同過濾算法,算法的主要思想:
1) 建立物品的同現(xiàn)矩陣:根據用戶的瀏覽記錄,兩兩一組對瀏覽記錄進行計數,同現(xiàn)矩陣如圖1所示。
2)建立用戶對物品的評分矩陣:找個用戶對某一個物品的評分,評分矩陣如圖2:
3)通過對物品同現(xiàn)矩陣和評分矩陣的計算,得出推薦結果,即表達為:同現(xiàn)矩陣*評分矩陣=推薦結果,經過計算得出推薦結果如圖3:
4)使用MapReduce完成最終計算
1使用Map程序,根據用戶分組,計算出相應物品的組合列表得,得到評分矩陣;
2使用Map程序,建立相應物品的同現(xiàn)矩陣;
3使用Reduce程序,合并矩陣并計算結果列表。
以上是計算模型,模型本身并復雜,但是面對海量的數據存儲時Hadoop就能夠發(fā)揮它實現(xiàn)大量數據儲存和大量數據計算的功能。
3.2推薦系統(tǒng)構架設計
結合算法設計模型,我們把算法設計成如下步驟:
1) 在Application中的Database記錄了用戶的瀏覽記錄和對某項物品的打分記錄;
2) 通過CRON(系統(tǒng)定時器),每隔一段時間,把Database中記錄的數據導入到HDFS;
3) 數據導入完成后,系統(tǒng)啟動MapReduce程序,運行推薦系統(tǒng)模型算法;
4) 計算完畢后,從HDFS中導出數據到數據庫中。
3.3 MapReduce程序設計
我們使用Map程序把大任務分解成各個并行的小任務,在依靠Reduce程序進行合并計算[5],在MapReduce程序設計中我們主要采用java語言,有main.java、frist1.java、frist2. Java和frist3. Java四個主要的程序組成。
1) 啟動主任務:main.java ,在主任務中,給出各個分程序的路徑;
2) 計算評分矩陣:frist1.java,依據算法模型,根據用戶分組的不同,得出各個分組的評分;
3) 計算同現(xiàn)矩陣:frist2. Java;
4) 計算推薦結果:frist3. Java,依據算法模型:推薦結果=同現(xiàn)矩陣*評分矩陣;
3.4 設計的優(yōu)缺點
基于Hadoop構架的推薦系統(tǒng)能夠在大范圍內、高效率精準地進行推薦,極大的改變現(xiàn)在推薦系統(tǒng)有限的推薦范圍,同時,由于Hadoop的成本并不高,設計成本合理,使用性強,是大數據技術的又一個經典實例。
在MapReduce程序設計frist3. Java這一步驟的運行過程中,這種程序設計具有明顯的缺陷:Hadoop讀入順序不能夠隨便制定,面對多個節(jié)點的Hadoop集群環(huán)境,假如有兩個輸入集,那么輸入的順序有可能發(fā)生錯誤,進而導致產生空指針。這個計算過程,同現(xiàn)矩陣和評分矩陣存儲過大,在內存中進行存儲和計算,如果矩陣存儲量過大,會造成單個節(jié)點的存儲不足[6]。
4總結
在大數據技術的熱潮影響下,各行各業(yè)已經受到極大的影響,大數據的關鍵性技術Hadoop具有較強的應用市場,本文把目前流行的推薦系統(tǒng)平臺和Hadoop構建融合在一起,克服了目前的推薦系統(tǒng)在空間存儲的可擴展性與算法的效率存在缺陷,它經濟適用強,效率高,并且極大地提高了基于分布式計算Hadoop構架能夠解決推薦系統(tǒng)的可擴展性問題,對于大數據技術在實際中的應用具有重要的意義。
但是,目前基于Hadoop構架的推薦系統(tǒng)還存在一點的缺陷,由于Hadoop平臺中數據的輸入順序無法限定,容易造成數據的混淆,造成誤差,在以后Hadoop版本中我們要積極解決這些問題,使Hadoop技術更加成熟和完善。
參考文獻:
[1] 林清瀅.基于Hadoop的云計算模型[J].現(xiàn)代計算機,2013(7) :114-118.
[2] 陶冶.基于MapReduce的分布式Web服務搜索引擎研究與實現(xiàn)[D].湘潭:湖南科技大學,2012.
[3] 李光.MapReduce型海量數據處理平臺中的內存級數據緩存技術研究[D]. 北京:北京工業(yè)大學,2013.
[4] 陳飛.MapReduce模式下的位置服務數據索引設計與應用[D]. 天津:天津大學,2012.
[5] 孫廣中,肖鋒,曦.MapReduce模型的調度及容錯機制研究[J].微電子學與計算機,2012(09) :134-138.
[6] 盧強.基于MapReduce的移動學習用戶群聚類分析[D].武漢:華中師范大學,2013.