蘇 曦,蘇亞妮,霍米會
(1.西安醫(yī)學院,陜西 西安 710021;2.陜西省人民醫(yī)院,陜西 西安 710068;3.華為技術股份有限公司,廣東 深圳 518000)
云計算環(huán)境下海量數據分析系統(tǒng)的設計
蘇曦1,蘇亞妮2,霍米會3
(1.西安醫(yī)學院,陜西 西安 710021;2.陜西省人民醫(yī)院,陜西 西安 710068;3.華為技術股份有限公司,廣東 深圳 518000)
摘要:針對傳統(tǒng)計算環(huán)境中海量數據存儲、分析處理效率、實時性、完整性和數據維護費用等難題,利用云計算環(huán)境的超大規(guī)模、虛擬化、經濟和安全可靠等特點,進行海量數據分析?;诜植际接嬎慵軜婬adoop,利用并行計算框架Map/Reduce,構建了典型的云計算環(huán)境,并采用數據倉庫分析平臺Hive,實現了高效、實用的海量數據分析系統(tǒng)的設計。以系統(tǒng)總體框架設計為基礎,從客戶端分析、接收服務器、后端數據分析和數據可視化等模塊完成了系統(tǒng)設計,對海量數據分析處理系統(tǒng)設計具有一定參考價值。
關鍵詞:海量數據分析;云計算環(huán)境;分布式計算;并行處理;系統(tǒng)設計
信息技術的飛速發(fā)展,使產生的信息量呈現爆炸式增長,為此,圖靈獎獲得者Jim Gray提出了一個新的經驗定律:網絡環(huán)境下每18個月產生的數據量等于有史以來數據量之和[1]。人們要想從這些海量數據中得到有用的信息和知識,傳統(tǒng)的數據處理方法面臨嚴峻的挑戰(zhàn),特別是在海量數據存儲、分析處理效率、實時性、完整性和數據維護費用等方面[2]。云計算作為信息技術的新貴,將引領信息技術發(fā)展加速,將促進信息利用與共享。由大量云計算平臺、云應用和云服務構成的云計算環(huán)境,為海量數據分析處理提供了超大規(guī)模、虛擬化、經濟和安全可靠的系統(tǒng)環(huán)境[3-5]。
本文正是利用云計算環(huán)境下的上述特點,基于分布式計算架構Hadoop,利用并行計算框架Map/Reduce,構建了典型的云計算環(huán)境,并采用數據倉庫分析平臺Hive,實現了高效、實用的海量數據分析系統(tǒng)的設計。
1Hadoop相關技術簡介
1.1Hadoop結構及模塊
Hadoop的基本體系結構如圖1所示。Hadoop是Apache軟件基金會所研發(fā)的并行運算編程工具和分布式文件系統(tǒng),它作為一個開源的軟件平臺,使編寫和運行用于處理海量數據的應用程序更加容易[6]。通常來說,Hadoop主要實現2大功能:1)存儲,Hadoop采用分布式存儲結構,能夠實現方便可靠的海量數據存儲,即HDFS(Hadoop Distributed File System)組件;2)分析,Hadoop采用并行式計算框架Map/Reduce及其組件,能夠實現高效可靠的海量數據分析運算。運用Hadoop框架完成海量數據分析,主要是通過開發(fā)編寫Map/Reduce系統(tǒng),進而完成海量數據的分析處理任務。開發(fā)過程并不需要了解系統(tǒng)底層的基本架構。其海量數據分析的可靠性是通過更改相應配置文件,利用HDFS完成數個或更多的數據副本備份。若節(jié)點出錯,則可以通過數據塊副本來完成數據處理任務。同時利用Map/Reduce完成數據分析任務調度,將海量數據分割為細粒度的子任務,子任務通過任務調度模型,實現任務的合理分配,即運行更快的節(jié)點將分配到更多任務,從而實現快速的海量數據分析?;緢?zhí)行步驟包括輸入數據文件、分割并分配并行計算節(jié)點、節(jié)點寫本地中間文件、合并中間文件和輸出最終分析結果。
圖1 Hadoop的基本體系結構
Hadoop模塊設計如圖2所示,Hadoop的功能模塊包括作業(yè)跟蹤器(Job Tracker)、任務跟蹤器(Task Tracker)和應用程序(Application)。作業(yè)跟蹤器負責作業(yè)管理和操作,任務跟蹤器負責任務的管理和操作、應用程序接口。
圖2 Hadoop模塊設計
1.2Map/Reduce及其框架
Map/Reduce編程模型是一個可以在云計算環(huán)境中進行并行數據分析的框架,利用由普通計算機組成的、通過高速網絡連接的無共享集群,執(zhí)行大規(guī)模數據分析任務。該模型非常簡單。對于同一程序,Hadoop支持多種語言編寫的Map/Reduce代碼,其中Java是其默認的語言。與傳統(tǒng)的DBMS相比,Map/Reduce實現了更好的容錯性和異構環(huán)境的操作性[7]。
Map/Reduce程序最為重要的特性在于其本質上是并行處理,只要能夠為海量數據分析提供足夠的計算機,其能夠完成的數據分析量是沒有限制的,因此,其優(yōu)勢也在于海量數據的分析處理上。Map/Reduce是為數據密集的并行計算設計的一種模型,數據被存儲在分布式文件系統(tǒng)(Distributed File System,DFS)中,以鍵-值對(key,value)來表示數據,計算時分為2個過程(Map和Reduce),分別表示為:
Map: map(k1,v1)→list(k2,v2)
Reduce: reduce(k2,list(v2))→list(k3,v3)
Map/Reduce數據流如圖3所示,在主節(jié)點進行數據分割,然后調用分節(jié)點進行Map任務,Map任務的輸出數據按照key的哈希值進行排列(shuffle)后,含有同一個哈希鍵值的數據對被傳遞到分節(jié)點的同一個Reduce任務,Reduce任務完成后的輸出寫入到DFS中。
圖3 Map/Reduce數據流
Map/Reduce并行計算框架,分布式程序的編寫大大簡化,這樣能夠使得用戶從編程的細節(jié)中解放出來,從而有更多的精力去處理任務的描述和實現。HDFS被證明在搜索引擎類型的應用中是高效的。隨著數據爆炸式增長,Map/Reduce程序不局限于搜索引擎。Map/Reduce模型將作業(yè)劃分到各個節(jié)點執(zhí)行,實現Job級別的并發(fā),但對每個單獨的任務,計算和I/O都是無并發(fā)的,當遇到一些任務對計算和I/O能力要求較高時,易產生系統(tǒng)瓶頸以及集群不穩(wěn)定。
1.3Hive平臺
基于Hadoop,立足于并行計算框架Map/Reduce,Hive平臺能夠提供Hive SQL分析語言,能夠完成HFDS系統(tǒng)中的數據分析,可有效簡化分布式海量數據分析的復雜性,構建出高效實用的數據分析平臺,系統(tǒng)架構[8]如圖4所示。
圖4 Hive系統(tǒng)架構
Hive平臺數據分析流程是將結構化數據存儲進數據倉庫,通過Hive SQL語句完成數據的分析。相比于Pig、HBase等分布式數據處理平臺,Hive平臺的優(yōu)點如下:1)簡潔易懂,能夠使復雜緊耦合的Map/Reduce數據分析變成簡單松耦合的SQL語句查詢,使分布式數據分析更簡潔易懂;2)接口通用,能夠通過X/Open的SQL調用級接口服務開發(fā)框架,在分布式環(huán)境中,開發(fā)人員能夠采用常用的方式訪問數據。
2系統(tǒng)總體架構設計
本文所設計的海量數據分析系統(tǒng)的總體架構如圖5所示。系統(tǒng)總體架構與傳統(tǒng)數據分析系統(tǒng)相差不大,分為3部分:客戶應用程序(客戶端組件)、后端處理服務器和報表系統(tǒng)。該海量數據分析系統(tǒng)的基本工作流程是客戶端組件收集用戶使用軟件信息后,根據事件數據格式,上傳至接收服務器(Collector),實現匯總數據肢解后,發(fā)送至EMR,經過Mapper與Reducer之后,基于Hive平臺,對數據進行合并計算,并將匯總結果導入Mysql,輸出可視化報表,以供分析人員和決策人員使用。
圖5 系統(tǒng)總體架構
3系統(tǒng)模塊分析
3.1客戶端分析設計
用戶在安裝軟件過程中,客戶端同軟件一起被部署到了用戶計算機中,其以軟件的組件形式存在??蛻舳说闹饕δ苁鞘占蛻舻牟僮饔涗洠⑸蟼髦梁蠖颂幚矸掌?。客戶端組件的設計需要考慮如下問題:1)事件類型的定義;2)事件數據的存儲形式;3)事件發(fā)送策略。本文所設計的客戶端信息流程圖如圖6所示。
圖6 客戶端信息流程圖
客戶端組件在Proxy中定義收集用戶使用軟件所產生信息的數據格式,在定義數據格式過程中完成2項工作:1)完成不關心數據的剔除,以減少后端服務處理器的數據量,進而提高數據分析的效率;2)完成數據格式規(guī)范化,并將規(guī)定格式的數據存儲至本地數據庫,每5 min與后端處理服務器進行一次通信,上傳或下載數據信息。
3.2接收服務器設計
接收服務器主要是完成與客戶端組件的通信,并接收客戶端發(fā)送過來的統(tǒng)一格式的事件,基于Tomcat的Serverlet會將事件信息寫入log4j的log文件中并上傳至S3。其基本工作流程如圖7所示。
為確保海量數據分析結果的實時性,在設計接收服務器時應根據時間需求設定log文件上傳至S3的頻率。本系統(tǒng)設計頻率為1分鐘/次。這樣,后端數據分析(EMR)能夠在預定時間分析這些數據。系統(tǒng)數據分析順序圖如圖8所示。
圖7 接收服務器設計的基本工作流程
圖8 系統(tǒng)數據分析順序圖
3.3后端數據分析設計
3.3.1數據預處理
后端數據分析之前,需要對事件數據預處理。事件數據預處理的設計主要是用來接收Event Collect的輸出數據文件,并對數據類型、版本或其他屬性進行區(qū)分。
預處理的基本前提條件包括:1)Event Collect輸出的數據文件與S3指定目錄的數據文件不沖突;2)Event Collect輸出的數據文件格式必須為文本,并且每一行作為一個事件的記錄,在每一個事件記錄中的每一個信息的格式都是鍵值對(Name value pair,name=value),信息之間都是用“&”符號來隔開的;3)事件定義的Json文件與S3指定目標下的文件不沖突。
數據預處理以EMR job的形式分如下4步進行:1)輸入數據文件的準備;2)Hadoop job提交;3)mapper和reducer任務執(zhí)行;4)處理結果的記錄、輸出并上傳至S3中。
3.3.2數據分析設計
完成數據預處理,并且Event Collect將所有數據輸出轉移后,Hadoop job初始化,數據文件所在文件夾作為該Hadoop job的輸入路徑。輸入數據準備完畢后,EMR job運行Hadoop job開始處理輸入數據文件,實現邏輯流程通常采用定制化的Mapper和Reducer來實現。程序包括Mapper、Reducer和Combiner程序,下述對程序具體實現功能進行介紹。
Mapper程序的主要功能包括:1)驗證數據格式,檢驗下面的字段是否存在,或者格式是否正確;2)調用用來做事件格式驗證的外部工具,事件數據做全數據驗證,檢驗那些必須的字段是否有有效的賦值,并且檢驗其數據類型是否與事件的定義文件一致;3)提取數據文件中的字段和值以用來做數據分割和數據分發(fā),構建key string以供Reducer使用。該key string包含如下2個部分:Event Type和Version。
Reducer程序主要基于Mapper的輸出鍵值對,將這些數據按事件類型分類排序,并上傳至S3的指定文件夾中。Reducer程序輸出的數據文件可按下述格式進行命名。
L0-
其中,
Combiner程序主要是用來執(zhí)行日常合并計算,并具有如下功能:1)豐富數據的屬性,主要利用連接事件數據、支持數據獲得;2)派生出新的數據字段,利用連接不同類型的事件數據獲得;3)產生完整的session記錄,利用Startup Event和Shutdown Event,獲得Startup timestamp和Shutdown timestamp。實現的基本步驟包括:1)初始化支持數據的表;2)Startup、Shutdown的初始化以及恢復的劃分;3)初始化Session表;4)執(zhí)行合并計算邏輯,并且將結果載入到Session表中指定的分區(qū)中。針對應用需求,完成報表設計并進行合并計算,主要包含:1)初始化支持數據的表;2)初始化必須的事件或者合并計算的表;3)初始化目標表;4)執(zhí)行合并計算邏輯,并且將結果載入到Session表中指定的分區(qū)中。
Combiner程序主要是根據Map/Reduce輸出結果的大小來決定的,若Mapper輸出結果很大,不利于網絡傳輸,將進行合并。
3.4數據可視化設計
海量數據分析系統(tǒng)最終呈現給決策人員的信息,主要通過數據可視化來實現,從而使分析結果變得直觀可見。主要分為數據存入Mysql和系統(tǒng)報表動態(tài)生成。
數據存入Mysql主要是通過Hadoop所提供的接口,完成數據庫鏈接,遍歷各項Hive表,讀出Hive表中的數據,并存入Mysql中。根據海量數據分析系統(tǒng)前端程序的設計,生成不同樣式、不同時間節(jié)點、可供直觀閱讀和分析的數據分析報表,供分析人員和決策人員使用。
4結語
在信息社會,人們的生活正在發(fā)生潛移默化的轉變,所產生的數據量呈指數式增長,要想從海量數據中分析得到有用的信息,云計算環(huán)境所提供的分布式處理、并行計算等成為必然選擇。本文通過分析Hadoop、Map/Reduce以及Hive平臺,完成了云計算環(huán)境下海量數據分析系統(tǒng)的設計,對海量數據分析系統(tǒng)設計具有一定的參考價值。
參考文獻
[1] 陳康,鄭緯民.云計算:系統(tǒng)實例與研究現狀[J].軟件學報,2009(5):1337-1348.
[2] 王敬昌.基于Hadoop分布式計算架構的海量數據分析[J].數字技術與應用,2010(7):6-7.
[3] 程苗,陳華平.基于Hadoop的Web日志挖掘[J].計算機工程,2011(11):37-39.
[4] 劉永楠,王宏志,高宏.Map/Reduce 框架下基于字符串波形的實體識別方法[J].計算機科學與探索,2011,5(8):730-739.
[5] 魏永山,張峰,陳欣,等.一種云計算環(huán)境下的XML查詢數據服務的優(yōu)化方法[J].計算機工程與科學,2013,35(6):30-36.
[6] Tom White. Hadoop權威指南[M]. 北京:清華大學出版社,2010.
[7] 鄭啟龍,房明,汪勝,等.基于Map/Reduce模型的并行科學計算[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.
責任編輯鄭練
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)計與數據處理等方面的研究。
中圖分類號:TP 311.5
文獻標志碼:A