写点什么

揭秘大数据时代秒级查询响应引擎的架构设计

  • 2020-01-14
  • 本文字数:2421 字

    阅读完需:约 8 分钟

揭秘大数据时代秒级查询响应引擎的架构设计

近年来,大数据技术发展迅速,从过去的 Hive、Spark,到现在的 Flink、ClickHouse、Iceberg 等,各种大数据技术推陈出新,不断演进大数据存储和引擎系统的架构,来适应大数据时代的海量数据处理需求。


而随着技术的更迭,每次架构演进都需开发人员重构一次业务代码,既耗费了开发人员的精力,又会影响数据处理的效率。另外,在 PB 级数据体量下,开发人员还面临数据秒级处理与数据准确兼顾的挑战。


为此,易观基于 IOTA 架构思想设计出秒算引擎架构,以解决开发人员在数据处理上遇到的难题,并提升数据处理效率与质量。那可以秒级查询响应的秒算引擎是如何设计的呢?易观 CTO 郭炜与易观架构师高俊,给出了详细的分析和解读。

基于 IOTA 架构的秒算引擎如何设计?

秒算引擎是一个用户行为分析的数据解决方案,包含数据接收、数据实时处理、数据冷热存储和 OLAP 分布式 SQL 查询引擎,基于下一代 IOTA 架构设计,可针对各种业务场景进行快速分析查询。



基于 IOTA 架构,支持引擎快速升级


整体架构上,通过 SDK 在设备端将采集的数据转化成统一的数据模型,然后传送到秒算引擎中。秒算引擎分为临时存储、历史存储和查询引擎,由查询引擎将临时数据和历史数据合并,并提供统一的查询接口供用户查询。


架构以统一的数据模型贯穿始终,秒算引擎内部模块支持热插拔,可以保持前端查询引擎不变的情况下,将存储引擎个性化更换。


数据模型采用高度抽象的主谓宾数据模型,既能规范各端数据格式,又具有通用性和扩展性,解决了传统非结构化数据在结构化存储时带来的数据质量问题。秒算引擎还可实时处理用户上报的数据并入库,并立即和历史数据一起被分析计算。


除此之外,秒算引擎中数据表的表结构是由收到的真实数据动态生成,用户可以随时上报自己感兴趣的数据和字段,解决了过去分析系统 Schema 维护难的问题。还具有热数据自动 Dump 到磁盘、磁盘上的小文件自动 Merge、支持多种数据源的数据统一查询分析等特点。

数据处理性能提升 200%,秒算引擎 2.0 如何优化?

一、实时数据缓冲层架构升级

秒算引擎中,历史数据都保存在 Hive 中,不过 HDFS 文件对追加写的支持不友好,需要将最近一段时间内上报的数据暂时存储在支持高吞吐、低延迟写入更新的数据库中。当数据量达到一定的阀值时,由秒算的后台线程将数据 Dump 到 Hive 中。整个过程,通过 Presto 的视图来保证 Hive 中的数据和实时缓冲层的数据同时参与分析计算。



Kudu 引擎“透明”替换,数据处理性能数倍提升


由于单一的技术方案无法应对越来越差异化的需求场景,在秒算引擎 2.0 中抽象了 Buffer 层,以实现快速的切换新的缓冲层数据库,同时也让秒算引擎拥有更好的扩展性。秒算 2.0 通过采用 Kudu 替换 Hbase,数据处理的消费性能和持久化性能分别分别提升 200% 和 300%。

二、智能虚拟分桶

秒算引擎 1.0 中用户上报的事件在 Hive 中是以用户 id 和事件发生时间排序后保存的,保证同一个用户的行为数据在磁盘上是连续的,可以减小查询时的磁盘寻址时间。同一个用户的行为数据按事件发生的时间做好排序,这样在漏斗等分析场景下可以优化排序的时间,提升查询性能。


不过,大部分产品在版本的迭代中会产生很多的事件,有些事件是核心事件,经常需要参与分析查询。还有些事件日常的分析场景使用不多,但会产生大量的事件数据,比如热图事件,如果把这类事件的数据和核心事件的数据放到一起,会影响到核心事件的查询性能。



核心数据和行为数据隔离,提升数据分析查询性能


因此,秒算引擎 2.0 中新增了智能虚拟分桶这一特性,通过智能虚拟分桶,可以将核心数据和行为数据隔离。借助这一特性,可以将核心事件放到同一个桶中,非核心的事件放到其它桶中,这样便可以提升数据分析查询的性能。


智能虚拟分桶主要分为以下一个步骤:首先是智能生成分桶策略。其次根据分桶策略,在数据从 Buffer 层 Dump 到 HDFS 时,将对应的事件数据放到该事件的分桶文件中。最后是查询引擎根据查询涉及的事件读取该事件对应的 HDFS 文件。

三、优化查询计划

秒算引擎的一部分最新数据保存在 Buffer 中,历史数据保存在 Hive 中,通过使用了 Presto 的视图功能来同时查询 Buffer 和 Hive 中的数据,在视图里 Union all 不同存储库里的表,来提供统一的查询能力。


但在使用过程中,Union all 的两个子查询可能有不同的过滤条件,会导致 Presto 在处理 Union all 时的执行计划和查询单表的执行计划不一样。所以 Presto 查询引擎针对 Union all 的场景需要先将 Union all 两边的数据都读出来,之后再在上层做 Where 条件的过滤。



