编者按:自从2021年1月份推出免费的StarRocks标准版产品后,我们的客户量出现了爆发式的增长。到目前为止,已经有数十家客户在生产环境正式上线了StarRocks,并且有数百家客户正在进行真实业务场景的测试。我们邀请了部分已上线的客户,分享他们的数据分析经验。这个系列的文章涉及多个行业,将在未来持续输出,敬请关注。

作者:宁彦辉

中移物联网大数据开发工程师,主要从事流计算开发、物联网机器学习数据挖掘以及OLAP查询引擎数据开发

中移物联网作为中国移动通信集团有限公司出资成立的全资子公司。公司按照中国移动整体战略布局,围绕“物联网业务服务的支撑者、专用模组和芯片的提供者、物联网专用产品的推动者”的战略定位, 专业化运营物联网专用网络,设计生产物联网专用模组和芯片,打造车联网、智能家居、智能穿戴等特色产品,开发运营物联网连接管理平台OneLink和物联网开放平台OneNET,推广物联网解决方案,形成了五大方向业务布局和物联网“云-网-边-端 ”全方位的体系架构。

本文主要讨论了中移物联网在PGW实时会话业务数据分析与建模方面,利用SparkStreaming和StarRocks进行的探索与实践。并希望我们在实时数仓建模领域的应用实践,能给大家一些启发,也欢迎大家多多交流,给我们提出宝贵的建议。

PGW实时会话业务背景介绍

中移物联网作为物联网业务领域的支撑者,目前在线物联卡用户达到6.7亿。中移物联网智能连接部大数据团队作为物联卡用户与物联卡之间的数据分析纽带,主要依托物联卡的基础属性数据和使用行为数据通过数仓建模、大数据挖掘等其他手段为用户提供高效的数据服务。

PGW实时会话业务主要指的是,通过PGW网元设备实时收集从全球各地传送回来、符合Radius协议的GGSN报文数据,然后通过大数据分析等手段,进行数据建模、数据挖掘等其他子项目。例如为集团客户提供每张物联卡的实时位置和分布情况;通过风险防控模型,对比实时收集的报文数据,为客户提供每张物联卡的风险等级等项目。

业务痛点及实时技术的挑战

目前该业务在具体落地过程中,以及应用业务对实时数据需求方面,主要存在以下问题和技术难点:

1. 流式数据join。目前PGW实时会话业务,峰值每秒数据达到35万/s,针对不同的业务需求,往往在数据清洗阶段,需要对流式数据进行字段关联,然后以宽表形式写入;

2. 存量数据排序、实时分析。一方面因为各地区网元设备的不稳定等其他因素,往往实时传送过来的数据存在乱序问题,另一方面因为单条会话长期在线(最长超过14天),对于单条会话的实时分析往往需要对存量数据进行排序;

3. 统一的实时OLAP数据平台构建。我们的用户包括:内部售后团队、运营、产品等内部人员外,还有外部政企平台客户。不同的用户往往关系的数据粒度、时间频率、维度等各不相同。但是我们希望能建立一套统一的实时OLAP数据平台,并提供一套灵活、安全可靠的实时数据服务。

目前整个业务的数据规模和业务如下:

技术框架的调研与演进

1. 原有技术框架

原有技术框架以及整个PGW实时会话业务的处理流程如上。实时数据通过流处理组件处理后,针对不同需求和业务方,数据存储和展示借助多技术组件。并且大多情况下为满足一个业务需求往往需要多技术组件配合使用。如PGW明细会话查询,往往是借助Redis或ES作为索引组件再去查询Hbase,一方面Hbase只能进行简单的模糊查询,无法做到联邦查询、聚合统计查询,另一方面若统计查询借助Impala+Hive时效性往往很难保证。

2. MPP技术框架的调研

为解决实时分析的时效性,同时又能保证数据快速写入,并且能够对外提供一个较为统一和简单的OLAP数据平台。我们先后调研了ClickHouse、StarRocks、Kudu。并针对我们的业务分析和业务痛点做了以下测试。

ClickHouse:虽然具备较好的OLAP分析性能,但因其底层的架构设计,集群模式下数据写入需开发人员手动指定写入节点以及数据存储目录以保证集群数据平衡。同时集群扩容后很难做到数据自平衡,对运维人员提出较高要求,另一方面由于该数据库不支持事务特性,在数据更新时容易出现数据重复,且不易解决此问题。

StarRocks:查询分析性能强悍,多表关联速度比其他产品快很多。与Clickhouse类似,StarRocks目前不支持字段级别的数据更新,同时查询性能与表的设计和集群性能密切相关。原则上集群性能随数据节点线性增长。另外,简便的运维管理也是StarRocks的一大亮点。目前StarRocks开发版本迭代快,需要及时跟进官方的版本进展。

Kudu:支持快速数据更新、快速数据分析与即席查询,但是数据量不宜过大,单表数据量不宜超过15亿。

