【遇见Doris】6.29线下开发者沙龙分享--Doris主创团队

6月29日,Doris有幸得到中国信通院云大所大数据技术标准推进委员会支持,在中国信通院举行了0.11.0新版本预览线下沙龙。各位嘉宾都带来了干货满满的分享。注Doris官方公众号,后台回复“0629”即可获取各位嘉宾分享PPT及现场录像。




今天是李超勇同学代表Doirs主创团队带来的关于Apache Doris (incubating) 0.11.0 版本的功能预览。


3203e9b8-b739-4aa4-8394-42c342690fa6.jpg




本次Doris带来了如下更新:

  • 存储引擎的重构与优化

  • 打通Spark和Doris

  • SQL支持Grouping Sets语法

  • 支持读取Parquet文件格式

  • 新增空间几何函数


下面将为大家具体进行介绍。




存储引擎的重构与优化



0143196b-04c9-412f-8be3-87a205498389.png


Doris存储引擎历经几代人的修改演进,功能丰富的同时,也积攒了不少历史沉疴,代码结构臃肿、晦涩,逻辑层次不清,维护工程十分浩大。鉴于此目的,Doris在0.11中对存储引擎进行了大规模重构,重新组织了各个功能模块,以及各个对外交互的接口。新的引擎将为后续存储计算分离,以及相关引擎优化打下良好的基础。


存储引擎重构重构的背景可以简单描述如下:

  • 命名混乱,言不达意。例如大面积地出现table,tablet混用的情况,令人疑惑。

  • 代码封装层次混乱,相互之间大量耦合,不易于阅读与维护。

  • 锁缺乏统一的调度管理机制,难以有效避免死锁、锁泄漏等情况的发生。



40e66017-646e-41da-8708-214eb8020fdb.png


次重构目标是Apache Doris的单机存储引擎,单机存储引擎的主要任务有:


  • 维护所有的tablet信息,包括tablet的状态,数据等。

  • 调度和tablet相关的操作,包括create table/load/compaction/clone/schemachange等操作,以及操作之间的相互并发。

  • 处理和tablet相关的异常,包括操作本身的异常,以及文件系统异常。

  • 汇报引擎的状态信息给FE,保持和FE之间的心跳连接。


为完成上述任务,本轮重构重新组织划分了存储引擎各个模块,如上图所示。


  • 最上层打算提供统一的Service层作为单机引擎的入口,调度执行各类操作。

  • 中间是存储引擎内部数据与状态的管理。包括tablet管理,rowset管理,事务管理等。

  • 最下层是文件系统适配层及元数据系统层。目前Doris只支持posix文件接口,后续上云可以扩展其他文件接口。

  • 贯穿的错误处理机制。存储引擎总是面临着各类错误,包括I/O Error, File System Error等,不论在哪个层次之中发生错误,皆需要进行错误处理。为统一所有的错误处理逻辑,Doris提供统一的错误队列,贯穿各个层次,接收错误信息,触发错误处理机制。


b9879c7c-e7ef-42cc-b2fd-357bdea36107.png


对于存储引擎而言,最重要的操作就是读和写,compaction/clone/schemachange都架构在读写流程之上,看懂读写也就看懂了存储引擎。这里着重介绍重构之后的读取逻辑,写基本可以认为是读的对称映像。


Doris 0.11启用Iterator机制抽象从Column,到Segment,到Rowset的读取。在Rowset模块之上再根据读取的不同需求,提供Merge/Union Iterator。通过这样的层次,十分清晰地描绘了整个读取逻辑, 能以更加高效简单的方式读取不同版本的数据。



打通Spark和Doris




efd014e4-4d42-4d1a-9992-2a20400f7211.png


打通Apache Spark和Doris主要原因是为了统一数据分析和数据仓库,简化整个数据流向,尤其是简化云上各个产品之间的数据流向。Doris 0.11目前只支持Spark读取Doris的数据,后续会实现Spark直接离线生成Doris的存储文件,将读写都与Spark打通。



4b136b57-a1d2-40cf-be79-df51d1f9a04b.png


具体架构如上图。


左边是Spark的架构,右边是Doris的架构,箭头代表数据的流向。首先Spark会从Doris的FE里获取元数据、表的schema信息及表的位置。其次会调取be节点拉取数据,之后即可应用Spark进行大规模离线计算。




SQL支持Grouping Sets语法




3cd19812-5c4e-4781-84de-e11b3243a0b9.png


Grouping Sets属于Group By的扩展,扩展了Group By的分组集合的能力。


经常对数据进行聚合分析的用户,可能面临着如下的场景,既需要对A列做聚合,也要对B列做聚合,同时要按照A,B两列一起做聚合。


没有Grouping Sets之前,业务方需要在单个SQL中写三个UNION ALL语句才能完成此项功能,而使用Grouping Sets则可以非常快速方便地解决此类问题。Grouping Sets之上,Doris 0.11也同步支持了CUBE,ROLLUP等Grouping Sets的语句扩展,更好地满足业务方进行各类聚合分析的需求。

 


持读取Parquet文件格式



 

d6e3c0bb-a4f0-406a-9fae-3320f66c4cf2.png


Apache Parquet是Hadoop生态之中被广泛应用的列式存储格式,具有读写性能优异、压缩比高等特点。Doris数据导入之前只支持CSV的文本格式,对于HDFS上的Parquet文件加载,需要强制用户先转成文本格式,费时费力。


在搜狐同学的贡献之下,Doris0.11版本之中,集成了Parquet的读取逻辑,用以读取Parquet文件。Parquet读取功能的整体架构如图。通过在Doris Broker中引入Apache Arrow,通过Arrow读取Parquet文件,然后在加载入Doris之中。



新增空间几何函数



4f9c579b-898c-4ab2-9c84-265924899a7b.png



物联网场景中,除了需要查看全局的指标统计结果外,还需要能够对区域网格(主要是圆形区域和多边形区域)进行统计,也需要对具体坐标点附近数据进行探索的能力。如此这般,才能从空间维度上实现从整体,到任意局部,到任意个体的展示效果。Doris 0.11中新增空间几何函数,对经纬度所形成的区域网格进行处理。


例如图上这个例子,想要去查询距离某个点最近的5个poi id,即是这类型的查询需求。





此次沙龙我们有幸邀请到了来自一点资讯、京东、搜狐、百度智能云的技术大牛带来他们的应用实践和开发分享。


其他嘉宾的分享会在近日放出欢迎关注Apache Doris (incubating)官方公众号,后台回复“0629”即可获取各位嘉宾分享PPT及现场录像

 



欢迎扫码关注:

cd41b75b-0ce4-4efe-be8d-0f67b485d9b2.jpg

Apache Doris(incubating)官方公众号


相关链接:

Apache Doris官方网站:

http://doris.incubator.apache.org

Apache Doris Github:

https://github.com/apache/incubator-doris

Apache Doris Wiki:

https://github.com/apache/incubator-doris/wiki

Apache Doris 开发者邮件组:

dev@doris.apache.org


 


本文分享自微信公众号 - ApacheDoris(gh_80d448709a68)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ApacheDoris

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值