張贏宇,鄧立國
(沈陽師范大學教育技術學院,沈陽 110034)
基于Hadoop與Mahout云數據挖掘推薦研究
張贏宇,鄧立國
(沈陽師范大學教育技術學院,沈陽110034)
濰坊教育學院青年計劃(No.201102js)
中國2015年的“雙十一”又一次震驚了世界,阿里公司當日系統交易額峰值達到每秒鐘14萬筆,并且支付峰值達到每秒8.59萬筆。與2009年首屆“雙十一”相比,訂單峰值增長了350倍,支付峰值增長了430倍。大數據正在人們經濟生活中扮演越來越重要的角色。《中共中央關于制定國民經濟和社會發展第十三個五年規劃的建議》提出,實施國家大數據戰略,推進數據資源開放共享。利用互聯網手段提升資源配置效率正成為經濟發展的“標配”。信息技術與經濟社會的交匯融合引發了數據迅猛增長,數據已成為國家基礎性戰略資源,大數據正日益對全球生產、流通、分配、消費活動以及經濟運行機制、社會生活方式和國家治理能力產生重要影響[1]。
除了數據量的增長之外,結構化與非結構化數據存儲和處理,用戶需求種類的多樣化等問題也為當今IT領域提出了更高的要求,傳統的關系型數據庫技術已經無法滿足社會的需求[2]。而Hadoop軟件框架的發展與工具的應用越來越成熟,實現對海量數據的存儲與計算,成就了新一代的大數據云平臺[3]。將海量的數據存儲在云端只是解決了數據的存儲問題,如何滿足用戶的需求,將云數據轉化為對用戶有價值的信息并推薦給用戶才是關鍵。
在大數據時代,政治、經濟、商業、教育等領域的決策行為將更加依托于數據存儲、計算與挖掘。針對特定應用領域的大規模結構化和非結構化數據,由于大量的數據和復雜的數據結構導致系統服務器響應時間過長,需求信息不精確等問題為用戶帶來了極大的不便[4]。因此根據需要研究基于云數據的數據挖掘和推薦系統,以更加精確、快速的方式在特定領域中對大量結構與非結構化的數據進行挖掘,并為企事業和個人用戶提供服務支持。
1.1云數據挖掘推薦系統
現如今,云數據挖掘推薦系統的研究已經受到了國內外眾多行業領域的關注。云數據挖掘推薦系統由分布式文件系統、并行分布式計算和分布式數據庫三大部分構成。其中分布式文件系統HDFS為海量數據提供了存儲服務;分布式計算MapReduce為數據提供了計算;分布式數據庫為系統提供了高效的、并發的結構化數據服務[5]。
●分布式文件系統
HDFS是Hadoop項目的核心子項目,Hadoop分布式文件系統 (Hadoop Distributed File System,HDFS)是分布式計算中數據存儲管理的基礎,是基于流數據模式訪問和處理超大文件的需求而開發的,可以運行于廉價的服務器上[6]。為超大數據集(Large Data Set)的應用處理帶來了很多便利。HDFS是一個主/從體系結構,擁有一個NameNode和一些DataNode。NameNode節點管理文件系統的元數據,DataNode節點負責存儲基礎數據。在邏輯空間上,用戶感覺到的數據是一個文件存儲,但在物理空間上,則是將大文件分解成為一個個數據塊進行存儲(默認64MB),提高容錯性,在進行I/O操作時可以并行操作,使系統具有高吞吐量的特點。不僅如此,可擴展性和可靠性也是HDFS的特點。
●分布式計算MapReduce
MapReduce是由Google公司提出的一種分布式計算模型,最初主要應用于搜索領域,解決大規模數據的計算問題。它的核心設計理念是移動計算,而不是移動數據。MapReduce計算框架是通過鍵/值(key/value)對數據進行操作處理的,可以看作先進行Map操作:(K1,V1)→List(K2,V2),然后進行Reduce操作:(K2,List(V2))→(K3,V3)[7]。用戶只需要實現Map和Reduce兩個函數,然后MapReduce會對任務劃分,即可實現分布式并行計算,非常簡單。
●分布式數據庫HBase
HBase是Apache的Hadoop項目的子項目,作為一個分布式的、非結構化的、面向列的數據庫,該技術最初源于Google論文Bigtable。HBase在Hadoop之上提供了類似Bigtable的能力。HBase和其他的非關系數據庫不同,第一,它是非常適和作為對非結構化數據進行存儲的數據庫;另外,HBase是面向列的,而不是面向行的模式。HBase具有高可靠性、高效性、高可伸縮性等特點,根據HBase技術這些特點,開發者可以在廉價的PC Server上快速搭建大規模的結構化存儲平臺。
1.2基于Hadoop與Mahout的云數據挖掘推薦研究
利用數據挖掘來進行數據分析的常用方法主要有分類、回歸分析、聚類、關聯規則等,它們分別從不同的角度對數據進行挖掘[8]。Mahout主要目標是創建一些可伸縮、可擴展的機器學習算法,Mahout包含許多實現,包括集群、分類、CP和進化程序等。不僅這樣,利用Hadoop庫,Mahout可以有效地應用擴展到云平臺中[9]。
Mahout算法框架提供了很多推薦器供開發者使用,基于用戶推薦、基于項目推薦等,還有一種Slope one推薦策略,當數據量較大時,計算量會很大,導致推薦效率較差。因此Mahout提供了一種更加輕量級的推薦策略Slope One(Daniel Lemire和Anna Maclachlan在2005年提出的基于評分協同過濾推薦引擎的改進方法)。Slope One的核心優勢是,對大規模數據依然能保證良好的計算速度和推薦效果。
假設系統對物品A,物品B和物品C的平均評分分別是2,5和5(如圖1)。