性能方面,批量写入性能Clickhouse略优于其他系统,相同资源条件下明细查询性能ClickHouse和StarRocks比Impala+Kudu更快,StarRocks有比较方便的物化视图(Rollup)可以满足统计查询的需求,另外StarRocks在关联查询方面性能有比较明显的优势。

综上所述,实时数仓方案,采用Kudu + StarRocks相结合,实现现有PGW实时会话业务。StarRocks作为主要技术组件,Kudu辅助实现字段级别更新业务场景。

3. 现有技术框架

3.1 现有技术框架整体介绍

为解决现有的业务痛点,同时平衡在实时数据处理技术实现上的难点。我们摒弃了部分技术组件,采用新的技术组件搭建整个实时数仓用于满足PGW实时会话业务。其中StarRocks可以满足大多场景的需求。

PGW会话业务中流式Join问题,一部分我们通过在StarRocks中星型建模的方案的解决,另一部分我们借助关系型内存数据库VoltDB+Google Guava Cache,流式组件处理过程中代码实现。

存量数据的排序、实时分析问题。我们借助StarRocks range分区以及高效的OLAP性能初步缓解。

最后统一OLAP分析平台,我们完全借助StarRocks实现。

3.2 StarRocks解决的痛点和挑战

1. 充分利用StarRocks在多表join方面的性能优化,如Colocate Join、内存表等特性。将原来的流式join方案改为通过星型建模方案,在数据服务层进行多表join的联邦查询;

2. 通过StarRocks动态分区特性对存量数据进行分区,然后利用Bitmap数据类型进行精确去重,然后再在各分区内完成排序。排序的结果进一步汇总到一张数据表中,和实时到来的数据放在一起排序,可以有效地解决数据乱序问题,并且保证数据分析的效率。

3. StarRocks可作为数据服务层的统一对外引擎,一方面保证查询性能,另一方面避免了原来多技术组件带来的冗余问题,极大降低了系统的管理成本。

4. 技术实现方面:替代Hbase部分业务,缓解了Hbase分区分裂带来的性能问题;通过ES外表引擎,解决ES表不能进行join、语法特殊等技术问题。

StarRocks在具体项目上的应用及优化

目前StarRocks集群总共25台BE,4台FE,存储采用支持采用NVME协议的SSD硬盘。

1. PGW用户实时位置轨迹

1.1 方案介绍

实时收集到的GGSN报文,通过StarRocks的聚合模型,将发生位置变更轨迹的明细数据实时沉淀下来。并对不同的区域维度生成Rollup表。最细粒度到基站级别,然后生成省、地市级别的Rollup表以供不同业务查询。

GGSN报文量35万/s,通过SparkStreaming处理解析后,每1分钟StreamLoad一次入StarRocks。

1.2 方案优化

最开始因为Rollup表建了省、地市、区县、乡镇,导致在写入时IO负担过大,写入速度跟不上数据推送,SparkStreaming出现挤压,后期通过性能测试Rollup表只建立了省、地市维度。同时新增一张乡镇base表,并在其基础上建立区县Rollup表。

同时为保证查询的时效性,base表Rollup表前缀索引在字段类型和选择上按照官方建议,避免使用Varchar类型。

2 区域会话明细模型

2.1 项目背景

数据服务层需对外提供每张物联卡,统一会话发生位置变更后在不同区域的套餐使用情况,会话时常等信息。进而统计物联卡各区域的漫入漫出情况。

2.2 项目方案

实时收集到的GGSN报文,通过StarRocks的聚合模型,将发生位置变更时的套餐记录,变更时间沉淀下来。然后通过定时任务,从聚合模型明细数据中计算出套餐使用情况,会话时长,生成新的DWD表。StarRocks目前的物化视图很有用,但还不是很灵活,比如,只支持明细数据表模型,并且支持单表创建物化视图,不支持多表Join构建物化视图。

StarRocks在中移物联网PGW实时会话业务领域的展望

一方面我们目前了解到,StarRocks开发团队,目前正在解决StarRocks字段级别无法支持更新的短板。在未来StarRocks升级过程中,我们可能会摒弃掉Kudu,完全借助StarRocks实现实时数仓技术架构。

另一方面,我们期待StarRocks物化视图的灵活性更高,可以支持Join级别的物化视图和不同表引擎的物化视图。除此之外,在接下来的项目开发过程中我们也计划进一步使用bitmap索引、 Colocation Join等更丰富的功能提高我们的查询速度。

除此之外,为了完善实时数仓的分层结构,我们计划在未来使用Flink来对接StarRocks,保证数仓的分层结构,同时进一步完善统一的OLAP数据分析平台。

