【摘? 要】提出了基于Spark、HBase和JavaWeb的移動(dòng)網(wǎng)絡(luò)測評系統(tǒng)設(shè)計(jì),把柵格數(shù)據(jù)進(jìn)行地域分組聚合和比鄰分區(qū)存儲,提供適合分布式并行處理的數(shù)據(jù)架構(gòu),設(shè)計(jì)自主研發(fā)的集群,采用完全分布式架構(gòu)完成從數(shù)據(jù)檢索到測評切片子圖生成的全過程,實(shí)現(xiàn)了全高清分辨率下像素級柵格化測評結(jié)果的高效可視化。
【關(guān)鍵詞】大數(shù)據(jù);移動(dòng)網(wǎng)絡(luò);測評系統(tǒng);系統(tǒng)優(yōu)化
doi:10.3969/j.issn.1006-1010.2020.01.0017? ? ? ? 中圖分類號:TN929.5
文獻(xiàn)標(biāo)志碼:A? ? ? ? 文章編號:1006-1010(2020)01-0092-05
引用格式:高智衡. 基于大數(shù)據(jù)的移動(dòng)網(wǎng)絡(luò)測評系統(tǒng)設(shè)計(jì)和優(yōu)化[J]. 移動(dòng)通信, 2020,44(1): 92-96.
0? ?引言
移動(dòng)通信網(wǎng)的業(yè)務(wù)分布具有較強(qiáng)的地理空間特征,網(wǎng)絡(luò)規(guī)劃、優(yōu)化等大部分工作要求結(jié)合地理環(huán)境對網(wǎng)絡(luò)覆蓋進(jìn)行測評[1],而把網(wǎng)絡(luò)數(shù)據(jù)映射到電子地圖上進(jìn)行地理化呈現(xiàn)是一種重要的測評方式。
當(dāng)數(shù)據(jù)量較少(如傳統(tǒng)路測)時(shí),采用打點(diǎn)式測評,即直接在地圖上打點(diǎn),使用不同色系渲染不同區(qū)間內(nèi)的數(shù)據(jù)。隨著網(wǎng)絡(luò)演進(jìn)和大數(shù)據(jù)技術(shù)普及,可取得的測評數(shù)據(jù)越來越多,如南方某省運(yùn)營商從基站采集MR(Measure Report)測量報(bào)告數(shù)據(jù)每天多達(dá)300多億條,因而演化出柵格化測評。柵格是指地圖平面上選定某個(gè)點(diǎn)為原點(diǎn),按橫向和縱向進(jìn)行等距離切分而形成的網(wǎng)格。為配合各個(gè)地圖縮放級別,柵格的切分也相應(yīng)有多個(gè)級別?;贛R數(shù)據(jù)的位置計(jì)算各個(gè)柵格內(nèi)錄得的通信指標(biāo)統(tǒng)計(jì)均值,然后在地圖上以不同顏色代表各柵格的指標(biāo)質(zhì)量好壞[2]。
業(yè)界的柵格化測評方案主要有兩種。一種方案是預(yù)切圖,即針對所研究的地理范圍內(nèi)各種地圖比例尺預(yù)生成小圖塊,用戶訪問時(shí)直接加載小圖塊[3]。因評估結(jié)果已預(yù)生成,故此方案測評響應(yīng)非???,然而當(dāng)指標(biāo)種類較多時(shí),每個(gè)指標(biāo)均需預(yù)切一套圖,占用非常龐大的存儲空間。而且,無法滿足面向用戶的自定義指標(biāo)分段區(qū)間和個(gè)性化色系需求。另一種方案是即時(shí)動(dòng)態(tài)渲染,即根據(jù)所需顯示的柵格計(jì)算出需要可視化的像素位置,根據(jù)相關(guān)柵格指標(biāo)所屬區(qū)間計(jì)算出各柵格對應(yīng)的著色,然后進(jìn)行可視化。此方案可靈活調(diào)整色系、區(qū)間劃分等可視化效果。然而當(dāng)柵格數(shù)據(jù)量龐大時(shí),對系統(tǒng)的性能開銷巨大,為提供較快的測評響應(yīng),往往把柵格設(shè)計(jì)得較粗,以減少所需檢索的數(shù)據(jù),因而測評精度不高。本文研究如何基于大數(shù)據(jù)技術(shù)構(gòu)建高效率高精度的移動(dòng)網(wǎng)絡(luò)柵格化即時(shí)測評系統(tǒng)。
1? ?系統(tǒng)方案設(shè)計(jì)
系統(tǒng)業(yè)務(wù)邏輯方案如圖1所示,分為數(shù)據(jù)預(yù)處理和測評結(jié)果生成兩個(gè)階段。
在數(shù)據(jù)預(yù)處理階段,先對采集到的MR數(shù)據(jù)進(jìn)行定位,確定其經(jīng)緯度坐標(biāo),并按各級別的柵格進(jìn)行匯總。為了使更多MR數(shù)據(jù)可用,除使用基于終端的AGPS(Assisted Global Positioning System)定位外,還需要結(jié)合三角定位、指紋定位等多種基于網(wǎng)絡(luò)的定位技術(shù)[4]。然后,把各級別柵格的匯總數(shù)據(jù)以統(tǒng)計(jì)日期和柵格編號為行鍵(KEY)存入HBase。HBase是具有支持海量數(shù)據(jù)、列式存儲、分布式可擴(kuò)展、高可靠、高性能等特點(diǎn)的開源數(shù)據(jù)庫,能為數(shù)據(jù)檢索提供毫秒級快速響應(yīng)[5]。
在測評結(jié)果生成階段,先計(jì)算出關(guān)注區(qū)域的外接矩形所涉及的所有柵格,然后對這些柵格逐一處理:采用射線法快速判斷柵格中心點(diǎn)與關(guān)注區(qū)的關(guān)系[6],對于中心點(diǎn)落入關(guān)注區(qū)的柵格,則根據(jù)其柵格號檢索出相應(yīng)業(yè)務(wù)數(shù)據(jù),最后,根據(jù)取得的所有數(shù)據(jù)運(yùn)用Canvas高效渲染技術(shù)[7]展現(xiàn)測評結(jié)果。
本方案的技術(shù)架構(gòu)如圖2所示,數(shù)據(jù)存儲層為HDFS(Hadoop Distributed File System),負(fù)責(zé)MR數(shù)據(jù)源和HBase結(jié)果表數(shù)據(jù)的存儲,使用Spark對MR源數(shù)據(jù)進(jìn)行定位和匯總預(yù)處理,并加載數(shù)據(jù)到HBase集群。基于內(nèi)存計(jì)算的Spark可提供高性能的大規(guī)模數(shù)據(jù)處理能力[8],實(shí)現(xiàn)海量MR數(shù)據(jù)的處理。需要注意的是,為提升數(shù)據(jù)加載到HBase時(shí)的寫入性能,加載前Spark已對數(shù)據(jù)按KEY進(jìn)行排序,HBase集群提供對任意柵格的快速數(shù)據(jù)檢索服務(wù)?;贘avaWeb構(gòu)建數(shù)據(jù)查詢服務(wù),負(fù)責(zé)接收用戶提交的測評請求,檢索出所有相關(guān)柵格測評數(shù)據(jù),瀏覽器則負(fù)責(zé)結(jié)果展現(xiàn)。本方案一方面提供了面向海量數(shù)據(jù)源的高性能預(yù)處理能力,另一方面對任意形狀的關(guān)注區(qū)域,在檢索柵格量不超10萬的情況下,均可快速返回?cái)?shù)據(jù)并展示測評結(jié)果。
2? ?系統(tǒng)優(yōu)化
隨著測評工作的深入開展,用戶對測評的范圍和精度要求越來越高,當(dāng)查詢大規(guī)模柵格量時(shí),上述方案的不足之處就顯現(xiàn)出來了:
首先,由于柵格檢索量局限于10萬以內(nèi),所以測評效果精細(xì)度不高,存在著明顯的柵格方塊感。
其次,采用枚舉所有柵格的方式查詢HBase,總體效率低下。由于柵格數(shù)據(jù)進(jìn)行了按柵格號排序存儲,雖然十萬以下柵格量的查詢時(shí)性能還是比較高的,但柵格量增長到數(shù)十萬甚至數(shù)百萬時(shí),逐個(gè)柵格枚舉檢索方案的總體性能極其低下。
再次,柵格數(shù)據(jù)量龐大時(shí),服務(wù)端處理壓力劇增,極易引起數(shù)據(jù)查詢服務(wù)端內(nèi)存溢出故障。曾經(jīng)嘗試精細(xì)測評某個(gè)營銷服務(wù)中心,其涉及柵格約80多萬個(gè),程序執(zhí)行后JavaWeb服務(wù)端因內(nèi)存溢出而掛死。
最后,柵格數(shù)據(jù)量龐大時(shí),客戶端處理壓力大。實(shí)測表明,即使運(yùn)用了Canvas高效渲染技術(shù),客戶端單機(jī)處理大量柵格的渲染也十分耗時(shí),一般最多只可接受數(shù)萬柵格的測評。
針對以上問題,圍繞著實(shí)現(xiàn)像素級高精度大范圍即時(shí)測評的目標(biāo),對系統(tǒng)進(jìn)行了以下優(yōu)化。
(1)重構(gòu)柵格,提供像素級別的精細(xì)度
如前所述,為配合各縮放級別地圖,柵格的切分也相應(yīng)地有多種級別。柵格級別設(shè)計(jì)成從20 m開始,逐級倍增,形成[20, 40, 80, 160, 320……]這樣的柵格級別系列,因而每個(gè)級別均可從前一個(gè)級別直接匯總而成,有利于減少計(jì)算量。優(yōu)化前后的柵格級別與地圖縮放級別對應(yīng)關(guān)系如表1所示。優(yōu)化前,為避免過多柵格量的檢索,設(shè)計(jì)原則為全高清分辨率下全屏柵格量控制在不超過10萬,雖有效保證了響應(yīng)性能,但直接導(dǎo)致測評效果圖不精細(xì),優(yōu)化后方案以取得像素級別的測評精細(xì)度為目標(biāo),根據(jù)每個(gè)級別下的地圖像素距離,選取柵格級別系列中小于像素距離的最大值作為該級別的柵格距離。優(yōu)化前、后各地圖縮放級別與柵格級別的對應(yīng)關(guān)系如表1所示。
(2)重組柵格數(shù)據(jù)的存儲結(jié)構(gòu),實(shí)現(xiàn)批量檢索
從表1可見,優(yōu)化后實(shí)現(xiàn)了像素級別的測評精細(xì)度,但帶來的問題是涉及的柵格查詢量劇增,最多可達(dá)360多萬個(gè)。圖3是根據(jù)不同的柵格檢索量,分別使用枚舉檢索和批量檢索得出的響應(yīng)時(shí)間曲線。所謂枚舉檢索就是列出所有要求查詢柵格的KEY值來檢索;而批量檢索則是給出KEY的起止范圍。從圖可見,當(dāng)柵格數(shù)量較少(少于3萬個(gè))時(shí),兩者的響應(yīng)時(shí)間相差不大,但當(dāng)柵格量增加到10萬、30萬時(shí),枚舉檢索的時(shí)間急劇增長,而批量檢索則明顯高效得多。因此必須調(diào)整柵格按編號簡單排序的存儲方式,實(shí)現(xiàn)批量檢索,以提升查詢效率。
柵格數(shù)據(jù)的主要存儲結(jié)構(gòu)有:直接編碼、鏈?zhǔn)骄幋a、游程編碼、塊式編碼和四叉樹編碼等[9]。前述的按KEY簡單排序就屬于直接編碼,我們對其進(jìn)行改進(jìn),把k×j個(gè)柵格矩陣(稱為柵格組)合并為一個(gè)整體(對應(yīng)一個(gè)KEY),從而實(shí)現(xiàn)了柵格組內(nèi)的所有柵格數(shù)據(jù)的批量檢索。
優(yōu)化后,測評結(jié)果生成階段業(yè)務(wù)流程如圖4所示。由于不再按柵格而是按柵格組來檢索,因此檢索工作量大幅度減少為原來的(k×j)分之一。對每一個(gè)柵格組,根據(jù)它與關(guān)注區(qū)的拓?fù)潢P(guān)系,分為三種情況來處理。左邊,柵格組整體位于關(guān)注區(qū)內(nèi),則渲染組內(nèi)所有柵格而生成測評子圖;右邊,柵格組整體位于關(guān)注區(qū)外,則略過不處理;中間,柵格組部分處于關(guān)注區(qū)內(nèi)而部分處于關(guān)注區(qū)外。所以需要再進(jìn)一步遍歷組內(nèi)的每一個(gè)柵格,只保留處于關(guān)注區(qū)內(nèi)的柵格來生成測評子圖,最后把所有子圖拼接起來形成最終的測評結(jié)果。
(3)使用分布式架構(gòu)處理柵格組查詢和測評結(jié)果子圖生成
在全屏展示的情況下,當(dāng)柵格距離小于像素距離時(shí),柵格組的數(shù)量多達(dá)數(shù)百個(gè),為進(jìn)一步提升測評結(jié)果生成的處理效率,引入分布式計(jì)算架構(gòu),采用多個(gè)計(jì)算節(jié)點(diǎn)并行處理柵格組數(shù)據(jù)查詢和測評結(jié)果子圖生成的任務(wù)。
HBase的KEY設(shè)計(jì)要考慮在同一時(shí)間段讀寫操作都集中在某一個(gè)Region上而出現(xiàn)負(fù)載不均衡問題[10]。柵格組簡單地按日期和編號為KEY排序時(shí),某關(guān)注區(qū)所需檢索的HBase數(shù)據(jù)基本集中在一兩個(gè)Regionserver,容易引起HBase集群服務(wù)局部過熱。為此,增加?xùn)鸥窠M的預(yù)分區(qū)設(shè)計(jì),可強(qiáng)制使地域上鄰近的柵格組分布到不同的Region,避免HBase集群計(jì)算量分布不均衡[11]。預(yù)分區(qū)碼設(shè)計(jì)為P=(N×j+M)%=(j×k),其中j、k為正整數(shù),M為柵格組經(jīng)度方向編號,N為柵格組緯度方向編號。本設(shè)計(jì)可保證任意一個(gè)小于或等于j×k的柵格組矩陣內(nèi),P值不會重復(fù),從而實(shí)現(xiàn)良好的分布性。
完成上述優(yōu)化后,系統(tǒng)技術(shù)架構(gòu)調(diào)整為如圖5所示。關(guān)鍵改進(jìn)在于數(shù)據(jù)查詢服務(wù)和HBase之間加入了一個(gè)自主研發(fā)的分布式柵格檢索集群。集群中的Master負(fù)責(zé):識別出相關(guān)的所有柵格組的KEY值;按KEY平均分配任務(wù)給Worker;接收Worker返回的測評子圖并返回給數(shù)據(jù)查詢服務(wù)。各Worker負(fù)責(zé):向HBase集群提交查詢(枚舉所分配到的所有KEY);基于柵格組與關(guān)注區(qū)域的相互位置生成測評子圖;返回所負(fù)責(zé)的所有子圖給Master。Master采用多節(jié)點(diǎn)部署以提供高可用,整個(gè)集群集成到Zookeeper進(jìn)行統(tǒng)一管理。另外,JavaWeb和Browser拿到的是測評結(jié)果子圖,不再處理柵格級別的數(shù)據(jù),其處理壓力大大降低。
基于上述優(yōu)化方案,在實(shí)際生產(chǎn)系統(tǒng)上采用64×64個(gè)柵格合并為一個(gè)柵格組,分區(qū)公式中的j、k取值均為8,使用64個(gè)節(jié)點(diǎn)的分布式集群,可在3 s內(nèi)完成涉及3百多萬柵格的關(guān)注區(qū)域的即時(shí)測評。圖6和圖7是在5 km地圖比例尺下同一關(guān)注區(qū)域優(yōu)化前、后測評效果的局部截屏,可看出優(yōu)化后基于像素級精細(xì)度柵格的測評已不存在明顯的方塊感,黃色(質(zhì)差)區(qū)域的形狀非常精確,甚至可以看到優(yōu)化前無法呈現(xiàn)的少量紅色(質(zhì)量極差)區(qū)域的存在,測評效果大幅度提升。
3? ? 結(jié)束語
本文所提出的基于大數(shù)據(jù)的移動(dòng)網(wǎng)絡(luò)測評系統(tǒng),把柵格數(shù)據(jù)進(jìn)行地域分組聚合和比鄰分區(qū)存儲,提供了適合分布式并行處理的數(shù)據(jù)架構(gòu),通過自主研發(fā)分布式集群,采用完全分布式的架構(gòu)完成從數(shù)據(jù)檢索到測評切片子圖生成的全過程,實(shí)現(xiàn)了全高清分辨率下像素級柵格化測評結(jié)果的高效可視化,可為類似系統(tǒng)的建設(shè)提供參考。
參考文獻(xiàn):
[1]? ? ? ESRI中國(北京)有限公司. 通信行業(yè)GIS應(yīng)用解決方案及海外案例集錦[R]. 2012.
[2]? ? ?章孝燦,潘云鶴. GIS中基于“柵格技術(shù)”的柵格數(shù)據(jù)矢量化技術(shù)[J]. 計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào), 2001,13(10): 895-900.
[3]? ? ? 鄭姍,劉國柱. 一種柵格覆蓋信息的展示方法與裝置: 中國, 201710096981.8[P/OL]. (2017-07-14)[2019-06-10]. http://www.soopat.com/Patent/201710096981.
[4]? ? ?陳飛翔. 移動(dòng)空間信息服務(wù)關(guān)鍵技術(shù)研究[D]. 北京: 中國科學(xué)院, 2006.
[5]? ? RUCHIR C. HBase High Performance Cookbook[M]. Birmingham: Packt Publishing, 2017.
[6]? ? 向俊,王靜,夏幼明. 判斷點(diǎn)與多邊形拓?fù)潢P(guān)系的改進(jìn)算法[J]. 計(jì)算機(jī)工程與設(shè)計(jì), 2014,35(5): 1732-1737.
[7]? ? Apache Software Foundation. Spark Overview[EB/OL]. (2019-05-08)[2019-06-10]. https://spark.apache.org/docs/latest/.
[8]? ? ?吳飛燕. 基于 HTML5 Canvas 繪圖技術(shù)應(yīng)用[J]. 電子測試, 2018(4): 116-118.
[9]? ? ?百度百科. 柵格數(shù)據(jù)[EB/OL]. (2019-03-27)[2019-06-20]. https://baike.baidu.com/item/柵格數(shù)據(jù)/5261386.
[10]? ?李興菊,趙建軍. HBase數(shù)據(jù)庫行鍵設(shè)計(jì)及驗(yàn)證[J]. 軟件導(dǎo)刊, 2019(6): 26-30.
[11]? ?CSDN(Chinese Software Developer Network). HBase學(xué)習(xí)之六: HBase的預(yù)分區(qū)設(shè)計(jì)[EB/OL]. (2018-05-22)[2019-06-20]. https://blog.csdn.net/javajxz008/article/details/51913471.
作者簡介
高智衡(orcid.org/0000-0002-2357-6921):高級工程師,碩士畢業(yè)于華南理工大學(xué),MBA畢業(yè)于中山大學(xué),現(xiàn)任職于中國電信股份有限公司研究院,主要從事大數(shù)據(jù)平臺開發(fā)和應(yīng)用研究等工作。