蘇 曦,蘇亞妮,霍米會
(1.西安醫(yī)學(xué)院,陜西 西安 710021;2.陜西省人民醫(yī)院,陜西 西安 710068;3.華為技術(shù)股份有限公司,廣東 深圳 518000)
云計(jì)算環(huán)境下海量數(shù)據(jù)分析系統(tǒng)的設(shè)計(jì)
蘇曦1,蘇亞妮2,霍米會3
(1.西安醫(yī)學(xué)院,陜西 西安 710021;2.陜西省人民醫(yī)院,陜西 西安 710068;3.華為技術(shù)股份有限公司,廣東 深圳 518000)
摘要:針對傳統(tǒng)計(jì)算環(huán)境中海量數(shù)據(jù)存儲、分析處理效率、實(shí)時(shí)性、完整性和數(shù)據(jù)維護(hù)費(fèi)用等難題,利用云計(jì)算環(huán)境的超大規(guī)模、虛擬化、經(jīng)濟(jì)和安全可靠等特點(diǎn),進(jìn)行海量數(shù)據(jù)分析?;诜植际接?jì)算架構(gòu)Hadoop,利用并行計(jì)算框架Map/Reduce,構(gòu)建了典型的云計(jì)算環(huán)境,并采用數(shù)據(jù)倉庫分析平臺Hive,實(shí)現(xiàn)了高效、實(shí)用的海量數(shù)據(jù)分析系統(tǒng)的設(shè)計(jì)。以系統(tǒng)總體框架設(shè)計(jì)為基礎(chǔ),從客戶端分析、接收服務(wù)器、后端數(shù)據(jù)分析和數(shù)據(jù)可視化等模塊完成了系統(tǒng)設(shè)計(jì),對海量數(shù)據(jù)分析處理系統(tǒng)設(shè)計(jì)具有一定參考價(jià)值。
關(guān)鍵詞:海量數(shù)據(jù)分析;云計(jì)算環(huán)境;分布式計(jì)算;并行處理;系統(tǒng)設(shè)計(jì)
信息技術(shù)的飛速發(fā)展,使產(chǎn)生的信息量呈現(xiàn)爆炸式增長,為此,圖靈獎獲得者Jim Gray提出了一個(gè)新的經(jīng)驗(yàn)定律:網(wǎng)絡(luò)環(huán)境下每18個(gè)月產(chǎn)生的數(shù)據(jù)量等于有史以來數(shù)據(jù)量之和[1]。人們要想從這些海量數(shù)據(jù)中得到有用的信息和知識,傳統(tǒng)的數(shù)據(jù)處理方法面臨嚴(yán)峻的挑戰(zhàn),特別是在海量數(shù)據(jù)存儲、分析處理效率、實(shí)時(shí)性、完整性和數(shù)據(jù)維護(hù)費(fèi)用等方面[2]。云計(jì)算作為信息技術(shù)的新貴,將引領(lǐng)信息技術(shù)發(fā)展加速,將促進(jìn)信息利用與共享。由大量云計(jì)算平臺、云應(yīng)用和云服務(wù)構(gòu)成的云計(jì)算環(huán)境,為海量數(shù)據(jù)分析處理提供了超大規(guī)模、虛擬化、經(jīng)濟(jì)和安全可靠的系統(tǒng)環(huán)境[3-5]。
本文正是利用云計(jì)算環(huán)境下的上述特點(diǎn),基于分布式計(jì)算架構(gòu)Hadoop,利用并行計(jì)算框架Map/Reduce,構(gòu)建了典型的云計(jì)算環(huán)境,并采用數(shù)據(jù)倉庫分析平臺Hive,實(shí)現(xiàn)了高效、實(shí)用的海量數(shù)據(jù)分析系統(tǒng)的設(shè)計(jì)。
1Hadoop相關(guān)技術(shù)簡介
1.1Hadoop結(jié)構(gòu)及模塊
Hadoop的基本體系結(jié)構(gòu)如圖1所示。Hadoop是Apache軟件基金會所研發(fā)的并行運(yùn)算編程工具和分布式文件系統(tǒng),它作為一個(gè)開源的軟件平臺,使編寫和運(yùn)行用于處理海量數(shù)據(jù)的應(yīng)用程序更加容易[6]。通常來說,Hadoop主要實(shí)現(xiàn)2大功能:1)存儲,Hadoop采用分布式存儲結(jié)構(gòu),能夠?qū)崿F(xiàn)方便可靠的海量數(shù)據(jù)存儲,即HDFS(Hadoop Distributed File System)組件;2)分析,Hadoop采用并行式計(jì)算框架Map/Reduce及其組件,能夠?qū)崿F(xiàn)高效可靠的海量數(shù)據(jù)分析運(yùn)算。運(yùn)用Hadoop框架完成海量數(shù)據(jù)分析,主要是通過開發(fā)編寫Map/Reduce系統(tǒng),進(jìn)而完成海量數(shù)據(jù)的分析處理任務(wù)。開發(fā)過程并不需要了解系統(tǒng)底層的基本架構(gòu)。其海量數(shù)據(jù)分析的可靠性是通過更改相應(yīng)配置文件,利用HDFS完成數(shù)個(gè)或更多的數(shù)據(jù)副本備份。若節(jié)點(diǎn)出錯,則可以通過數(shù)據(jù)塊副本來完成數(shù)據(jù)處理任務(wù)。同時(shí)利用Map/Reduce完成數(shù)據(jù)分析任務(wù)調(diào)度,將海量數(shù)據(jù)分割為細(xì)粒度的子任務(wù),子任務(wù)通過任務(wù)調(diào)度模型,實(shí)現(xiàn)任務(wù)的合理分配,即運(yùn)行更快的節(jié)點(diǎn)將分配到更多任務(wù),從而實(shí)現(xiàn)快速的海量數(shù)據(jù)分析?;緢?zhí)行步驟包括輸入數(shù)據(jù)文件、分割并分配并行計(jì)算節(jié)點(diǎn)、節(jié)點(diǎn)寫本地中間文件、合并中間文件和輸出最終分析結(jié)果。
圖1 Hadoop的基本體系結(jié)構(gòu)
Hadoop模塊設(shè)計(jì)如圖2所示,Hadoop的功能模塊包括作業(yè)跟蹤器(Job Tracker)、任務(wù)跟蹤器(Task Tracker)和應(yīng)用程序(Application)。作業(yè)跟蹤器負(fù)責(zé)作業(yè)管理和操作,任務(wù)跟蹤器負(fù)責(zé)任務(wù)的管理和操作、應(yīng)用程序接口。
圖2 Hadoop模塊設(shè)計(jì)
1.2Map/Reduce及其框架
Map/Reduce編程模型是一個(gè)可以在云計(jì)算環(huán)境中進(jìn)行并行數(shù)據(jù)分析的框架,利用由普通計(jì)算機(jī)組成的、通過高速網(wǎng)絡(luò)連接的無共享集群,執(zhí)行大規(guī)模數(shù)據(jù)分析任務(wù)。該模型非常簡單。對于同一程序,Hadoop支持多種語言編寫的Map/Reduce代碼,其中Java是其默認(rèn)的語言。與傳統(tǒng)的DBMS相比,Map/Reduce實(shí)現(xiàn)了更好的容錯性和異構(gòu)環(huán)境的操作性[7]。
Map/Reduce程序最為重要的特性在于其本質(zhì)上是并行處理,只要能夠?yàn)楹A繑?shù)據(jù)分析提供足夠的計(jì)算機(jī),其能夠完成的數(shù)據(jù)分析量是沒有限制的,因此,其優(yōu)勢也在于海量數(shù)據(jù)的分析處理上。Map/Reduce是為數(shù)據(jù)密集的并行計(jì)算設(shè)計(jì)的一種模型,數(shù)據(jù)被存儲在分布式文件系統(tǒng)(Distributed File System,DFS)中,以鍵-值對(key,value)來表示數(shù)據(jù),計(jì)算時(shí)分為2個(gè)過程(Map和Reduce),分別表示為:
Map: map(k1,v1)→list(k2,v2)
Reduce: reduce(k2,list(v2))→list(k3,v3)
Map/Reduce數(shù)據(jù)流如圖3所示,在主節(jié)點(diǎn)進(jìn)行數(shù)據(jù)分割,然后調(diào)用分節(jié)點(diǎn)進(jìn)行Map任務(wù),Map任務(wù)的輸出數(shù)據(jù)按照key的哈希值進(jìn)行排列(shuffle)后,含有同一個(gè)哈希鍵值的數(shù)據(jù)對被傳遞到分節(jié)點(diǎn)的同一個(gè)Reduce任務(wù),Reduce任務(wù)完成后的輸出寫入到DFS中。
圖3 Map/Reduce數(shù)據(jù)流
Map/Reduce并行計(jì)算框架,分布式程序的編寫大大簡化,這樣能夠使得用戶從編程的細(xì)節(jié)中解放出來,從而有更多的精力去處理任務(wù)的描述和實(shí)現(xiàn)。HDFS被證明在搜索引擎類型的應(yīng)用中是高效的。隨著數(shù)據(jù)爆炸式增長,Map/Reduce程序不局限于搜索引擎。Map/Reduce模型將作業(yè)劃分到各個(gè)節(jié)點(diǎn)執(zhí)行,實(shí)現(xiàn)Job級別的并發(fā),但對每個(gè)單獨(dú)的任務(wù),計(jì)算和I/O都是無并發(fā)的,當(dāng)遇到一些任務(wù)對計(jì)算和I/O能力要求較高時(shí),易產(chǎn)生系統(tǒng)瓶頸以及集群不穩(wěn)定。
1.3Hive平臺
基于Hadoop,立足于并行計(jì)算框架Map/Reduce,Hive平臺能夠提供Hive SQL分析語言,能夠完成HFDS系統(tǒng)中的數(shù)據(jù)分析,可有效簡化分布式海量數(shù)據(jù)分析的復(fù)雜性,構(gòu)建出高效實(shí)用的數(shù)據(jù)分析平臺,系統(tǒng)架構(gòu)[8]如圖4所示。
圖4 Hive系統(tǒng)架構(gòu)
Hive平臺數(shù)據(jù)分析流程是將結(jié)構(gòu)化數(shù)據(jù)存儲進(jìn)數(shù)據(jù)倉庫,通過Hive SQL語句完成數(shù)據(jù)的分析。相比于Pig、HBase等分布式數(shù)據(jù)處理平臺,Hive平臺的優(yōu)點(diǎn)如下:1)簡潔易懂,能夠使復(fù)雜緊耦合的Map/Reduce數(shù)據(jù)分析變成簡單松耦合的SQL語句查詢,使分布式數(shù)據(jù)分析更簡潔易懂;2)接口通用,能夠通過X/Open的SQL調(diào)用級接口服務(wù)開發(fā)框架,在分布式環(huán)境中,開發(fā)人員能夠采用常用的方式訪問數(shù)據(jù)。
2系統(tǒng)總體架構(gòu)設(shè)計(jì)
本文所設(shè)計(jì)的海量數(shù)據(jù)分析系統(tǒng)的總體架構(gòu)如圖5所示。系統(tǒng)總體架構(gòu)與傳統(tǒng)數(shù)據(jù)分析系統(tǒng)相差不大,分為3部分:客戶應(yīng)用程序(客戶端組件)、后端處理服務(wù)器和報(bào)表系統(tǒng)。該海量數(shù)據(jù)分析系統(tǒng)的基本工作流程是客戶端組件收集用戶使用軟件信息后,根據(jù)事件數(shù)據(jù)格式,上傳至接收服務(wù)器(Collector),實(shí)現(xiàn)匯總數(shù)據(jù)肢解后,發(fā)送至EMR,經(jīng)過Mapper與Reducer之后,基于Hive平臺,對數(shù)據(jù)進(jìn)行合并計(jì)算,并將匯總結(jié)果導(dǎo)入Mysql,輸出可視化報(bào)表,以供分析人員和決策人員使用。
圖5 系統(tǒng)總體架構(gòu)
3系統(tǒng)模塊分析
3.1客戶端分析設(shè)計(jì)
用戶在安裝軟件過程中,客戶端同軟件一起被部署到了用戶計(jì)算機(jī)中,其以軟件的組件形式存在??蛻舳说闹饕δ苁鞘占蛻舻牟僮饔涗?,并上傳至后端處理服務(wù)器??蛻舳私M件的設(shè)計(jì)需要考慮如下問題:1)事件類型的定義;2)事件數(shù)據(jù)的存儲形式;3)事件發(fā)送策略。本文所設(shè)計(jì)的客戶端信息流程圖如圖6所示。
圖6 客戶端信息流程圖
客戶端組件在Proxy中定義收集用戶使用軟件所產(chǎn)生信息的數(shù)據(jù)格式,在定義數(shù)據(jù)格式過程中完成2項(xiàng)工作:1)完成不關(guān)心數(shù)據(jù)的剔除,以減少后端服務(wù)處理器的數(shù)據(jù)量,進(jìn)而提高數(shù)據(jù)分析的效率;2)完成數(shù)據(jù)格式規(guī)范化,并將規(guī)定格式的數(shù)據(jù)存儲至本地?cái)?shù)據(jù)庫,每5 min與后端處理服務(wù)器進(jìn)行一次通信,上傳或下載數(shù)據(jù)信息。
3.2接收服務(wù)器設(shè)計(jì)
接收服務(wù)器主要是完成與客戶端組件的通信,并接收客戶端發(fā)送過來的統(tǒng)一格式的事件,基于Tomcat的Serverlet會將事件信息寫入log4j的log文件中并上傳至S3。其基本工作流程如圖7所示。
為確保海量數(shù)據(jù)分析結(jié)果的實(shí)時(shí)性,在設(shè)計(jì)接收服務(wù)器時(shí)應(yīng)根據(jù)時(shí)間需求設(shè)定log文件上傳至S3的頻率。本系統(tǒng)設(shè)計(jì)頻率為1分鐘/次。這樣,后端數(shù)據(jù)分析(EMR)能夠在預(yù)定時(shí)間分析這些數(shù)據(jù)。系統(tǒng)數(shù)據(jù)分析順序圖如圖8所示。
圖7 接收服務(wù)器設(shè)計(jì)的基本工作流程
圖8 系統(tǒng)數(shù)據(jù)分析順序圖
3.3后端數(shù)據(jù)分析設(shè)計(jì)
3.3.1數(shù)據(jù)預(yù)處理
后端數(shù)據(jù)分析之前,需要對事件數(shù)據(jù)預(yù)處理。事件數(shù)據(jù)預(yù)處理的設(shè)計(jì)主要是用來接收Event Collect的輸出數(shù)據(jù)文件,并對數(shù)據(jù)類型、版本或其他屬性進(jìn)行區(qū)分。
預(yù)處理的基本前提條件包括:1)Event Collect輸出的數(shù)據(jù)文件與S3指定目錄的數(shù)據(jù)文件不沖突;2)Event Collect輸出的數(shù)據(jù)文件格式必須為文本,并且每一行作為一個(gè)事件的記錄,在每一個(gè)事件記錄中的每一個(gè)信息的格式都是鍵值對(Name value pair,name=value),信息之間都是用“&”符號來隔開的;3)事件定義的Json文件與S3指定目標(biāo)下的文件不沖突。
數(shù)據(jù)預(yù)處理以EMR job的形式分如下4步進(jìn)行:1)輸入數(shù)據(jù)文件的準(zhǔn)備;2)Hadoop job提交;3)mapper和reducer任務(wù)執(zhí)行;4)處理結(jié)果的記錄、輸出并上傳至S3中。
3.3.2數(shù)據(jù)分析設(shè)計(jì)
完成數(shù)據(jù)預(yù)處理,并且Event Collect將所有數(shù)據(jù)輸出轉(zhuǎn)移后,Hadoop job初始化,數(shù)據(jù)文件所在文件夾作為該Hadoop job的輸入路徑。輸入數(shù)據(jù)準(zhǔn)備完畢后,EMR job運(yùn)行Hadoop job開始處理輸入數(shù)據(jù)文件,實(shí)現(xiàn)邏輯流程通常采用定制化的Mapper和Reducer來實(shí)現(xiàn)。程序包括Mapper、Reducer和Combiner程序,下述對程序具體實(shí)現(xiàn)功能進(jìn)行介紹。
Mapper程序的主要功能包括:1)驗(yàn)證數(shù)據(jù)格式,檢驗(yàn)下面的字段是否存在,或者格式是否正確;2)調(diào)用用來做事件格式驗(yàn)證的外部工具,事件數(shù)據(jù)做全數(shù)據(jù)驗(yàn)證,檢驗(yàn)?zāi)切┍仨毜淖侄问欠裼杏行У馁x值,并且檢驗(yàn)其數(shù)據(jù)類型是否與事件的定義文件一致;3)提取數(shù)據(jù)文件中的字段和值以用來做數(shù)據(jù)分割和數(shù)據(jù)分發(fā),構(gòu)建key string以供Reducer使用。該key string包含如下2個(gè)部分:Event Type和Version。
Reducer程序主要基于Mapper的輸出鍵值對,將這些數(shù)據(jù)按事件類型分類排序,并上傳至S3的指定文件夾中。Reducer程序輸出的數(shù)據(jù)文件可按下述格式進(jìn)行命名。
L0-
其中,
Combiner程序主要是用來執(zhí)行日常合并計(jì)算,并具有如下功能:1)豐富數(shù)據(jù)的屬性,主要利用連接事件數(shù)據(jù)、支持?jǐn)?shù)據(jù)獲得;2)派生出新的數(shù)據(jù)字段,利用連接不同類型的事件數(shù)據(jù)獲得;3)產(chǎn)生完整的session記錄,利用Startup Event和Shutdown Event,獲得Startup timestamp和Shutdown timestamp。實(shí)現(xiàn)的基本步驟包括:1)初始化支持?jǐn)?shù)據(jù)的表;2)Startup、Shutdown的初始化以及恢復(fù)的劃分;3)初始化Session表;4)執(zhí)行合并計(jì)算邏輯,并且將結(jié)果載入到Session表中指定的分區(qū)中。針對應(yīng)用需求,完成報(bào)表設(shè)計(jì)并進(jìn)行合并計(jì)算,主要包含:1)初始化支持?jǐn)?shù)據(jù)的表;2)初始化必須的事件或者合并計(jì)算的表;3)初始化目標(biāo)表;4)執(zhí)行合并計(jì)算邏輯,并且將結(jié)果載入到Session表中指定的分區(qū)中。
Combiner程序主要是根據(jù)Map/Reduce輸出結(jié)果的大小來決定的,若Mapper輸出結(jié)果很大,不利于網(wǎng)絡(luò)傳輸,將進(jìn)行合并。
3.4數(shù)據(jù)可視化設(shè)計(jì)
海量數(shù)據(jù)分析系統(tǒng)最終呈現(xiàn)給決策人員的信息,主要通過數(shù)據(jù)可視化來實(shí)現(xiàn),從而使分析結(jié)果變得直觀可見。主要分為數(shù)據(jù)存入Mysql和系統(tǒng)報(bào)表動態(tài)生成。
數(shù)據(jù)存入Mysql主要是通過Hadoop所提供的接口,完成數(shù)據(jù)庫鏈接,遍歷各項(xiàng)Hive表,讀出Hive表中的數(shù)據(jù),并存入Mysql中。根據(jù)海量數(shù)據(jù)分析系統(tǒng)前端程序的設(shè)計(jì),生成不同樣式、不同時(shí)間節(jié)點(diǎn)、可供直觀閱讀和分析的數(shù)據(jù)分析報(bào)表,供分析人員和決策人員使用。
4結(jié)語
在信息社會,人們的生活正在發(fā)生潛移默化的轉(zhuǎn)變,所產(chǎn)生的數(shù)據(jù)量呈指數(shù)式增長,要想從海量數(shù)據(jù)中分析得到有用的信息,云計(jì)算環(huán)境所提供的分布式處理、并行計(jì)算等成為必然選擇。本文通過分析Hadoop、Map/Reduce以及Hive平臺,完成了云計(jì)算環(huán)境下海量數(shù)據(jù)分析系統(tǒng)的設(shè)計(jì),對海量數(shù)據(jù)分析系統(tǒng)設(shè)計(jì)具有一定的參考價(jià)值。
參考文獻(xiàn)
[1] 陳康,鄭緯民.云計(jì)算:系統(tǒng)實(shí)例與研究現(xiàn)狀[J].軟件學(xué)報(bào),2009(5):1337-1348.
[2] 王敬昌.基于Hadoop分布式計(jì)算架構(gòu)的海量數(shù)據(jù)分析[J].?dāng)?shù)字技術(shù)與應(yīng)用,2010(7):6-7.
[3] 程苗,陳華平.基于Hadoop的Web日志挖掘[J].計(jì)算機(jī)工程,2011(11):37-39.
[4] 劉永楠,王宏志,高宏.Map/Reduce 框架下基于字符串波形的實(shí)體識別方法[J].計(jì)算機(jī)科學(xué)與探索,2011,5(8):730-739.
[5] 魏永山,張峰,陳欣,等.一種云計(jì)算環(huán)境下的XML查詢數(shù)據(jù)服務(wù)的優(yōu)化方法[J].計(jì)算機(jī)工程與科學(xué),2013,35(6):30-36.
[6] Tom White. Hadoop權(quán)威指南[M]. 北京:清華大學(xué)出版社,2010.
[7] 鄭啟龍,房明,汪勝,等.基于Map/Reduce模型的并行科學(xué)計(jì)算[J].微電子學(xué)與計(jì)算機(jī),2011,26(8):13-17.
[8] Thusoo A, Sarma J S, Jain N, et al. Hive-A petabyte scale data warehouse using Hadoop[C]//Proceedings of the 2010 IEEE 20th International Conference on Data Engineering (ICDE), USA:IEEE, 2010:996-1005.
責(zé)任編輯鄭練
Design of Massive Data Analysis System based on Cloud Computing Environment
SU Xi1, SU Yani2, HUO Mihui3
(1.Xi’an Medical University, Xi’an 710021, China; 2.Shaanxi People’s Hospital, Xi’an 710068, China;
3.Huawei Technology Co., Ltd., China)
Abstract:For the problem that the data analysis system is hardly to be applied in massive data for storage, analysis and processing efficiency, real-time, integrity and data maintenance costs, etc, the application of the cloud computing environment in the massive data analysis is ultra large scale, virtualization, economy and security is proposed. Based on the distributed computing architecture of Hadoop, using the parallel framework of Map/Reduce, the typical cloud computing environment is constructed. When adopt the analysis of the data warehouse platform Hive, the effectively and practical massive data analysis system is designed. With the design of the overall framework of the system as the foundation, analyze from the client, the receiving server, back-end data analysis, data visualization, and so on, the massive data analysis processing system design has a certain reference value.
Key words:massive data analysis, cloud computing environment, distributed computing, parallel processing, system design
收稿日期:2015-02-09
作者簡介:蘇曦(1987-),男,碩士,助教,主要從事統(tǒng)計(jì)與數(shù)據(jù)處理等方面的研究。
中圖分類號:TP 311.5
文獻(xiàn)標(biāo)志碼:A