金英華,張 巖
(沈陽師范大學(xué),沈陽 110034)
在近些年的開源云平臺中,Hadoop平臺可以算是最為成功的、也是接受度最為廣泛的云平臺技術(shù)框架,在一定程度上,它也已成為了一種在大數(shù)據(jù)處理事實上的行業(yè)標準,得到了IT業(yè)界的廣泛認可。
Hadoop平臺在性能和功能方面也有其不足之處,其發(fā)展的歷程也是其進行不斷改進歷程,在2007年首個版本推出以來,其發(fā)布的版本數(shù)量目前已經(jīng)達到數(shù)十個版本。Hadoop的設(shè)計目標最初是面對高吞吐率的離線批處理的,以及其自身在系統(tǒng)構(gòu)架的設(shè)計上有很多先天性的不足,盡管大批的Hadoop支持者在開源社區(qū)里,一直致力于在程序源碼和系統(tǒng)結(jié)構(gòu)上地不斷改進,還有就是在作業(yè)的執(zhí)行響應(yīng)上性能低而難以去滿足高效的實時低延遲查詢分析的數(shù)據(jù)處理需求,MapReduce模型框架的靈活度不高難以提供更靈活的編程能力、對迭代計算、流式計算、圖計算等支持度不高。
物流平臺的WEB架構(gòu),采用負載均衡加應(yīng)用集群結(jié)構(gòu)進行并發(fā)和高可用的擴展設(shè)計,其整體的功能框架如圖1所示。

圖1 平臺架構(gòu)圖
WEB平臺系統(tǒng)代碼的軟件開發(fā)框架采用java web技術(shù)中成熟的SSI框架,進行模塊化擴展模式開發(fā),主要的功能模塊包括了GPS應(yīng)用服務(wù)、移動WEB服務(wù)、網(wǎng)站W(wǎng)EB服務(wù)等。同時對第三方服務(wù)進行接入,功能模塊之間開放接口進行通信交互,數(shù)據(jù)接口層對SpringDAO和IBatis進行封裝設(shè)計,后臺的關(guān)系型數(shù)據(jù)庫以O(shè)racle11g為主體,非關(guān)系型數(shù)據(jù)庫MongoDB為輔,數(shù)據(jù)的容災(zāi)方案采用DataGuard技術(shù)。
以MapReduce編程模型實現(xiàn)的基于項目的協(xié)同過濾算法的偽代碼如下所示:
第一步:數(shù)據(jù)讀入,從HDFS讀入本地文件;
第二步:循環(huán)讀取每行數(shù)據(jù),以固定字符串將每行數(shù)據(jù)進行分割,生成列表項,數(shù)據(jù)格式為<用戶:[項目:評分]>,MapReduce模型
下每個列表項可以直接插入Hadoop平臺的上下文Context中;
for rowdata in Text
Split(rowdata,“ ”or “->”);
Key——>[userid];
Value——>[itemid]:[rate];
Context.writer(Key,Value); End for
第三步:以貨主ID為Key,合并列表項;
Listitem = NULL;
Listitem.insert(Key);
Listitem(Key).insert(Value);
//ListKey=userid:ListValue——>List([itemid]:[rate])
第四步:對Item各項計算,構(gòu)造同現(xiàn)矩陣;
Co-martrix(list MapList){
For item in Maplist
If not null(item)
ItemSum = ItemSum+1;
Updatemartrix(Item);
EndIf EndFor}
第五步:以userid為Key,進行列表項的合并,生成用戶的項目評價向量來自Map階段的初步合并后的列表項,在Reduce階段,用List列表保存各個用戶的項目評價向量。
若已存在,以Key為唯一鍵值進行合;
If Key in Uservector.key
Uservector(key).Merge(Listitem);
若不存在這樣的Key,則直接在列表中新增加一個列表項,鍵值為Key;
Else New Uservector(key).add(Listitem);
第六步:用戶項目評價向量與同現(xiàn)矩陣相乘,得到用戶的推薦向量;
UserRecommendList = Uservector * Co-martrix;
Save(UserRecommendList);
最后,為物流平臺選取K個推薦向量;
GetItemOfRem(UserRecommendList,K)。
推薦算法的實現(xiàn),研發(fā)的測試環(huán)境中運行的效果運用到物流工作中非常方便。當貨主企業(yè)用戶登陸后,在找專線的頻道內(nèi)系統(tǒng)為用戶推薦多家感興趣的物流公司,以圖文字形式進行展示,一目了然,非常容易就找到所需的內(nèi)容。
[1]Chert MS.Data mining:arl overview from a database perspective[J].IEEE Trans on Knowledgeand data engineering,1996:8(06):866-883.
[2]Pang-Ning Tan,Michael Steinbach,Yipin Kumar著.范明,范宏建等譯.數(shù)據(jù)挖掘?qū)д揫M].北京:人民郵電出版社,2006.
[3]Leandro Nunesde Castro,Fernando J.Von Zuben.An Evolutionary Immune Network for DataClustering.In Proc of the IEEE SBRN(Brazilian Symposium on Artificial Neural Networks).22-25 November 2000.84-89.