修改 Presto 执行计划,提升秒算查询性能


不过,如果 Union all 两边子查询的过滤条件本身一样,或者没有过滤条件,那就可以将这个视图的查询当成查询单表来处理的,即直接将 Where 条件下推到执行计划的 Source 阶段。


基于此认知,秒算引擎 2.0 修改了 Presto 的执行计划,专门针对这一点做了优化,提升了秒算的查询性能。同时针对 Presto 的优化,也已经反馈给 Presto 社区,通过社区为更多的人提供支持和帮助。


基于通用性、可二次开发的底层架构,秒算 2.0 引入了分池(Pool)查询。分池查询支持复杂长查询和短查询分开运行,保证在高并发访问与查询数据量大时,普通查询不会被一个复杂长查询阻塞。



引入分池(Pool)查询,解决大查询困扰

开放技术,拥抱开源

在易观多年的技术开发过程中,开源是基本的技术价值观。在 2019 年 8 月,易观自主研发的分布式任务调度引擎 DolphinScheduler 通过了 Apache 软件基金会的投票决议,正式成为 Apache 孵化器项目。


DolphinScheduler 是一个分布式、去中心化、易扩展的可视化 DAG 工作流任务调度系统,致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。易观希望通过开源的方式,让更多的人参与到大数据的生态建设中来。


目前,秒算引擎也计划逐步开源,通过开源将秒算的能力开放给更多需要的人,为更多的企业和开发者提供简单易用的服务。同时,也为技术社区的发展添砖加瓦,履行易观数据能力平民化的使命。


2020-01-14 14:141473

评论

发布
暂无评论
发现更多内容

“纯C”实现——扫雷游戏(递归实现展开功能)

一介凡夫

c 开源 8月月更

产品说明丨 iOS端使用 MobPush 快速集成方法

MobTech袤博科技

ios sdk MobTech袤博科技 mobpush

权威发布! 开发人员需要关注的11种顶级恶意软件

SEAL安全

网络安全 软件安全 恶意软件 软件供应链安全

免费云管平台有吗?咨询电话多少?

行云管家

云计算 企业上云 云管平台

知乎杀疯了,疯传2022Java面试八股文解析+大厂面经

程序知音

Java 程序员 java面试 后端技术 Java面试八股文

案例复现,带你分析Priority Blocking Queue比较器异常导致的NPE问题

华为云开发者联盟

后端 开发

地址标准化服务AI深度学习模型推理优化实践

阿里云大数据AI技术

深度学习

Kubernetes Crossplane VCluster构建新集群

CTO技术共享

开源 签约计划第三季 8月月更

和鲸科技创始人范向伟:大部分数据智能项目都面临着两个挑战

ModelWhale

工作流 数字化转型 数据智能 协同效应 8月月更

Spring-boot项目练习笔记(一)JS处理Long型数据精度丢失问题

赵四司机

Java web spring-boot 8月月更

头脑风暴:一和零

HelloWorld杰少

算法 LeetCode 数据结构, 8月月更

有关分库分表ShardingSphere-JDBC,这是我见过整理的最全的笔记了

Java全栈架构师

Java 数据库 程序员 面试 JDBC

拿捏了!火爆GitHub的字节内部1213页“数据结构与算法”面试手册

冉然学Java

Java 数据结构 面试 算法 构架

易观分析:2022年Q2中国跨境进口零售电商市场规模为1171.0亿元

易观分析

报告 跨境进口 零售电商市场

焱融科技入选“2022 中关村国际前沿科技创新大赛”大数据与云计算领域 TOP10

焱融科技

文件存储 分布式文件存储 获奖

Redis为什么这么快?

京东科技开发者

数据库 消息队列 redis'

技术分享| 视频传输Simulcast与Svc

anyRTC开发者

音视频 Simulcast Svc 视频传输

HADOOP学习笔记之HDFS

薛定谔的猫

hadoop hdfs

聊聊阻容降压原理 和 实际使用的电路

矜辰所致

电路设计 8月月更

直播短视频源码——直播与短视频之间的区别如何解决

开源直播系统源码

软件开发 短视频源码 直播系统源码 直播源码 一对一视频聊天系统

Spring-boot项目练习笔记(二)MybatisPlus实现公共字段自动填充

赵四司机

Java web MyBatisPlus 8月月更

leetcode 23. Merge k Sorted Lists 合并K个升序链表(困难)

okokabcd

LeetCode 数据结构与算法 栈和队列

兆骑科创海内外高层次人才大赛平台,双创赛事活动举办

兆骑科创凤阁

Redis 介绍

武师叔

8月月更

什么密码,永远无法被黑客攻破?

Authing

零基础web前端学习靠谱吗

小谷哥

大数据开发课程靠谱吗?

小谷哥

Kubernetes Ingress 控制器讲解

CTO技术共享

开源 签约计划第三季 8月月更

数读海南数字经济 | 2022海南数字经济发展指数发布

易观分析

数字经济 经济 海南

兆骑科创创投平台,创赛承办,投融资对接,项目落地孵化

兆骑科创凤阁

学大数据需要具备什么基础知识点?

小谷哥

揭秘大数据时代秒级查询响应引擎的架构设计_大数据_荼白_InfoQ精选文章