陳銳忠,魏理豪,梁哲恒,鄒小武
(1.南方電網公司 信息化評測重點實驗室,廣東 廣州 510000;2.廣東電網有限責任公司 信息中心,廣東 廣州 510000;3.賽迪顧問股份有限公司 廣東 廣州 510500)
基于Hadoop的海量數據處理模型研究和應用
陳銳忠1,2,魏理豪1,2,梁哲恒1,2,鄒小武3
(1.南方電網公司 信息化評測重點實驗室,廣東 廣州510000;2.廣東電網有限責任公司 信息中心,廣東 廣州510000;3.賽迪顧問股份有限公司 廣東 廣州510500)
文中針對如何從海量數據中提取有用價值信息這一開發應用問題,通過分析現有計算和存儲技術,并且結合Hadoop的技術研究,設計了一種海量數據處理模型,該模型是以Hadoop技術為基礎的。文中先介紹了分布式系統,然后描述了Hadoop架構,最后介紹了本設計的海量數據處理模型。該模型通過一系列設計可以有效的緩解了網絡壓力,同時它不需要程序員具有相應專業的經驗就可以對超大系統進行整理并且獲得所需資源。該模型具有高效率、低成本以及易維護的特性。
Hadoop;海量數據;分布式;數據預處理
當今社會中,Web是最大的信息系統,它的價值主要來自于眾多用戶產生的數據,那么,如何在具有多樣性、傳輸條件不確定性等特點的海量數據中提取出有價值的信息,這對程序員是一個很大的挑戰與難題。隨著時代進步以及網絡技術的發展,人們處理數據的能力也越來越強大。海量數據對計算機以及服務器都是一個巨大的考驗,在處理海量數據問題的過程中有很多困難,針對處理海量數據的問題,主要是將有用的數據從海量數據庫中提取出來,最后將有價值信息的數據導入數據庫中用于進一步的挖掘。因為Hadoop的模型可以允許程序員不具備開發經驗就可以處理大量的系統資源,所以利用Hadoop的優勢以及結合Hadoop的技術研究,文中提出了一種基于Hadoop的海量數據處理[1]。
文中所提到的分布式系統指的是分布式軟件系統,它的目的是將復雜的大任務分為若干個小任務來處理,最后通過一系列的方法從這些任務中得到結果,并且將這些結果總結成為最后的結果。而且,在所提到的分布式系統處理任務的過程中,這些任務之間并不具有依賴性,相反,相互直接比較獨立,也就是說每一個任務的處理并不會受上一個任務處理結果的影響。所以,它的特點是不要求實時性,并且在過程中允許發生錯誤[2-3]。
2.1Hadoop核心組件
Hadoop核心組件主要包含兩部分,分別是Hadoop Map/ Reduce和Hadoop DFS。
Map/Reduce是一個將比較大的分布式計算轉變為一個對數據集合進行操作的編程模型。該模型框架借助于計算機群,將用戶定義的任務分布到群眾的各點上的計算機中進行任務執行。該模型計算包括兩個階段,分別是map階段和reduce階段。
Map階段,模型架構會將所得到的數據切分開,使其變為一段一段的,然后將所得到的各個片段按照一定的順序,一一對應的分配給相對應的map任務。每一個服務器都會對分配的數據進行計算并且將計算結果集合。Reduce階段,每個reduce任務會輸入之前整合的數據,任意服務器都會通過一個reduce函數將其變為一個輸出對。Map/Reduce框架會將節點上的reduce任務分發然后再把結果數據分配到每個reduce任務中處理。
Hadoop DFS是將海量數據存儲在一個大群的多臺計算機當中,它將每個文件以分塊的形式存儲,并且文件的所有分塊的大小和復制比例按照一定的規則配置。對于處理這些文件的時候必須要遵守一個嚴格要求,這個要求就是在任意時段只能有一名程序員在操作[4]。
2.2Hadoop分布式文件系統(HDFS)
Java是HDFS所采用的開發語言,因此,這意味著HDFS可以應用到多種類型的運行平臺當中。因此,為了簡化系統,一個服務器只存在于一個集群當中,并且這個服務器里所存儲的數據就是HDFS中的全部數據。圖1為HDFS架構中各名稱與數據節點間的關系圖。
HDFS用于將海量數據存儲在一個集群中的計算機當中,并且HDFS當中的每個文件的排列順序都是非常合理的,至于數據塊的大小,每個數據塊都是一樣的,除了最后一個,這也就意味著在考慮出錯率以后,一個文件中的數據模塊都可以進行復制。HDFS中要求最嚴格的是只寫一次而且在任一時間內只能有一個操作者。圖2是“塊報告”的結構示意圖[5-6]。
2.3Map/Reduce執行流程
圖3為Map/Reduce的執行流程[7]。

