李自尊 馮建 湯進
(黃委會信息中心數(shù)據(jù)中心,河南 鄭州 450000)
Hadoop技術(shù)在云數(shù)據(jù)中心的應用研究
李自尊 馮建 湯進
(黃委會信息中心數(shù)據(jù)中心,河南 鄭州 450000)
針對大數(shù)據(jù)時代如何存儲、處理、分析、利用海量的電子數(shù)據(jù),以及傳統(tǒng)數(shù)據(jù)中心向云數(shù)據(jù)中心轉(zhuǎn)型進程中大量服務器被閑置的問題,對Hadoop家族中的關(guān)鍵技術(shù)HDFS、MapReduce、Mahout進行深入研究,并在此基礎(chǔ)上提出了基于云平臺的Hadoop集群應用研究方案。方案包括Hadoop集群拓撲結(jié)構(gòu)、開發(fā)運行環(huán)境部署流程及基于Hadoop集群的Mahout中貝葉斯分類算法的實現(xiàn)。實驗作為整合數(shù)據(jù)中心資源進行規(guī)模部署Hadoop集群的研究基礎(chǔ),證明了Hadoop集群的可用性及其在數(shù)據(jù)分析方面良好的適應性。
Hadoop;云數(shù)據(jù)中心;Mahout;貝葉斯
隨著大數(shù)據(jù)時代的到來,如何存儲、處理、分析、利用海量的電子數(shù)據(jù),成為各個行業(yè)亟待解決的問題。Ha?doop是由Apache基金會開發(fā)的一個開源分布式系統(tǒng)的基礎(chǔ)架構(gòu),提供用于構(gòu)建分布式系統(tǒng)的數(shù)據(jù)存儲、數(shù)據(jù)分析及協(xié)調(diào)處理工具,在大數(shù)據(jù)分析領(lǐng)域應用廣泛,已經(jīng)積累了大量用戶[1]。國內(nèi)外知名企業(yè)如Google、Facebook、eBay、百度及阿里巴巴等,都基于Hadoop進行數(shù)據(jù)挖掘和分析,許多高校和研究機構(gòu)也將Hadoop應用到教學、實驗和研究中[2]。
云數(shù)據(jù)中心采用云計算理念和虛擬化技術(shù),集成整合數(shù)據(jù)中心現(xiàn)有基礎(chǔ)資源,構(gòu)建存儲備份資源池、計算資源池,對資源統(tǒng)一管理、調(diào)配,具有高效、高可用及彈性部署等特點。傳統(tǒng)數(shù)據(jù)中心向云數(shù)據(jù)中心轉(zhuǎn)型的過程中,業(yè)務系統(tǒng)逐步由單臺獨立的服務器遷移至云平臺,而這會導致大量的服務器閑置。整合舊有服務器,部署Ha?doop集群環(huán)境,可以有效利舊原有設(shè)備資源,實現(xiàn)資源的綠色循環(huán)使用[3]。
本文通過對Hadoop框架構(gòu)建技術(shù)進行研究,綜合利用數(shù)據(jù)中心云平臺高效、彈性的特點,從研究實驗的角度搭建基于云平臺的Hadoop分布式運行環(huán)境,并開展基于機器學習算法的數(shù)據(jù)分析研究,同時基于桌面云服務,提供開發(fā)環(huán)境的快速部署,作為整合數(shù)據(jù)中心資源進行規(guī)模部署Hadoop集群的研究基礎(chǔ)。
Hadoop作為開源的分布式系統(tǒng)基礎(chǔ)架構(gòu),主要由分布式存儲(HDFS)、分布式計算(MapReduce)等組成。用戶可以在不了解Hadoop框架底層細節(jié)的情況下,利用Hadoop框架來開發(fā)分布式程序,適用于擁有大量計算機且偶爾有大量數(shù)據(jù)需要存儲、分析的場景。
Hadoop已經(jīng)發(fā)展成為包含很多項目的集合,雖然核心項目是HDFS和MapReduce,但與Hadoop相關(guān)的HBase、Pig、Hive、ChuKwa、Zookeeper等項目也是不可或缺的。它們提供了互補性服務或在核心層上提供了更高層的服務[4]。
Hadoop由許多不同的文件系統(tǒng)組合而成,它提供了文件系統(tǒng)實現(xiàn)的各類接口,HDFS是眾多文件系統(tǒng)中應用最多的一個文件系統(tǒng)實例,是分布式計算的存儲基石。HDFS支持數(shù)據(jù)密級型分布式應用,采用主從(Master/Slave)結(jié)構(gòu)模型,由一個命名節(jié)點NameNode和若干個數(shù)據(jù)節(jié)點DataNode組成。NameNode作為主服務器,管理文件系統(tǒng)命名空間和客戶端訪問,如打開、關(guān)閉、重命名文件或目錄等,以及數(shù)據(jù)塊到具體DataNode的映射;DataNode負責進行數(shù)據(jù)存儲的同時,還負責響應客戶端的讀寫請求,并在NameNode的統(tǒng)一調(diào)度下進行數(shù)據(jù)塊的創(chuàng)建、刪除和復制工作。從內(nèi)部來看,文件被分成若干個數(shù)據(jù)塊(默認為64MB),而且放在一組DataNode上,由Na?meNode維護文件的元數(shù)據(jù)信息,具體如圖1所示[5,6]。
圖1 HDFS數(shù)據(jù)存儲示例
MapReduce是一種編程模型,用于大規(guī)模數(shù)據(jù)集的并行運算。Map(映射)和Reduce(化簡),采用分而治之思想,先把任務分發(fā)到集群中的多個節(jié)點上,執(zhí)行并行計算,然后再把計算結(jié)果合并,從而得到最終結(jié)果。多節(jié)點計算,涉及的任務調(diào)度、負載均衡、容錯處理等,都由MapReduce框架完成。
Map和Reduce函數(shù)的輸入輸出都是鍵(key)-值(value)對的形式,而Map的輸出就是Reduce的輸入。Map中輸出的鍵值對中所有鍵相同的值都會傳遞給同一個Reduce進行處理,Reduce將輸入的鍵-值對轉(zhuǎn)化合并為規(guī)模更小的鍵-值對組合[5,6]。
MapReduce計算模型如圖2所示。
圖2 MapReduce計算模型
Mahout是一個強大的數(shù)據(jù)挖掘工具,其主要目標是建立可伸縮的機器學習算法,最大的優(yōu)點就是基于Ha?doop實現(xiàn),把很多以前運行于單機上的算法轉(zhuǎn)化為MapReduce模式,大大提升了算法可處理的數(shù)據(jù)量和處理性能。目前,Mahout項目主要包括以下五部分[7,8]。①推薦引擎(協(xié)同過濾):獲得用戶的行為并從中發(fā)現(xiàn)用戶可能喜歡的事務;②聚類:將諸如文本、文檔之類的數(shù)據(jù)分成局部相關(guān)的組;③分類:利用已經(jīng)存在的分類文檔訓練分類器,對未分類的文檔進行分類;④頻繁模式挖掘:挖掘數(shù)據(jù)中頻繁出現(xiàn)的項集;⑤頻繁子項挖掘:利用一個項集(查詢記錄或購物目錄)去識別經(jīng)常一起出現(xiàn)的項目。
云數(shù)據(jù)中心的建設(shè)采用虛擬化技術(shù)和云平臺管理理念,新增必需的高性能資源池服務器及共享存儲,集成整合數(shù)據(jù)中心現(xiàn)有基礎(chǔ)資源,構(gòu)建存儲備份資源池、計算資源池,實現(xiàn)了物理資源的整合共享、靈活管理,方便了應用系統(tǒng)的部署,同時避免了業(yè)務重復建設(shè)造成的資源浪費,提高了服務器、存儲的復用率。
在對傳統(tǒng)數(shù)據(jù)中心進行云化改造的過程中,原有系統(tǒng)從舊有X86服務器逐步遷移至云平臺,傳統(tǒng)業(yè)務區(qū)將有大量的舊有X86服務器被閑置。Hadoop集群由于其內(nèi)部冗余及高可靠性的工作機制,可以部署在任意數(shù)臺普通的X86服務器中,因此,整合舊有X86服務器,部署Ha?doop集群環(huán)境,為偶爾需要進行大數(shù)據(jù)量的分析提供分布式平臺,可以有效利舊原有設(shè)備資源,實現(xiàn)資源的綠色循環(huán)使用。
在進行研究階段,借助云平臺高效、彈性等特點,在云上部署Hadoop集群進行初步探索。同時,利用云平臺的基于模板快速部署開發(fā)環(huán)境的特點,可以將配置復雜的Hadoop開發(fā)運行環(huán)境制作成模板,便捷發(fā)布,提高實驗及開發(fā)效率。
3.2.1 環(huán)境配置。①硬件環(huán)境配置:部署3個節(jié)點Hadoop集群開展實驗研究,開通3臺虛擬服務器,配置均為vCPU4個,內(nèi)存8G,磁盤200G。②網(wǎng)絡環(huán)境配置:Mas?ter作為NameNode、ResourceManager;Node1及Node2作為DataNode、NodeManager;3個節(jié)點的IP均在10.4.234.xx網(wǎng)段。③軟件環(huán)境配置(見表1)。
表1 軟件配置表
3.2.2 Hadoop開發(fā)運行環(huán)境部署流程。Hadoop開發(fā)運行環(huán)境搭建主要包括4部分內(nèi)容,即軟硬件環(huán)境準備、Hadoop集群部署、開發(fā)環(huán)境配置及Mahout模塊配置,具體流程如圖3所示。
圖3 Hadoop開發(fā)運行環(huán)境部署流程圖
3.2.3 Hadoop集群部署。Hadoop集群的配置過程主要包括三個步驟:前期環(huán)境準備、Hadoop集群軟件安裝、安裝效果驗證。前期環(huán)境準備工作包括服務器防火墻設(shè)置、network及hosts文件配置及SSH配置;Hadoop集群軟件安裝工作包括Hadoop主節(jié)點軟件部署、配置文件修改及從節(jié)點配置同步分發(fā);安裝效果驗證工作包括Ha?doop集群初始化、集群啟動、進程和管理界面檢查及任務執(zhí)行。
在部署過程中,需要修改的配置文件主要有5個,分別為:①hadoop-env.sh配置,指定JDK的安裝位置;②core-site.xml:Hadoop核心的配置文件,配置HDFS的地址及端口號;③hdfs-site.xml:HDFS配置,配置副本數(shù)為2份;④mapred-site.xml:MapReduce配置文件,配置Job?tracker的地址及端口號;⑤yarn-site.xml:yarn配置文件,配置yarn進行資源管理調(diào)度的地址及端口號。
3.3.1 樸素貝葉斯算法實現(xiàn)。樸素貝葉斯算法是基于貝葉斯定理與特征條件獨立假設(shè)的分類方法,其分類的思想基礎(chǔ)是:對于給出的待分類項,求解在此項出現(xiàn)的條件下各個類別出現(xiàn)的概率哪個最大,就認為此待分類項屬于哪個類別[9,10]。
本實驗以20NewsGroup為例,針對文檔分類的具體問題,在Hadoop集群上運行Mahout中的樸素貝葉斯算法,實現(xiàn)對文檔分類模型的訓練,并測試模型分類的效果。
20NewsGroup包含了被分成20個新聞組的20 000個新聞組文檔,20個新聞組按照20個不同的類型進行組織,不同的類對應不同的主題。其中,60%用來進行訓練貝葉斯分類算法,40%用來測試分類模型。具體實驗流程如圖4所示。
第一,準備數(shù)據(jù),并將數(shù)據(jù)上傳至HDFS。
//解壓后得到20news-bydate-train和20news-bydatetest兩個文件夾,上傳至HDFS;
#tar-zvxf 20news-bydate.tar.gz.
#hdfs dfs-put 20news-bydate-train.
#hdfs dfs-put 20news-bydate-test.
圖4 基于Hadoop集群的文檔分類流程圖
第二,轉(zhuǎn)換數(shù)據(jù)集格式。
//轉(zhuǎn)換為序列文件(sequence files)
#mahoutseqdirectory-i20news-bydate-train-o 20news-bydate-train-seq
#mahoutseqdirectory-i20news-bydate-test-o 20news-bydate-test-seq
//轉(zhuǎn)換為tf-idf向量
#mahoutseq2sparse-i20news-bydate-train-seqo 20news-bydate-train-vector-lnorm-nv-wt tfidf
#mahoutseq2sparse-i20news-bydate-test-seq-o 20news-bydate-test-vector-lnorm-nv-wt tfidf
第三,訓練樸素貝葉斯模型。
#mahouttrainnb-i20news-bydate-train-vector/tfidf-vectors-o model-li labelindex-ow.
第四,測試樸素貝葉斯模型。
#mahout testnb-i 20news-bydate-train-vector/tfidfvectors-m model-l labelindex-ow-o test-result.
3.3.2 結(jié)果分析。通過上述實驗,基于Hadoop集群運行Mahout中的貝葉斯算法對文檔進行分類,生成分類結(jié)果向量模型表,并得到分類結(jié)果的準確率及標準差。可見,在云平臺環(huán)境中的Hadoop集群搭建成功,可以進行數(shù)據(jù)的分布式存儲及并行計算,同時對機器學習算法具有良好的兼容性。
本文提出了一種基于云平臺搭建Hadoop集群進行實驗研究的方法,通過采用虛擬化技術(shù)和云平臺管理理念,快速部署Hadoop集群運行開發(fā)環(huán)境,并采用其家族成員Mahout中的機器學習算法,構(gòu)建文檔分類模型,對基于Hadoop集群的數(shù)據(jù)分析模式進行研究,是整合數(shù)據(jù)中心資源進行規(guī)模部署Hadoop集群的有效探索途徑。
[1] 王偉,陶然.基于虛擬化技術(shù)的Hadoop集群搭建與應用[J].軟件導刊,2016(4):50.
[2] 牛怡晗,海沫.Hadoop平臺下Mahout聚類算法的比較研究[J].計算機科學,2015(6A):465.
[3] 李自尊,馮建,湯進.基于虛擬化技術(shù)的云數(shù)據(jù)中心基礎(chǔ)設(shè)施規(guī)劃方案[J].河南科技,2015(3):1.
[4] 費珊珊.基于云計算Hadoop平臺的數(shù)據(jù)挖掘研究[D].北京:北京郵電大學,2013.
[5] 道客巴巴.基于Hadoop的大數(shù)據(jù)應用分析[EB/OL].(2016-04-02)[2017-10-09].http://www.docin.com/p-1514875735.html.
[6] Tom White.Hadoop權(quán)威指南[M].北京:清華大學出版社,2015.
[7] 陸嘉恒.Hadoop實戰(zhàn)[M].北京:機械工業(yè)出版社,2012.
[8] Naive Bayes[EB/OL].[2017-10-09].http://mahout.apache.org/users/classification/bayesian.html.
[9] 王慧.基于Hadoop的并行挖掘算法的研究[D].北京:首都師范大學,2013.
[10] 曾宇平,徐飛龍.基于Hadoop的分布式樸素貝葉斯智能診斷系統(tǒng)[J].醫(yī)學信息學雜志,2015(7):53.
The Hadoop Technology Application Research on Cloud Data Center
Li ZizunFeng JianTang Jin
(Data Center,The Yellow River Conservancy Commission Information Center,Zhengzhou Henan 450000)
To solve the issues of how to store,process,analyze and utilize the vast amount of electronic da?ta in the big data era,and utilize the large number of servers in the transition process of traditional data center to cloud data center,the article advanced a set of Hadoop cluster application research scheme based on cloud platform through in-depth study of the key technologies of HDFS,MapReduce,Mahout in the Hadoop family.The scheme includes the topology of the Hadoop cluster,the development process of development and operating environment,and the implementation of the bayesian classification algorithm in Mahout based on Hadoop cluster.
Hadoop;cloud data center;Mahout;bayesian algorithm
TP311.13
A
1003-5168(2017)11-0025-04
2017-10-09
李自尊(1990-),女,碩士,工程師,研究方向:數(shù)據(jù)中心運維管理。