羅琦芳
摘 要傳統(tǒng)電信數(shù)據(jù)平臺(tái)是中心式的,由數(shù)據(jù)倉(cāng)庫(kù)和關(guān)系型數(shù)據(jù)庫(kù)構(gòu)成。通過(guò)SQL來(lái)查詢有效的存儲(chǔ)于關(guān)系型數(shù)據(jù)庫(kù)中的用戶數(shù)據(jù)和信令數(shù)據(jù),只能對(duì)簡(jiǎn)單的問(wèn)題進(jìn)行分析,并且查詢?cè)L問(wèn)負(fù)載較低,不能應(yīng)對(duì)海量數(shù)據(jù)規(guī)模的存儲(chǔ)查詢和實(shí)時(shí)性的需求。本文提出一種基于Lambda架構(gòu)的電信數(shù)據(jù)平臺(tái)解決方案,實(shí)現(xiàn)了低延時(shí),可擴(kuò)展,容錯(cuò)性高的電信數(shù)據(jù)平臺(tái)。該數(shù)據(jù)平臺(tái)既可以通過(guò)離線批處理方式對(duì)存儲(chǔ)的全量歷史數(shù)據(jù)進(jìn)行迭代分析,也可以通過(guò)實(shí)時(shí)計(jì)算對(duì)實(shí)時(shí)生成的增量數(shù)據(jù)進(jìn)行低延時(shí)的計(jì)算,是一種良好的電信數(shù)據(jù)平臺(tái)解決方案。
【關(guān)鍵詞】電信數(shù)據(jù)平臺(tái) Lambda架構(gòu) 離線批處理 實(shí)時(shí)計(jì)算
1 引言
電信數(shù)據(jù)平臺(tái)承載著電信網(wǎng)中各類(lèi)用戶數(shù)據(jù)的收集過(guò)濾,存儲(chǔ)聚合,分析挖掘等功能,為企業(yè)對(duì)于用戶的各種決策提供一定數(shù)據(jù)支撐。同時(shí),電信數(shù)據(jù)平臺(tái)也通過(guò)收集相關(guān)的信令數(shù)據(jù),監(jiān)控電信網(wǎng)的實(shí)際運(yùn)行情況,是企業(yè)的核心系統(tǒng)之一。
傳統(tǒng)電信數(shù)據(jù)平臺(tái)由數(shù)據(jù)倉(cāng)庫(kù)和關(guān)系型數(shù)據(jù)庫(kù)構(gòu)成。數(shù)據(jù)采集端收集各種信息,如用戶狀態(tài),用戶位置,終端日志,網(wǎng)絡(luò)狀態(tài)等一系列異構(gòu)的數(shù)據(jù)信息,并統(tǒng)一匯總到數(shù)據(jù)倉(cāng)庫(kù)。數(shù)據(jù)倉(cāng)庫(kù)中存儲(chǔ)有全量信息,通過(guò)運(yùn)行各種ETL程序,將龐大的數(shù)據(jù)倉(cāng)庫(kù)的信息分門(mén)別類(lèi)轉(zhuǎn)移到例如Oracle,DB2,Sybase等各類(lèi)關(guān)系型數(shù)據(jù)庫(kù)的各個(gè)表中。數(shù)據(jù)分析人員一般通過(guò)類(lèi)似于商業(yè)智能的平臺(tái),通過(guò)撰寫(xiě)SQL語(yǔ)句,提取關(guān)系型數(shù)據(jù)庫(kù)中的有用數(shù)據(jù),來(lái)簡(jiǎn)單的分析各類(lèi)問(wèn)題。傳統(tǒng)的電信數(shù)據(jù)平臺(tái),具有集中式,造價(jià)昂貴,部署和運(yùn)維復(fù)雜等特點(diǎn)。在相當(dāng)長(zhǎng)一段時(shí)期內(nèi),由于單位時(shí)間生成的數(shù)據(jù)規(guī)模沒(méi)有顯著增加,沒(méi)有到達(dá)數(shù)據(jù)庫(kù)的使用瓶頸,傳統(tǒng)的電信數(shù)據(jù)平臺(tái)可以較好的應(yīng)對(duì)各種需求。但隨著單位時(shí)間內(nèi),采集端生成的數(shù)據(jù)飛速膨脹,每天生成數(shù)十億乃至上百億的各類(lèi)異構(gòu)數(shù)據(jù)需要存儲(chǔ)和分析,傳統(tǒng)的電信數(shù)據(jù)平臺(tái)逐漸暴露了其不足之處。
傳統(tǒng)的電信數(shù)據(jù)平臺(tái)組織方案有以下兩個(gè)方面的不足需要改進(jìn)。首先是對(duì)于海量數(shù)據(jù)存儲(chǔ)和查詢較為困難。中心型的關(guān)系型數(shù)據(jù)庫(kù)難以承受較高的用戶查詢負(fù)載,并且關(guān)系型數(shù)據(jù)庫(kù)的成本開(kāi)銷(xiāo)較為昂貴,并不支持簡(jiǎn)單的線性擴(kuò)展,若采用數(shù)據(jù)庫(kù)分庫(kù)和分表等輔助手段,則整個(gè)數(shù)據(jù)平臺(tái)的復(fù)雜性有較大提升并且難以維護(hù),所以傳統(tǒng)的電信數(shù)據(jù)平臺(tái)不能應(yīng)對(duì)海量數(shù)據(jù)的存儲(chǔ)和查詢。第二點(diǎn)不足是實(shí)時(shí)性不足。一般而言,數(shù)據(jù)在數(shù)據(jù)倉(cāng)庫(kù)構(gòu)建就需要很長(zhǎng)的數(shù)據(jù),由數(shù)據(jù)倉(cāng)庫(kù)經(jīng)ETL程序歸并到各類(lèi)數(shù)據(jù)庫(kù)同樣耗時(shí)巨大且有很多冗余的處理,同時(shí)批處理系統(tǒng)分析數(shù)據(jù)的延時(shí)在小時(shí)級(jí)別以上,隨著越來(lái)越多數(shù)據(jù)采集端的部署,數(shù)據(jù)產(chǎn)生速度越來(lái)越快,規(guī)模越來(lái)越大,實(shí)時(shí)對(duì)數(shù)據(jù)進(jìn)行分析,并把結(jié)果進(jìn)行可視化,對(duì)于實(shí)時(shí)監(jiān)控的需求越來(lái)越重要,傳統(tǒng)的電信數(shù)據(jù)平臺(tái)延時(shí)較大,不能夠適應(yīng)數(shù)據(jù)實(shí)時(shí)性的要求。
針對(duì)以上分析的不足,本文提出一種基于Lambda架構(gòu)的電信數(shù)據(jù)平臺(tái)解決方案。Lambda架構(gòu),是Nathan Marz提出的一個(gè)實(shí)時(shí)大數(shù)據(jù)處理框架,具備高吞吐量和低延時(shí)的特點(diǎn)。本文結(jié)合Lambda架構(gòu),闡述了新型電信數(shù)據(jù)平臺(tái)的基本構(gòu)成和各層的職責(zé),同時(shí)也具體介紹了各層使用的互聯(lián)網(wǎng)開(kāi)源大數(shù)據(jù)項(xiàng)目,描述了整個(gè)工作流程和數(shù)據(jù)流向,體現(xiàn)了新型電信數(shù)據(jù)平臺(tái)具備的高吞吐量,低延時(shí),高容錯(cuò)性的特點(diǎn),解決了傳統(tǒng)電信數(shù)據(jù)平臺(tái)難以應(yīng)對(duì)海量數(shù)據(jù)存儲(chǔ)和查詢,以及不能實(shí)時(shí)分析的不足。為電信網(wǎng)各數(shù)據(jù)平臺(tái)在新需求下的轉(zhuǎn)型提供了一個(gè)良好的嘗試。
2 相關(guān)技術(shù)介紹
2.1 Lambda架構(gòu)
Lambda架構(gòu)是由Nathan Marz提出的一種大數(shù)據(jù)處理架構(gòu),結(jié)合了批處理計(jì)算和實(shí)時(shí)計(jì)算的特點(diǎn),融合了不可變性,讀寫(xiě)分離和復(fù)雜性隔離等一系列架構(gòu)原則,具備高容錯(cuò)、低延時(shí)和可擴(kuò)展等特點(diǎn)。一般分為批處理層,服務(wù)層和速度層,如圖1所示。
批處理層對(duì)全量數(shù)據(jù)進(jìn)行迭代計(jì)算,全量數(shù)據(jù)可以認(rèn)為是一個(gè)不可變的持續(xù)增長(zhǎng)的數(shù)據(jù)集。批處理層對(duì)于全量數(shù)據(jù)進(jìn)行批處理計(jì)算,得到批處理視圖,存儲(chǔ)到服務(wù)層。服務(wù)層可以根據(jù)查詢條件,對(duì)批處理視圖的結(jié)果進(jìn)行再次合并等處理。批處理層通過(guò)定時(shí)的重復(fù)批處理視圖的更新,可以保證數(shù)據(jù)的高容錯(cuò)性,但是計(jì)算時(shí)間一般較長(zhǎng),延時(shí)較大,適用于全局規(guī)模的分析和預(yù)計(jì)算。批處理層一般由大數(shù)據(jù)批處理框架來(lái)實(shí)現(xiàn)。
服務(wù)層的任務(wù)是對(duì)于用戶查詢提供支持。它根據(jù)查詢條件,隨機(jī)訪問(wèn)視圖,組合批處理視圖和實(shí)時(shí)視圖的結(jié)果,最終反饋給用戶。服務(wù)層一般由NoSql數(shù)據(jù)庫(kù)實(shí)現(xiàn),但是為了降低復(fù)雜性,不允許對(duì)視圖結(jié)果進(jìn)行隨機(jī)寫(xiě)操作,僅提供對(duì)于批處理視圖和實(shí)時(shí)視圖的加載和隨機(jī)讀取操作。
速度層負(fù)責(zé)實(shí)時(shí)計(jì)算增量數(shù)據(jù)。由于批處理計(jì)算比較耗時(shí),隨時(shí)而來(lái)的實(shí)時(shí)增量數(shù)據(jù)等不到有效計(jì)算,通過(guò)引入速度層解決這一問(wèn)題。速度層只處理最近的數(shù)據(jù),采用快速,增量的算法,通過(guò)實(shí)時(shí)計(jì)算,維護(hù)較小規(guī)模的實(shí)時(shí)視圖,是對(duì)批處理視圖更新是較高延時(shí)的一種補(bǔ)充。同時(shí),由于全量數(shù)據(jù)計(jì)算的準(zhǔn)確性,允許批處理視圖最終覆蓋實(shí)時(shí)視圖。速度層一般由消息系統(tǒng)隨時(shí)拉取新增的數(shù)據(jù),并通過(guò)實(shí)時(shí)流式計(jì)算框架完成實(shí)時(shí)視圖的生成。
2.2 Hadoop
Hadoop是一個(gè)處理海量數(shù)據(jù)的分布式系統(tǒng)基礎(chǔ)架構(gòu)。Hadoop 2.0架構(gòu)由HDFS,YARN和MapReduce構(gòu)成。HDFS是Hadoop中的分布式文件系統(tǒng),它將海量數(shù)據(jù)存儲(chǔ)于DataNode中,由NameNode維護(hù)各DataNode的元數(shù)據(jù)信息。YARN是Hadoop中的資源管理系統(tǒng),監(jiān)控每個(gè)節(jié)點(diǎn),并協(xié)調(diào)MapReduce任務(wù)的分配。MapReduce是Hadoop中分布式數(shù)據(jù)處理框架,它將數(shù)據(jù)處理分為兩個(gè)階段,即Map和Reduce兩個(gè)階段,提供批處理并行計(jì)算的框架。對(duì)于Map階段,對(duì)輸入數(shù)據(jù)應(yīng)用Map Function,執(zhí)行結(jié)果為Key和Value的元組,相同Key的元組通過(guò)執(zhí)行Reduce Function進(jìn)行合并,最終生成結(jié)果。Hadoop有很豐富的其他組件支持各種需求的分析,如Pig,Hive,Impala等,這些高級(jí)工具可以自動(dòng)將高級(jí)原語(yǔ)翻譯為MapReduce任務(wù)執(zhí)行,有更好的使用體驗(yàn)。本文,Hadoop作為L(zhǎng)ambda架構(gòu)中批處理層實(shí)現(xiàn),全量數(shù)據(jù)存儲(chǔ)在HDFS上,應(yīng)用MapReduce計(jì)算,生成批處理視圖。
3 結(jié)束語(yǔ)
本文結(jié)合Nathan Marz提出的Lambda架構(gòu)和電信數(shù)據(jù)的特點(diǎn),提出了基于Lambda架構(gòu)的電信數(shù)據(jù)平臺(tái)解決方案。本方案既可以通過(guò)全量數(shù)據(jù)的定期迭代計(jì)算,離線分析電信網(wǎng)收集的相關(guān)數(shù)據(jù),生成批量視圖,同時(shí)也可以通過(guò)流式計(jì)算框架,對(duì)增量數(shù)據(jù)進(jìn)行實(shí)時(shí)分析,生成增量視圖。同時(shí),將批量視圖和增量視圖聚合,一起組合為查詢服務(wù),使得平臺(tái)既有實(shí)時(shí)系統(tǒng)的吞吐量,有具備離線系統(tǒng)的完備性。
參考文獻(xiàn)
[1]Marz N,Warren J.Big Data:Principles and best practices of scalable realtime data systems[M].Manning,2015.
[2]Chaudhri A B."Next Gen Hadoop:Gather around the campfire and I will tell you a good YARN"[J].
[3]Yang W,Liu X,Zhang L,et al.Big Data Real-Time Processing Based on Storm[J].2013,8(01):1784-1787.
作者單位
中國(guó)移動(dòng)通信有限公司 北京市 100033