阿里云HBase Ganos在海量实时轨迹中的应用(一)

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介: 场景需求在移动对象轨迹监控与分析的项目中,收集了数十万的车辆信息,每个车辆会定时的上报当前位置、事件、状态等信息,每天约数亿条轨迹点,需要能够存储。且前端用户在查询时,要能快速返回目标船舶的信息。入库需求:轨迹数据,每日新增10亿条左右,包括时间点、经纬度坐标、对象当前的属性信息基本不涉及到数据的修改(不断的追加数据)查询需求:区域回放:根据时间和空间范围两个维度共同查询。

场景需求

在移动对象轨迹监控与分析的项目中,收集了数十万的车辆信息,每个车辆会定时的上报当前位置、事件、状态等信息,每天约数亿条轨迹点,需要能够存储。且前端用户在查询时,要能快速返回目标船舶的信息。

入库需求:

轨迹数据,每日新增10亿条左右,包括时间点、经纬度坐标、对象当前的属性信息
基本不涉及到数据的修改(不断的追加数据)

查询需求:

  • 区域回放:根据时间和空间范围两个维度共同查询。例如:查询东经110°~120°,北纬25°~35°空间范围内,2019.3.1~2019.3.10时间范围内的所有轨迹点。
  • 轨迹线查询:根据某个移动对象的id,查出某段时间内的轨迹。例如:查询编号为"205073000"的船舶在2019.3.1~2019.3.10时间范围内的所有轨迹点。

要求:

  • 要能支撑每日10亿量级的写入,要能承载千亿轨迹规模的存储
  • 时空查询(区域回放)要能在秒级响应,轨迹线查询要能在百毫秒级响应

技术调研

关系型数据库

现有的关系型数据库如Oracle、MySQL、PostgreSQL都提供了Spatial的插件,尤其是PG的空间引擎PostGIS,使用率较高,具有丰富的空间处理算法,适合做空间关系判断与分析等。但众所周知,关系型数据库的强项在于OLTP,即适合数据更新、查询等,但对于大规模数据的存储则需要分库分表等操作,操作相对繁琐,因此对于上述需求来说,暂不考虑关系型数据库。(这里提一下,除了阿里云PG Ganos外,都没有时空处理)

NoSQL数据库

NoSQL适合处理海量数据的存储与查询,如Cassandra、HBase、MongoDB、Redis等,都支持海量数据的水平扩展。但在时空方面都没有一个完善的方案,比如MongoDB、Redis虽然都提供了空间处理的算法,但总体来说只能实现Within等操作,即空间范围查询操作。