圖1
基于Slope One的方法會的到以下規律。
●用戶對物品B的評分=用戶對物品A的評分+1
●用戶對物品B的評分=物品C的評分。
基于以上規律,可以對用戶A和用戶B的打分進行預測。
●用戶A,給物品A打4分,可以推測對物品B的評分是5,對物品C的打分也是5。
用戶B,給物品A打2分,給物品C打分5,根據第一條規律,可以判斷他對物品B的評分是3,而根據第二條規律,判斷評分是5,可以對各種規則得到的推斷進行取平均值,所得出的判斷是4。
這就是Slope One推薦的基本原理,將用戶評分之間的關系看做簡單的線性關系,Y=mX+b,當m=1時就是Slope One。
代碼如下:
Packpage mahout;
Public static void recommenderModelEvaluation(DataModel)
Throws TasteException{
RecommenderEvaluator evaluator=new AverageAbsolute-Difference recommenderEvaluator();
RandomUtils.useTestSeed();
RecommenderBuilder builder=new RecommenderBuilder (){
Long diffStorageNb=100000;
Public Recommender buildRecommender(DataModel dm) throws TasteException{
DiffSorage diffStorage=new MemoryDiff-Storage(dm,
Weighting.WEIGHTED,diffStorageNb);
ReturnnewSlopeOneRecommender(dm,Weighting. WEIGHTED,diffStorage);
}
};
}
Public static void main(String[]args)
throws IOException,TasteException{
DataModel model=new FileDataModel(new File(“data/dating/ratings.dat”));
RecommendermModelEvaluation(model);
}
本文提出了基于Hadoop和Mahout云數據挖掘推薦相關研究,通過并行化的架構和并行化的算法,處理并分析龐大的數據集,同時利用Mahout工具中的Slope one推薦策略分析解決了傳統數據管理無法對云端數據進行深度挖掘與推薦的問題,讓云數據轉化成真正對用戶有價值的信息和知識,并使其在特定的領域得以實現和驗證。
[1]周寶曜,劉偉,范承工主編.大數據:戰略 技術 實踐.電子工業出版社,2013.
[2]張雨佳,蘇中濱.半結構化數據的動態樹存儲模型研究[J].計算機應用與軟件,2011,28(5):86-90.
[3]韓晶.大數據服務若干關鍵技術研究[D].北京:北京郵電大學,2013.
[4]謝華成,陳向東.面向云存儲的非結構化數據存取[J].計算機應用,2012,32(7):1924-1928,1942.
[5](美)拉姆.Hadoop實戰[M].韓冀中譯,北京:人民郵電出版社,2011:3-4.
[6]陳璐基.基于云計算的海量數據存儲技術的研究及應用[D].湖北武漢科技大學,2011,4.
[7]朱玉全,楊鶴標,孫蕾.數據挖掘技術[M].南京:東南大學出版社,2006.
[8]李偉衛,趙航,張陽等.基于MapReduce的海量數據挖掘技術研究[J].Computer Engineering and Applications,2013,49(20).
[9]Apache Software Foundation.Mahout[EB/OL].(2013-10-16).[2013-11-06].http://mahout.apache.org/.
Cloud Data;Hadoop;Mahout;Data Mining;Recommendation Strategy
Research on Cloud Data Mining Recommend Based on Hadoop and Mahout
ZHANG Ying-yu,DENG Li-guo
(College of Education Technology,Shenyang Normal University,Shenyang 110034)
張贏宇(1989-),男,遼寧丹東人,研究生,研究方向為最優化理論、云計算鄧立國(1971-),男,遼寧沈陽人,副教授,碩士,碩士研究生導師
2015-11-26
2015-12-23
隨著社會信息化時代的到來,數據成為IT領域發展最重要的決定性因素。任何事都必須用數據來說話。大數據浪潮洶涌來襲。將海量的數據資源存儲在云端,形成整合統一便于管理的云數據,從而方便用戶高效、精確地獲取使用信息。云數據的核心并不在于數據量的大小,而是我們能否成功挖掘出云數據的價值。因此,提出一種基于Hadoop和Mahout的云數據挖掘推薦研究。通過并行化的架構和并行化的算法,處理并分析龐大的數據集,解決傳統數據管理無法對云端數據進行深度挖掘的問題,讓云數據轉化成真正對用戶有價值的信息和知識,并使其在特定的領域得以實現和驗證。
云數據;Hadoop;Mahout;數據挖掘;推薦策略
With the advent of social informatization,the data become the most important decisive factor in IT field.Everything must use numbers to talk.Big data wave comes.To store vast amounts of data resources in the cloud,forming manageable cloud data,thus it is easy to efficient and accurate use information.The core of the cloud data is not the size of the amount of data,but whether we can succeed to dig value of cloud data.Therefore,proposes a cloud based on Hadoop and Mahout recommended data mining research.Through parallel architecture and parallel algorithm,it processes and analyzes large data sets,solves the traditional data management on the depth of the cloud data mining problems,which lets cloud data translate into a truly valuable information and knowledge to the customer,and makes it implemented and validated in a particular area.