圖1 HDFS架構中名稱節點和數據節點之間的運行時關系

圖2 “塊報告"示意圖”

圖3 Map/Reduce執行流程
下面對每個步驟進行簡要介紹:
1)fork:將海量文件分成大小不一的小塊數據,大小由用戶給出的參數所決定。
2)指派規約任務:程序拷貝中只有一個用于管理的主程序,其余程序都是工作站程序,該程序具有管理機紙指派任務。
3)讀取:被指派的工作站讀取數據,經過函數處理得到中間鍵值后,再存入內存緩沖區。
4)本地寫入:內存中的數據被劃分為R個區域,分別寫入本地磁盤當中,在本地磁盤當中的數據再被送到管理機處,管理機再將這些信息傳送到執行任務的工作站中。
5)遠程讀取:執行任務的工作站收到數據位置后,通過遠程方式讀取本地緩沖數據。工作站讀完所有數據以后,將關鍵字對數據進行排列比較,將具有同類關鍵字的分為一類。
6)寫到輸出文件:規約工作站對中間數據進行排列,它給用戶的規約函數發送和中間值,規約函數再將結果添加到最后文件當中。
3.1設計思想
為了滿足實際需求,對于該海量數據處理模型的設計提出了3個設計步驟,分別是拆分、重構和融合。同時為了加快模型建立速度,設計思路也要遵循簡單的原則,同時也要保證系統的簡單、實用和易部署。
我們將系統過程中數據預處理部分拆分成4個部分,分別是數據模式間的切換、數據邏輯之間的計算、無用數據的刪除和將數據結果處理成為標準模式。
重構包括了3個方面:1)模型用Hadoop還是DGH;2)ETL要考慮的出錯控制、規劃空間、用戶格式化日志;3)簡化數據庫的計算負擔。
融合部分中要考慮SCP部分應使用原有的PERL ETL還是Hadoop,因此,我們將兩種計算模式進行了比較,比較結果如表1所示。

表1 PERLETL和Hadoop比較
3.2功能模塊
該海量數據處理模型主要由7個主要的功能模塊組成,下面對這7個部分進行簡單的介紹。
日志收集模塊主要任務是負責從前端機中收集最初的訪問日志,并且我們在該模塊中還增加了自動配置信息收集功能,方便了可修護設備的靈活性,也提高了設備的可延展性,對信息的查詢也很好的方便,這點對大企業比較重要。
格式清洗模塊的主要任務是對初始數據中的多個產品的模式進行統一,主要包括幾個方面,比如片段的定義、定位等,同時也刪除了一些沒用的信息,保證了信息的統一以及完整。
導入DFS模塊是啟動Hadoop計算規則的必要前提工作。最主要的特點是對于不熟悉分布式文件系統的工作人員而言,這個操作也是非常簡單的。
規則計算模塊是該海量數據處理模型的核心部分。該模塊對數據的規則和功能進行設計。用它來處理Web日志的計算非常高效,所以很容易實現相關統計事務。
導出DFS模塊,顧名思義,它的任務就是將DFS中產生的數據結果從中導出,并且將其存入相應數據塊中。
清理歷史數據模塊是清理系統處理數據過程中產生的垃圾,有利于下一次的操作。
監控報警模塊在整個海量數據處理模型當中都存在,之所以存在是因為它的作用是一種監督和防護,它可以對模型運行的過程中判斷是否有錯誤,如果找到了錯誤以后也可以及時修正[8]。
將海量數據處理模型所需軟硬件條件部署好以后,我們分4組測試并且比較相互特性。