StarRocks 在中移物联网 PGW 实时会话业务领域的应用相关推荐

  1. 监测现场实时数据上传到中移物联网OneNet云平台

    OneNet,中移物联网云平台,是由中国移动打造的PaaS物联网开放平台.平台能够帮助开发者轻松实现设备接入与设备连接,快速完成产品开发部署,为智能硬件.智能家居产品提供完善的物联网解决方案(摘自36 ...

  2. 阿里云和中移物联网M5311的MQTT通讯

    我的BILIBILI链接   https://www.bilibili.com/read/cv5476993 模块简介 中移物联网M5311就是这个样子的 特点 选择模块注意事项:这个模块分两个版本C ...

  3. 国内物联网平台(8):中移物联网开放平台OneNet

    国内物联网平台(8) --中移物联网开放平台OneNet 马智 平台定位 OneNET是中移物联网有限公司搭建的开放.共赢设备云平台,为各种跨平台物联网应用.行业解决方案,提供简便的云端接入.存储.计 ...

  4. 中移物联网携手“行车卫士” 智慧城市打开新局面

    2016年,河南移动根据物联网市场需求,加大物联网市场合作力度,达到用户百万级.收入亿元级的市场.应用领域覆盖能源抄表.车联网.移动支付.安防监控.城市管理等领域,为智慧城市提供底层数据采集,是智慧城 ...

  5. 云管边端架构图_中移物联网布局构建“云-管-端”全方位体系架构

    随着物联网的步伐,国内三大运营商纷纷成立自己的物联网团队,而在物联网连接管理平台方面,电信与爱立信合作,联通与Jasper合作,移动则采取自主研发的OneLink平台.在此环境下,全球物联网管理平台逐 ...

  6. 中移物联网答案java_【分享】中移物联网校园招聘笔试-java

    今天笔试了中移物联网的java开发实习岗位.一共33道题. 单选题 1.关于java注解,下列说法错误的是() A.注解用@interface定义  B.Target元注解可以用来控制注解作用范围   ...

  7. mysql 轨迹数据存储_中移物联网在车联网场景的 TiDB 探索和实现

    原标题:中移物联网在车联网场景的 TiDB 探索和实现 作者介绍:薛超,中移物联网有限公司数据库运维高级工程师. 中移物联网有限公司是中国移动通信集团公司投资成立的全资子公司,公司按照中国移动整体战略 ...

  8. 中移物联网开放平台OneNET亮相世界物联网博览会

    10月30日至11月1日,以"创新物联时代.共享全球智慧"为主题的2016世界物联网博览会在无锡盛大召开.本届博览会展示总面积5万平方米,参展企业和行业协会近300家.在博览会上, ...

  9. MQTT连接中移物联网ONENET

    MQTT连接中移物联网ONENET 注册登录ONENET,在开发者中心中添加产品和设备 通过网络调试助手实现和ONENET的通信 准备知识 OneNET MQTT服务器IP地址和端口号 183.230 ...

  10. 面试准备(知识点总结等)【中移物联网-算法岗】

    面试准备(知识点总结等)[中移物联网-算法岗](10.09面试) 自我介绍 项目介绍 项目&简历涉及问题 数据预处理 距离度量&聚类评价 几种聚类算法原理及比较 FOA算法及求截断距离 ...

最新文章

  1. 指针05 - 零基础入门学习C语言45
  2. ecshop去掉“云服务中心”或者是“模板堂知识库”
  3. 产品运行所需的信息检索失败_域名解析失败
  4. 活动推荐|20位大咖齐聚,“中国首届沉浸产业发展论坛”10月底将于南京召开...
  5. 没有人会尊重弱者,把弱者当成朋友!人们永远追随强者,永远和强者结盟!
  6. 范围for语句的整理
  7. 优酷开放sdk-setOnerroListener
  8. Linux调试分析诊断利器----strace
  9. php 正则获取html标签,php正则取嵌套html标签
  10. c语言程序设计电大形考作业答案,2016年电大-电大c语言程序设计形成性考核册答案(-).doc...
  11. (51)多路时钟复用概述
  12. Nagios监控HP硬件状态
  13. 怎么在Chrome浏览器中插入IDM软件的扩展插件?
  14. 对丰田暴冲事故的软件调查报告——嵌入式软件工程师必看
  15. Unity 模块化编程
  16. Vmware虚拟机红帽子Linux联网
  17. office插件开发_PPT插件——OK之安装篇
  18. UDP丢包替代:用PCAP实现C/C++以太网SDR吞吐
  19. 企业微信登录不了怎么办 企业微信无法登录的原因及解决方法
  20. 助力数字经济,服务数智化转型,用友火力全开

热门文章

  1. Mac版 微信 撤回消息拦截两种方法
  2. 数据结构——邻接表Adjacency List
  3. Oracle 启动失败报错“TNS-12555: TNS:permission denied”解决办法
  4. 关于word中插入的mathtype公式变形问题的解决方案
  5. 虎牙不想做一家游戏直播公司
  6. 贤内助——ICMP协议
  7. golang设计模式——结构模式
  8. DLink无线路由器做交换机配置
  9. C++核心准则R.3: 原始指针(T*)不应拥有所有权
  10. python中运行代码时没有报错但是也没有输出而且还有exit code 0的结束标志