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

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




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


【遇见Doris】6.29线下开发者沙龙分享--Doris主创团队_第1张图片




本次Doris带来了如下更新:

  • 存储引擎的重构与优化

  • 打通Spark和Doris

  • SQL支持Grouping Sets语法

  • 支持读取Parquet文件格式

  • 新增空间几何函数


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




存储引擎的重构与优化



【遇见Doris】6.29线下开发者沙龙分享--Doris主创团队_第2张图片


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


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

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

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

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



【遇见Doris】6.29线下开发者沙龙分享--Doris主创团队_第3张图片


次重构目标是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提供统一的错误队列,贯穿各个层次,接收错误信息,触发错误处理机制。


【遇见Doris】6.29线下开发者沙龙分享--Doris主创团队_第4张图片


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


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



打通Spark和Doris




【遇见Doris】6.29线下开发者沙龙分享--Doris主创团队_第5张图片


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



【遇见Doris】6.29线下开发者沙龙分享--Doris主创团队_第6张图片


具体架构如上图。


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




SQL支持Grouping Sets语法




【遇见Doris】6.29线下开发者沙龙分享--Doris主创团队_第7张图片


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文件格式



 

【遇见Doris】6.29线下开发者沙龙分享--Doris主创团队_第8张图片


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


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



新增空间几何函数



【遇见Doris】6.29线下开发者沙龙分享--Doris主创团队_第9张图片



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


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





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


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

 



欢迎扫码关注:

【遇见Doris】6.29线下开发者沙龙分享--Doris主创团队_第10张图片

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 开发者邮件组:

[email protected]


 


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

你可能感兴趣的:(大数据,python,java,数据库,编程语言)