【摘 要】提出了基于Spark、HBase和JavaWeb的移动网络测评系统设计,把栅格数据进行地域分组聚合和比邻分区存储,提供适合分布式并行处理的数据架构,设计自主研发的集群,采用完全分布式架构完成从数据检索到测评切片子图生成的全过程,实现了全高清分辨率下像素级栅格化测评结果的高效可视化。
【关键词】大数据;移动网络;测评系统;系统优化
doi:10.3969/j.issn.1006-1010.2020.01.0017 中图分类号:TN929.5
文献标志码:A 文章编号:1006-1010(2020)01-0092-05
引用格式:高智衡. 基于大数据的移动网络测评系统设计和优化[J]. 移动通信, 2020,44(1): 92-96.
0 引言
移动通信网的业务分布具有较强的地理空间特征,网络规划、优化等大部分工作要求结合地理环境对网络覆盖进行测评[1],而把网络数据映射到电子地图上进行地理化呈现是一种重要的测评方式。
当数据量较少(如传统路测)时,采用打点式测评,即直接在地图上打点,使用不同色系渲染不同区间内的数据。随着网络演进和大数据技术普及,可取得的测评数据越来越多,如南方某省运营商从基站采集MR(Measure Report)测量报告数据每天多达300多亿条,因而演化出栅格化测评。栅格是指地图平面上选定某个点为原点,按横向和纵向进行等距离切分而形成的网格。为配合各个地图缩放级别,栅格的切分也相应有多个级别。基于MR數据的位置计算各个栅格内录得的通信指标统计均值,然后在地图上以不同颜色代表各栅格的指标质量好坏[2]。
业界的栅格化测评方案主要有两种。一种方案是预切图,即针对所研究的地理范围内各种地图比例尺预生成小图块,用户访问时直接加载小图块[3]。因评估结果已预生成,故此方案测评响应非常快,然而当指标种类较多时,每个指标均需预切一套图,占用非常庞大的存储空间。而且,无法满足面向用户的自定义指标分段区间和个性化色系需求。另一种方案是即时动态渲染,即根据所需显示的栅格计算出需要可视化的像素位置,根据相关栅格指标所属区间计算出各栅格对应的着色,然后进行可视化。此方案可灵活调整色系、区间划分等可视化效果。然而当栅格数据量庞大时,对系统的性能开销巨大,为提供较快的测评响应,往往把栅格设计得较粗,以减少所需检索的数据,因而测评精度不高。本文研究如何基于大数据技术构建高效率高精度的移动网络栅格化即时测评系统。
1 系统方案设计
系统业务逻辑方案如图1所示,分为数据预处理和测评结果生成两个阶段。
在数据预处理阶段,先对采集到的MR数据进行定位,确定其经纬度坐标,并按各级别的栅格进行汇总。为了使更多MR数据可用,除使用基于终端的AGPS(Assisted Global Positioning System)定位外,还需要结合三角定位、指纹定位等多种基于网络的定位技术[4]。然后,把各级别栅格的汇总数据以统计日期和栅格编号为行键(KEY)存入HBase。HBase是具有支持海量数据、列式存储、分布式可扩展、高可靠、高性能等特点的开源数据库,能为数据检索提供毫秒级快速响应[5]。
在测评结果生成阶段,先计算出关注区域的外接矩形所涉及的所有栅格,然后对这些栅格逐一处理:采用射线法快速判断栅格中心点与关注区的关系[6],对于中心点落入关注区的栅格,则根据其栅格号检索出相应业务数据,最后,根据取得的所有数据运用Canvas高效渲染技术[7]展现测评结果。
本方案的技术架构如图2所示,数据存储层为HDFS(Hadoop Distributed File System),负责MR数据源和HBase结果表数据的存储,使用Spark对MR源数据进行定位和汇总预处理,并加载数据到HBase集群。基于内存计算的Spark可提供高性能的大规模数据处理能力[8],实现海量MR数据的处理。需要注意的是,为提升数据加载到HBase时的写入性能,加载前Spark已对数据按KEY进行排序,HBase集群提供对任意栅格的快速数据检索服务。基于JavaWeb构建数据查询服务,负责接收用户提交的测评请求,检索出所有相关栅格测评数据,浏览器则负责结果展现。本方案一方面提供了面向海量数据源的高性能预处理能力,另一方面对任意形状的关注区域,在检索栅格量不超10万的情况下,均可快速返回数据并展示测评结果。
2 系统优化
随着测评工作的深入开展,用户对测评的范围和精度要求越来越高,当查询大规模栅格量时,上述方案的不足之处就显现出来了:
首先,由于栅格检索量局限于10万以内,所以测评效果精细度不高,存在着明显的栅格方块感。
其次,采用枚举所有栅格的方式查询HBase,总体效率低下。由于栅格数据进行了按栅格号排序存储,虽然十万以下栅格量的查询时性能还是比较高的,但栅格量增长到数十万甚至数百万时,逐个栅格枚举检索方案的总体性能极其低下。
再次,栅格数据量庞大时,服务端处理压力剧增,极易引起数据查询服务端内存溢出故障。曾经尝试精细测评某个营销服务中心,其涉及栅格约80多万个,程序执行后JavaWeb服务端因内存溢出而挂死。
最后,栅格数据量庞大时,客户端处理压力大。实测表明,即使运用了Canvas高效渲染技术,客户端单机处理大量栅格的渲染也十分耗时,一般最多只可接受数万栅格的测评。
针对以上问题,围绕着实现像素级高精度大范围即时测评的目标,对系统进行了以下优化。
(1)重构栅格,提供像素级别的精细度
如前所述,为配合各缩放级别地图,栅格的切分也相应地有多种级别。栅格级别设计成从20 m开始,逐级倍增,形成[20, 40, 80, 160, 320……]这样的栅格级别系列,因而每个级别均可从前一个级别直接汇总而成,有利于减少计算量。优化前后的栅格级别与地图缩放级别对应关系如表1所示。优化前,为避免过多栅格量的检索,设计原则为全高清分辨率下全屏栅格量控制在不超过10万,虽有效保证了响应性能,但直接导致测评效果图不精细,优化后方案以取得像素级别的测评精细度为目标,根据每个级别下的地图像素距离,选取栅格级别系列中小于像素距离的最大值作为该级别的栅格距离。优化前、后各地图缩放级别与栅格级别的对应关系如表1所示。
(2)重组栅格数据的存储结构,实现批量检索
从表1可见,优化后实现了像素级别的测评精细度,但带来的问题是涉及的栅格查询量剧增,最多可达360多万个。图3是根据不同的栅格检索量,分别使用枚举检索和批量检索得出的响应时间曲线。所谓枚举检索就是列出所有要求查询栅格的KEY值来检索;而批量检索则是给出KEY的起止范围。从图可见,当栅格数量较少(少于3万个)时,两者的响应时间相差不大,但当栅格量增加到10万、30万时,枚举检索的时间急剧增长,而批量检索则明显高效得多。因此必须调整栅格按编号简单排序的存储方式,实现批量检索,以提升查询效率。
栅格数据的主要存储结构有:直接编码、链式编码、游程编码、块式编码和四叉树编码等[9]。前述的按KEY简单排序就属于直接编码,我们对其进行改进,把k×j个栅格矩阵(称为栅格组)合并为一个整体(对应一个KEY),从而实现了栅格组内的所有栅格数据的批量检索。
优化后,测评结果生成阶段业务流程如图4所示。由于不再按栅格而是按栅格组来检索,因此检索工作量大幅度减少为原来的(k×j)分之一。对每一个栅格组,根据它与关注区的拓扑关系,分为三种情况来处理。左边,栅格组整体位于关注区内,则渲染组内所有栅格而生成测评子图;右边,栅格组整体位于关注区外,则略过不处理;中间,栅格组部分处于关注区内而部分处于关注区外。所以需要再进一步遍历组内的每一个栅格,只保留处于关注区内的栅格来生成测评子图,最后把所有子图拼接起来形成最终的测评结果。
(3)使用分布式架构处理栅格组查询和测评结果子图生成
在全屏展示的情况下,当栅格距离小于像素距离时,栅格组的数量多达数百个,为进一步提升测评结果生成的处理效率,引入分布式计算架构,采用多个计算节点并行处理栅格组数据查询和测评结果子图生成的任务。
HBase的KEY设计要考虑在同一时间段读写操作都集中在某一个Region上而出现负载不均衡问题[10]。栅格组简单地按日期和编号为KEY排序时,某关注区所需检索的HBase数据基本集中在一两个Regionserver,容易引起HBase集群服务局部过热。为此,增加栅格组的预分区设计,可强制使地域上邻近的栅格组分布到不同的Region,避免HBase集群计算量分布不均衡[11]。预分区码设计为P=(N×j+M)%=(j×k),其中j、k为正整数,M为栅格组经度方向编号,N为栅格组纬度方向编号。本设计可保证任意一个小于或等于j×k的栅格组矩阵内,P值不会重复,从而实现良好的分布性。
完成上述优化后,系统技术架构调整为如图5所示。关键改进在于数据查询服务和HBase之间加入了一个自主研发的分布式栅格检索集群。集群中的Master负责:识别出相关的所有栅格组的KEY值;按KEY平均分配任务给Worker;接收Worker返回的测评子图并返回给数据查询服务。各Worker负责:向HBase集群提交查询(枚举所分配到的所有KEY);基于栅格组与关注区域的相互位置生成测评子图;返回所负责的所有子图给Master。Master采用多节点部署以提供高可用,整个集群集成到Zookeeper进行统一管理。另外,JavaWeb和Browser拿到的是测评结果子图,不再处理栅格级别的数据,其处理压力大大降低。
基于上述优化方案,在实际生产系统上采用64×64个栅格合并为一个栅格组,分区公式中的j、k取值均为8,使用64个节点的分布式集群,可在3 s内完成涉及3百多万栅格的关注区域的即时测评。图6和图7是在5 km地图比例尺下同一关注区域优化前、后测评效果的局部截屏,可看出优化后基于像素级精细度栅格的测评已不存在明显的方块感,黄色(质差)区域的形状非常精确,甚至可以看到优化前无法呈现的少量红色(质量极差)区域的存在,测评效果大幅度提升。
3 结束语
本文所提出的基于大数据的移动网络测评系统,把栅格数据进行地域分组聚合和比邻分区存储,提供了适合分布式并行处理的数据架构,通过自主研发分布式集群,采用完全分布式的架构完成从数据检索到测评切片子图生成的全过程,实现了全高清分辨率下像素级栅格化测评结果的高效可视化,可为类似系统的建设提供参考。
参考文献:
[1] ESRI中国(北京)有限公司. 通信行业GIS应用解决方案及海外案例集锦[R]. 2012.
[2] 章孝灿,潘云鹤. GIS中基于“栅格技术”的栅格数据矢量化技术[J]. 计算机辅助设计与图形学学报, 2001,13(10): 895-900.
[3] 郑姗,刘国柱. 一种栅格覆盖信息的展示方法与装置: 中国, 201710096981.8[P/OL]. (2017-07-14)[2019-06-10]. http://www.soopat.com/Patent/201710096981.
[4] 陈飞翔. 移动空间信息服务关键技术研究[D]. 北京: 中国科学院, 2006.
[5] RUCHIR C. HBase High Performance Cookbook[M]. Birmingham: Packt Publishing, 2017.
[6] 向俊,王静,夏幼明. 判断点与多边形拓扑关系的改进算法[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 绘图技术应用[J]. 电子测试, 2018(4): 116-118.
[9] 百度百科. 栅格数据[EB/OL]. (2019-03-27)[2019-06-20]. https://baike.baidu.com/item/栅格数据/5261386.
[10] 李兴菊,赵建军. HBase数据库行键设计及验证[J]. 软件导刊, 2019(6): 26-30.
[11] CSDN(Chinese Software Developer Network). HBase学习之六: HBase的预分区设计[EB/OL]. (2018-05-22)[2019-06-20]. https://blog.csdn.net/javajxz008/article/details/51913471.
作者簡介
高智衡(orcid.org/0000-0002-2357-6921):高级工程师,硕士毕业于华南理工大学,MBA毕业于中山大学,现任职于中国电信股份有限公司研究院,主要从事大数据平台开发和应用研究等工作。