表2 4組測試數據
新舊系統測試比較結果數據表如表3所示。

表3 新舊系統測試比較結果數據表
與此同時,為了判斷該海量數據處理模型是否對小數據也具有相同的優勢,所以我們針對180M大小的日志數據文件將其在上述條件下進行仿真驗證,所得出結果卻出人意料,得出的結果于上述結果截然相反。
所以,從以上分析中得出的結論是:基于Hadoop技術的海量數據處理模型在對海量數據進行處理過程中所展現的性能相比于原有處理模式而言,所展示的表現相對好,但是,這種良好的表現有很多限制因素,比如數據的個數、文件的大小、模型處理過程中的復雜程度以及所采用的服務器的個數。這幾種條件都不符合時,Hadoop的優勢就顯示不出來了。
針對分布式系統的關鍵技術,文中進行了系統的研究。文中通過分析現有計算和存儲技術,并且結合Hadoop的技術研究,設計了一種海量數據處理模型,該模型是以Hadoop技術為基礎的。文中先介紹了分布式系統,然后描述了Hadoop架構,最后介紹了本設計的海量數據處理模型。該模型通過一系列設計可以有效的緩解了網絡壓力,同時它不需要程序員具有相應專業的經驗就可以對超大系統進行整理并且獲得所需資源。該模型具有高效率、低成本以及易維護的特性。最后通過測試以及與其他計算模型相比較,分析結果表明該海量數據處理模型在處理大數據的條件下所表現的性能是非常好的。
[1]朱珠.基于Hadoop的海量數據處理模型研究和應用[D].北京:北京郵電大學,2008.
[2]Cooley R,Mobasher B,Srivastava J.Data Preparation for Mining World Wide Web Browsing Patterns[J].Knowledge& Information Systems,1999,1(1):5-32.
[3]肖桐.應用于海量數據處理分析的云計算平臺搭建研究[D].天津:天津科技大學,2011.
[4]魏強,孔廣黔,吳云.基于Hadoop的海量醫療小文件處理系統[J].計算機與數字工程,2015(4):733-737.
[5]Jeffrey Dean,Sanjay Ghemawat.Map/Reduce:Simplified Data Processing on Large Clusters.Communications of the ACM,2008,51(1):107-113.
[6]張勇勇.基于Hadoop自動文本分類的研究與實現[D].哈爾濱:哈爾濱工業大學,2012.
[7]辛大欣,屈偉.基于Hadoop的云計算算法研究[J].電子設計工程,2013(3):33-35.
Research and application of mass data processing model based on Hadoop
CHEN Rui-zhong1,2,WEI Li-hao1,2,LIANG Zhe-heng1,2,ZOU Xiao-wu3
(1.CSG Key Laboratory of Software Testing,Guangzhou 510000,China;2.Guangdong Power Grid Information Center,Guangzhou 510000,China;3.CCID Consulting Co.,Ltd,Guangzhou 510500,China)
In this paper,we design a data processing model based on Hadoop technology,which is based on the analysis of the existing computing and storage technology,and combining with the technology of Hadoop.This paper first introduces the distributed system,then describes the Hadoop architecture,and finally describes the design of mass data processing model. Through a series of design,the model can effectively alleviate the pressure of the network,while it does not need to have the corresponding professional experience with the corresponding professional experience can be a large system to collate and get the required resources.The model has the characteristics of high efficiency,low cost and easy maintenance.
hadoop;massive data;distributed;data pre-process
TM933.4
A
1674-6236(2016)14-0101-03
2015-07-27稿件編號:201507171
陳銳忠(1985—),男,廣東揭陽人,博士,工程師。研究方向:電力信息化、計算機體系結構。