王麗紅+劉平+于光華
摘要:大數(shù)據(jù)時(shí)代下,進(jìn)出口企業(yè)發(fā)展出了跨境電子商務(wù)或在線國際貿(mào)易的新型虛擬網(wǎng)絡(luò)貿(mào)易平臺(tái),需要對海量的貿(mào)易數(shù)據(jù)進(jìn)行收集并完成處理。為了處理這些海量貿(mào)易數(shù)據(jù),基于Hadoop 大數(shù)據(jù)分析工具設(shè)計(jì)并實(shí)現(xiàn)了對俄貿(mào)易大數(shù)據(jù)分析處理系統(tǒng),通過它提供的強(qiáng)大的分布式數(shù)據(jù)處理能力,高效快捷地分析對俄貿(mào)易的各種數(shù)據(jù)。實(shí)驗(yàn)表明該系統(tǒng)能夠有效地完成對俄貿(mào)易數(shù)據(jù)處理分析,從海量數(shù)據(jù)中挖掘到有用信息,從而可靠地、高效地對貿(mào)易數(shù)據(jù)進(jìn)行存儲(chǔ)和分析,幫助企業(yè)制訂營銷計(jì)劃。
關(guān)鍵詞:對俄貿(mào)易大數(shù)據(jù);大數(shù)據(jù)分析;hadoop;MapReduce
中圖分類號:TP319 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2018)01-0020-03
Abstract: In the era of big data, import and export enterprises have developed a new virtual network trading platform for cross-border e-commerce or online international trade, which requires the collection and processing of massive trade data.. In order to deal with the massive trade data, Large data analysis and processing system for Russian trade was was designed and implemented Based on the Hadoop, through which provide powerful distributed data processing capabilities, efficient and quick analysis on Russia's trade all kinds of data. Experiments show that the system can effectively complete analysis on Russia's trade data processing to the useful information from huge amounts of data mining, so as to reliably and efficiently for trade data for storage and analysis, to help enterprises make the marketing plan.
Key words: Big Data of russian trade; Big Data Analysis; hadoop; MapReduce
大數(shù)據(jù)時(shí)代下,信息數(shù)據(jù)化的同時(shí),更多的企業(yè)利用電子商務(wù)開展貿(mào)易活動(dòng)。在更少的時(shí)間里獲取豐富且具有時(shí)效性的數(shù)據(jù)信息,可以提高企業(yè)業(yè)務(wù)處理能力和貿(mào)易交易率,為客戶和企業(yè)帶來雙贏的便利。黑龍江省的對俄貿(mào)易一直引領(lǐng)全國,在“一帶一路”發(fā)展戰(zhàn)略影響下,我省的對俄經(jīng)貿(mào)合作必將進(jìn)入新一輪峰值期,如何存儲(chǔ)、處理海量的貿(mào)易數(shù)據(jù)并監(jiān)測市場需求使我們面臨的新問題。就當(dāng)前實(shí)際情況引入Hadoop來對海量數(shù)據(jù)進(jìn)行分析存儲(chǔ)[1]。
Hadoop 是 Apache 基金的一個(gè)開源的大數(shù)據(jù)處理框架,核心部分由HDFS(分布式文件系統(tǒng))和MapReduce(并行計(jì)算模型)兩大模塊組成[2],HDFS可以高效地完成大規(guī)模數(shù)據(jù)集的高效存儲(chǔ),MapReduce將應(yīng)用程序要處理的工作分成若干小塊,是開發(fā)人員輕松實(shí)現(xiàn)分布式應(yīng)用程序員。二者的集合使用戶可以在上層編寫分布式程序而不需要了解其底層的細(xì)節(jié)情況??梢宰屖褂谜叱浞掷眉旱膬?yōu)勢進(jìn)行分布式的高速的存儲(chǔ)和運(yùn)算。HDFS與MapReduce的結(jié)合使得Hadoop變得更加強(qiáng)大[3]。
本文設(shè)計(jì)并實(shí)現(xiàn)了基于Hadoop的大數(shù)據(jù)分析系統(tǒng),用以處理和分析海量的對俄貿(mào)易數(shù)據(jù),并通過結(jié)果為企業(yè)提供相關(guān)信息。
1 基于Hadoop的大數(shù)據(jù)分析系統(tǒng)架構(gòu)設(shè)計(jì)
1.1 系統(tǒng)基本架構(gòu)
基于Hadoop的大數(shù)據(jù)分析系統(tǒng)按照邏輯分層的方法劃分為以下3層[4],分別是“數(shù)據(jù)存儲(chǔ)層”、“數(shù)據(jù)處理層”和“應(yīng)用層”。大數(shù)據(jù)分析系統(tǒng)架構(gòu)如圖1所示。
數(shù)據(jù)存儲(chǔ)層: 利用 Hadoop分布式文件系統(tǒng) HDFS,根據(jù)數(shù)據(jù)特點(diǎn)和具體業(yè)務(wù)需求將數(shù)據(jù)分類存儲(chǔ)。大量歷史數(shù)據(jù)經(jīng)過HIVE管理存儲(chǔ)[5],需要快速查詢并響應(yīng)的數(shù)據(jù)交給 HBASE 進(jìn)行存儲(chǔ)劃分。將整理后的數(shù)據(jù)保存成文件存放在 HDFS 分布式文件系統(tǒng)上,方便數(shù)據(jù)的處理。
數(shù)據(jù)處理層:這一層是大數(shù)據(jù)分析系統(tǒng)的核心層,在這一層,主要應(yīng)用 MapReduce編程框架構(gòu)建分布式處理程序,利用Hadoop 的組件執(zhí)行對應(yīng)的工作完成大型數(shù)據(jù)的各種需求分析。數(shù)據(jù)處理層中的業(yè)務(wù)邏輯分析模型用以識別業(yè)務(wù)功能,識別后被分解成相應(yīng)的任務(wù)對 HBase 進(jìn)行操作。 利用模型庫把一些常用的模型和分析結(jié)果數(shù)據(jù)進(jìn)行固化。中間件通過相應(yīng)參數(shù)對應(yīng)用層具體需求做出判斷,并根據(jù)判決結(jié)果決定把任務(wù)送給 Hive 處理還是 HBase處理。
應(yīng)用層: 將數(shù)據(jù)處理層得到的數(shù)據(jù)用相關(guān)圖或表進(jìn)行表示,通過圖表用戶能夠直觀地研究對俄貿(mào)易數(shù)據(jù)的商機(jī)及存在的問題,促進(jìn)對俄貿(mào)易的發(fā)展。
1.2 Hadoop 集群硬件架構(gòu)設(shè)計(jì)
Hadopp集群是由5臺(tái)服務(wù)器和10臺(tái)PC機(jī)組成的集群,服務(wù)器集群上安裝linux操作系統(tǒng),在10臺(tái)PC機(jī)上安裝虛擬Linux Cont OS 系統(tǒng),并在每臺(tái)機(jī)器上安 裝 JDK、SSH、Hadoop 和HBase。一臺(tái)服務(wù)器作為Hadoop集群的client,負(fù)責(zé)數(shù)據(jù)進(jìn)行Hbase和Hive入庫。一臺(tái)服務(wù)器作為Namenode,剩余3臺(tái)服務(wù)器和10臺(tái)PC機(jī)作為Hadoop集群的datanode,其中兩臺(tái)datanode作為中間件服務(wù)器。endprint
2 基于Hadoop的大數(shù)據(jù)分析系統(tǒng)實(shí)現(xiàn)
2.1 數(shù)據(jù)統(tǒng)計(jì)實(shí)現(xiàn)
大數(shù)據(jù)分析系統(tǒng)需要針對對俄貿(mào)易數(shù)據(jù)進(jìn)行分析和統(tǒng)計(jì),而應(yīng)用MapReduce算法框架需要使用者自己編寫程序,這對于使用該分析系統(tǒng)的員工來講難以實(shí)現(xiàn)。Hive所提供的數(shù)據(jù)庫語言HiveQL,可以將類sql語言轉(zhuǎn)化為在Hadoop中執(zhí)行的MapReduce任務(wù)。使得數(shù)據(jù)庫操作人員上手簡單且功能強(qiáng)大。Hive與普通關(guān)系數(shù)據(jù)庫比較如表1所示。
由表1可知,Hive由于利用 Map Reduce 進(jìn)行并行計(jì)算,因此可以支持很大規(guī)模的數(shù)據(jù),在處理的數(shù)據(jù)規(guī)模和可擴(kuò)展性上有相當(dāng)大的優(yōu)勢。
2.2 數(shù)據(jù)存儲(chǔ)實(shí)現(xiàn)
為了提高存儲(chǔ)效率和減少硬盤的訪問次數(shù),先將數(shù)據(jù)放到內(nèi)存里,達(dá)到一定數(shù)目時(shí)寫入本地文件,在將數(shù)據(jù)通過 Hadoop 提供的 API上傳到 HDFS。而HDFS 的設(shè)計(jì)是每個(gè)文件占用整個(gè)數(shù)據(jù)塊時(shí)存儲(chǔ)效率最高,為了提高存儲(chǔ)效率,減少Name Node 的元數(shù)據(jù),因此將本地文件控制在 64M 大小,再上傳到 HDFS[1]。
2.3 數(shù)據(jù)查詢實(shí)現(xiàn)
對于在海量數(shù)據(jù)中迅速定位到幾條或幾十條符合條件的數(shù)據(jù),就猶如大海撈針。在大數(shù)據(jù)分析系統(tǒng)中應(yīng)用HBase這個(gè)分布式數(shù)據(jù)庫,可以實(shí)現(xiàn)高速的寫入和讀取。HBase表由行和列組成,查詢時(shí),都是通過行鍵來進(jìn)行搜索的,因此行鍵的規(guī)劃尤為重要。根據(jù)行表可以將HBase分成多個(gè)Region,HBase的所有數(shù)據(jù)保存在HDFS中,由Region負(fù)責(zé)完成數(shù)據(jù)的讀取。某個(gè)Region內(nèi)的數(shù)據(jù)只能保存在一個(gè)主機(jī)上。為了解決讀寫矛盾,在行鍵前添加一個(gè)hash值,即可使數(shù)據(jù)寫入不同的Region,可以充分發(fā)揮分布式系統(tǒng)的優(yōu)勢。
2.4 數(shù)據(jù)處理實(shí)現(xiàn)
Hadoop 對數(shù)據(jù)處理是通過 MapReduce 來完成的。系統(tǒng)將數(shù)據(jù)劃分為若干數(shù)據(jù)塊, Map 節(jié)點(diǎn)對數(shù)據(jù)塊分析處理后會(huì)返回一個(gè)中間結(jié)果集,并對中間結(jié)果使用一定的策略進(jìn)行適當(dāng)?shù)膭澐痔幚?,保證相關(guān)數(shù)據(jù)傳送到Reduce節(jié)點(diǎn)。Reduce節(jié)點(diǎn)所處理的數(shù)據(jù)可能來自多個(gè)Map節(jié)點(diǎn),為了減少數(shù)據(jù)通信開銷,中間結(jié)果在進(jìn)入Reduce節(jié)點(diǎn)前會(huì)進(jìn)行一定的合并處理,Reduce節(jié)點(diǎn)將接收到的數(shù)據(jù)進(jìn)行歸納總結(jié)。Map節(jié)點(diǎn) 和 Reduce節(jié)點(diǎn)在數(shù)據(jù)處理時(shí)可能會(huì)并行運(yùn)行,即使不是在同一系統(tǒng)的同一時(shí)刻。因此MapReduce 為并行系統(tǒng)的數(shù)據(jù)處理,提供了一個(gè)簡單優(yōu)雅的解決方案。
2.5 復(fù)雜數(shù)據(jù)模型分析實(shí)現(xiàn)
除了大部分應(yīng)用進(jìn)行統(tǒng)計(jì)查詢就可以滿足,但還有很重要的一部分任務(wù)需要進(jìn)行復(fù)雜的數(shù)據(jù)建模來進(jìn)行分析。算法步驟如下:
1) 數(shù)據(jù)提取。
2) 判斷提取數(shù)據(jù)是否在Hadoop中,若在,提取Hadoop中已有數(shù)據(jù),若不在,則導(dǎo)入外部數(shù)據(jù)。
3) 數(shù)據(jù)處理,選擇復(fù)雜算法。
4) 算法是否包含在Mahout中或者已導(dǎo)入,若是轉(zhuǎn)步驟5,否則導(dǎo)入所需算法轉(zhuǎn)步驟5。
5) 設(shè)置算法參數(shù)。
6) 進(jìn)行算法迭代并判斷是否完成迭代,若完成輸出最終結(jié)果,否則繼續(xù)步驟6。
3 結(jié)果分析
文中程序是在搭建的Hadoop并行計(jì)算平臺(tái)上運(yùn)行的,平臺(tái)有15個(gè)節(jié)點(diǎn),15個(gè)節(jié)點(diǎn)包括一臺(tái)client,一臺(tái)Namenode,13臺(tái)Datanode。其中5臺(tái)服務(wù)器配置八核 CPU、內(nèi)存64G、硬盤400G、千兆以太網(wǎng);另外10臺(tái) PC 機(jī)配置雙核 CPU、內(nèi)存 8G、百兆以太網(wǎng)、硬盤 300G。
在數(shù)據(jù)量比較小時(shí),HDFS的性能體現(xiàn)并不明顯,當(dāng)文件數(shù)據(jù)量比較大時(shí),HDFS的性能優(yōu)勢可以充分體現(xiàn)出來。運(yùn)行文件大小為100M不變,但是文件數(shù)量從1個(gè)到10個(gè)增加,運(yùn)行總時(shí)間和平均運(yùn)行時(shí)間如圖2所示。
根據(jù)對比圖可知,文件數(shù)量的增加導(dǎo)致運(yùn)行總體時(shí)間在增加,但是平均處理時(shí)間呈下降趨勢。同時(shí)若運(yùn)行文件數(shù)量相同,文件大小從10M增加到500M,隨著文件大小增加,總體時(shí)間是成上漲趨勢的,但是平均時(shí)間是呈下降趨勢的。
4 結(jié)束語
對于對俄貿(mào)易數(shù)據(jù)海量的特點(diǎn),設(shè)計(jì)并實(shí)現(xiàn)了基于Hadoop 的大數(shù)據(jù)分析系統(tǒng)。應(yīng)用 HDFS 設(shè)計(jì)實(shí)現(xiàn)了數(shù)據(jù)的分布式存儲(chǔ),使用Hive組件來完成大數(shù)據(jù)分析的統(tǒng)計(jì)任務(wù),應(yīng)用HBase分布式數(shù)據(jù)庫,可以實(shí)現(xiàn)高速的寫入和讀取文件。將文件合理的分布到每個(gè)節(jié)點(diǎn),并對文件進(jìn)行了 3 節(jié)點(diǎn)備份,保證了系統(tǒng)的安全;基于Hadoop的Map Reduce 模型實(shí)現(xiàn)數(shù)據(jù)并行儲(chǔ)存與處理,隨著數(shù)據(jù)量的增大,集群處理數(shù)據(jù)的優(yōu)勢越來越明顯。因此基于 Hadoop 的對俄貿(mào)易大數(shù)據(jù)處理是非常安全有效的。
參考文獻(xiàn):
[1] 張國棟. 基于 Hadoop 技術(shù)的電信大數(shù)據(jù)分析平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)[D]. 上海: 上海交通大學(xué), 2014.
[2] Apache Hadoop Next Gen Map Reduce (YARN) [EB/OL]. 2013.
http://hadoop.apache.org/docs/r2.2.0/hadoop-yarn/hadoop-yarn-site/YARN.html.
[3] 陳浩. 基于Hadoop的農(nóng)業(yè)電子商務(wù)數(shù)據(jù)平臺(tái)構(gòu)建關(guān)鍵技術(shù)研究[D]. 武漢: 華中師范大學(xué), 2015.
[4] Hadoop 官方網(wǎng)站[EB/OL]. http://hadoop.apache.org.
[5] Edward Capriolo, Dean Wampler, Jason Rutherglen.Programming Hive[M]. O'Reilly Media, 2012.
[6] 李偉. 基于Hadoop 的電網(wǎng)大數(shù)據(jù)處理探究[J]. 電子測試, 2014(1).endprint