阿里云已经发布了基于HBase的时空引擎HBase Ganos(参考:https://help.aliyun.com/document_detail/87287.html?spm=a2c4g.11174283.6.619.3c693c2e29oyDM),不仅可以处理空间查询,还可以处理时空查询场景。因此,本文基于HBase Ganos时空引擎对上述场景进行测试。

实例规格

HBase Ganos具有高吞吐特点,本着节省的原则,我们以最小规格配置为基础(约2000元+/月,成本与HBase相同),来看看是否能够支撑上述需求。具体配置如下:

  • master节点:2核4G
  • core节点:4核8G(数量可动态扩展)
  • 磁盘:高效磁盘(500G,可动态扩展)

具体实施

访问接口

HBase Ganos支持RESTful和GeoTools两种接口访问形式,前者通过HTTP协议可以方便的使用任何一种编程语言访问;而GeoTools接口基于Java语言,较为通用。本文采用该接口方式,这里封装了一个Ganos Client工具,可以直接下载使用(附案例代码连接)

数据模型表

通过GanosSchemaUtil工具类创建SimpleFeature(Point类型),并添加了对象id(为其建立索引)、速度、事件、状态、时间(默认建立索引)等信息,具体如下:

GanosSchemaUtil ganosSchemaUtil = new GanosSchemaUtil();
ganosSchemaUtil.addField("objId", "String", true);  
ganosSchemaUtil.addField("speed", "Double", false);
ganosSchemaUtil.addField("event", "Integer", false);
ganosSchemaUtil.addField("status", "Integer", false);
ganosSchemaUtil.setGeometry("Point", null);
ganosSchemaUtil.setDate("dtg");
SimpleFeatureType sft  = ganosClient.createSFT(schemaName, ganosSchemaUtil.toString(),"zstd");
ganosClient.createSchema(sft);

数据构造

上述字段的值采用随机生成方式(按照真实数据规则模拟),数据构造方法为:

  • 时间窗口:2019-02-25 00:00:00~2019-03-05 00:00:00
  • 空间窗口:经度范围 115.37465076~120.37465076, 纬度范围:26.23923772~31.23923772
  • 移动对象数量(可理解为车、船的数量):100万
  • 其他属性数据:速度、状态、事件等,均采用随机生成方式

数据导入

启动10个线程并发写入
导入方法:

  • 启动10个线程写入,每次批量写入1000条。
  • 这1000条数据中,随机选取多个移动对象,同时随机生成该移动对象的时间点、空间位置以及其他属性信息。比如这1000条轨迹点可属于N个对象,每个对象的轨迹点个数也不相同。
    代码参考:

数据查询

  • 启动10个线程查询,查询场景包含两种:a、区域回放(时空查询);b、单条轨迹查询(id+时间)
  • 每次从一百万个移动对象中随机选取一条,同时随机选取查询的时间窗口,考察系统吞吐、RT等
    代码:参考

性能

  • 写入性能:存储层的IO可达8万+/s,在构建三张索引表的情况下,可理解为每秒能支撑3万个轨迹点的导入,完全能够满足一天10亿级的写入需求。

image

  • 查询性能:
    区域回放(时空查询):每次查询返回数据量在几百条左右,缓存为命中情况下,耗时在1秒钟以内;若缓存命中情况下,在100ms左右。

轨迹线查询:每次返回数据量在几百条左右,耗时在800ms以内。

总结

HBase Ganos不仅能够支持空间查询、还能够支持“时间+空间”的查询,以及轨迹线(时序)查询。在2个4核8G的节点配置下,能够支撑每日10亿量级的数据写入,且性能维持在秒级以下,适合海量轨迹的存储和查询场景。

相关实践学习
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
11天前
招募!阿里云x魔搭社区发起Create@AI创客松邀你探索下一代多维智能体应用
招募!阿里云x魔搭社区发起Create@AI创客松邀你探索下一代多维智能体应用
259 0
|
2月前
|
弹性计算 人工智能 安全
带你读《从基础到应用云上安全航行指南》——阿里云产品专家教你如何全方位构建ECS安全体系(3)
带你读《从基础到应用云上安全航行指南》——阿里云产品专家教你如何全方位构建ECS安全体系(3)
431 0
|
2月前
|
监控 机器人 数据处理
5 天学会阿里云 RPA:教育行业应用
在数字化时代,教育行业也在迅速发展和创新。为了提高教育管理效率、优化教学过程和提升学生体验,越来越多的教育机构开始采用智能自动化技术。阿里云 RPA(机器人流程自动化)作为一种先进的技术手段,正逐渐在教育行业中得到广泛应用。
|
2月前
|
安全 机器人 数据安全/隐私保护
5 天学会阿里云 RPA:医疗保健行业应用
医疗保健行业一直在寻求创新的方法来提高效率、减少错误并提供更好的患者护理。阿里云 RPA(机器人流程自动化)的出现为医疗保健行业带来了新的机遇,使其能够实现工作流程的自动化,提升服务质量。
|
2月前
|
监控 算法 机器人
5 天学会阿里云 RPA:金融行业应用
金融行业一直处于技术创新的前沿,以提高运营效率、降低风险和提供更好的客户体验。阿里云 RPA(机器人流程自动化)的出现为金融机构带来了全新的智能自动化解决方案,帮助他们在竞争激烈的市场中保持领先地位。
|
2月前
|
弹性计算 安全 网络安全
带你读《从基础到应用云上安全航行指南》——阿里云产品专家教你如何全方位构建ECS安全体系(2)
带你读《从基础到应用云上安全航行指南》——阿里云产品专家教你如何全方位构建ECS安全体系(2)
478 0
|
2月前
|
监控 Java 测试技术
阿里云推出 3.x Java 探针,解锁应用观测与治理的全新姿势
阿里云推出 3.x Java 探针,解锁应用观测与治理的全新姿势
174239 4
|
3月前
|
存储 人工智能 弹性计算
阿里云第八代云服务器g8i实例介绍,可适用于在线音视频及AI相关应用
近日,阿里云第八代云服务器ECS g8i实例已经完成全新升级,g8i实例采用CIPU+飞天技术架构,搭载最新的Intel 第五代至强可扩展处理器(代号EMR),性能进一步大幅提升,同时拥有AMX加持的AI能力增强,并在全球范围率先支持TDX机密虚拟机能力,实现了AI增强和全面安全防护的两大特色优势,可适用于在线音视频及AI相关应用。本文对g8i实例做个介绍。
阿里云第八代云服务器g8i实例介绍,可适用于在线音视频及AI相关应用
|
7天前
|
云安全 数据采集 安全
阿里云安全产品,Web应用防火墙与云防火墙产品各自作用简介
阿里云提供两种关键安全产品:Web应用防火墙和云防火墙。Web应用防火墙专注网站安全,防护Web攻击、CC攻击和Bot防御,具备流量管理、大数据防御能力和简易部署。云防火墙是SaaS化的网络边界防护,管理南北向和东西向流量,提供访问控制、入侵防御和流量可视化。两者结合可实现全面的网络和应用安全。
阿里云安全产品,Web应用防火墙与云防火墙产品各自作用简介
|
17天前
|
消息中间件 Kubernetes Kafka
Terraform阿里云创建资源1分钟创建集群一键发布应用Terraform 创建 Kubernetes 集群
Terraform阿里云创建资源1分钟创建集群一键发布应用Terraform 创建 Kubernetes 集群
14 0