写点什么

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

用户头像
ApacheDoris
关注
发布于: 2021 年 03 月 24 日


这次的 Apache Doris (incubating) 0.10.0 开发者沙龙在中关村国际会议中心圆满结束,各位嘉宾都带来了干货满满的分享。近期小编会给大家带来精彩的现场回顾和视频录像,敬请期待!




首先是陈明雨同学代表 Doris 主创团队带来的关于新版本 Doris 的介绍和分享。现场录像请见文章最后链接分享。


 What’s Doris 



Doris(原百度 Palo)是一款基于大规模并行处理技术的分布式 SQL 数据库,由百度在 2017 年开源,2018 年进入 Apache 孵化器。

拥有以下特点:

  • 高可用,高可靠,高扩展

  • 高度整合的系统,不依赖第三方组件,方便运维

  • 高并发点查询和高吞吐量即席分析

  • 完整的 SQL 语义支持,内嵌 MySQL 协议层,方便用户快速迁移现有业务

  • 批量导入和近实时流式导入

  • 预聚合功能,提供快速的查询响应

  • 在线 schema change,7*24 小时不停服



如图展示了 Doris 的架构,在最小部署的情况下只有两个进程—FE 和 BE,可以根据需求横向扩展。一般典型的 Doris 集群由 1-3 个 FE,10-100 个 BE 构成。

其中,FE 是由 Java 编写的,负责节点管理、元数据管理、查询计划生成,还内嵌了 MySQL 协议层用于接收用户请求;BE 是由 C++编写的,负责数据存储和查询计划执行。

如果还希望从 HDFS 读取数据,需要额外部署一个 Broker 进程,这是一个轻量级的、无状态的数据访问组件。


 What’s new in 0.10.0 



这次的 Doris 新版本发布主要带来了五大功能点:

  • 统一的导入框架

  • 支持例行导入功能

  • 通过 Doris 查询 ES 的数据

  • 性能优化

  • 易用性改进

接下来便一一为大家展开介绍。


功能点一:统一后端导入框架



首先是关于数据的导入方式。老版的 Doris 主要应用 3 种导入方式:Broker Load,Mini Load,Streaming Load。

  • Broker Load 通过 broker 进程读取外部数据源(如 HDFS)进行数据导入;Mini Load 是通过 http 协议进行数据导入。这两种方式都采用了比较老的导入框架(右上)。

  • 由于框架的问题,老版的导入方式受到了很多的限制:

            -受内存大小的限制导致报错

            -多次 I/O 操作,多次数据传输

            -轮询的方式完成整个任务,效率低,时效性差

  • Streaming Load 框架(右下)将大文件或者数据流,以逐段分批的方式进行加载。

            -只有 1 次 I / O 和 1 次数据传输

            -时效性从分钟级提高到秒级甚至毫秒级

            -可以导入任意大文件并保证大文件整体的原子生效



为了提升 Broker Load 和 Mini Load 的导入性能,0.10.0 版本中将老的 Broker Load 和 Mini Load 统一到 Streaming Load 的导入框架中。这样可以利用 Streaming Load 的框架减少二者在数据导入过程中的 I/O 次数,提升导入性能。

图以 Broker Load 为例,新的导入方法既没有内存限制,也可以实现快速导入。并且,在实际使用中依旧保留了用户的使用习惯,使用户可以无感知的切换到这个新的方式。

但是,这种导入方式目前还存在问题,比如在磁盘上可能会产生很多碎文件。这对 Doris 的后续开发也是一个挑战,以后会逐步优化解决这些问题。


功能点二:支持例行导入功能



第二点是关于例行导入。实际上,例行导入是在原有底层基础上增加了很多作业调度逻辑,使其可以自动消费指定的数据源,让数据源源不断的导入到 Doris。

用户可以通过 SQL 命令提交例行导入任务。


目前 Doris 只支持从 Kafka 的例行导入。

支持自动检测 Kafka Partition 的变化,并且支持数据过滤和变换,提供类似数据清洗的功能。还可以保证 Kafka 消息的 Exactly Once 消费语义,数据不丢不重。通过调整参数,达成了低延迟和高吞吐的需求。目前的导入速度和流式导入的速度是相当的。


这是一段创建例行导入的语句,用户根据需求可以自定义这些字段,包括作业名称、DB、表、列的映射关系和转换关系、条件、作业属性以及 Kafka 属性等等。



当用户提交后,可以使用 Show 查看作业运行状态,另外还提供 3 种作业控制:停止、暂停、恢复。



因为例行导入底层也是使用 Streaming Load 的导入框架,所以也会出现与它一样的一些问题。除此以外,当前版本仅支持无认证的 Kafka 访问。以后还会提供更多数据源支持。


功能点三:Doris 与 Elasticsearch 结合



结束了关于所有导入的问题,来到了第三点,就是 Doris 和 ES 的结合。

Elasticsearch 是一款实时的分布式搜索引擎,其在全文检索,任意维度组合的点查询方面表现非常优异。但缺点是不支持复杂 SQL 查询。

而 Doris 天生是为 SQL 准备的,更高效的查询优化器和对 SQL 语义的完整支持,但是也存在自身问题,比如不支持全文检索,对于大宽表的查询效率较低。

基于这样的情况,把他们结合是不错的选择!



嫁接 Doris 到 Elasticsearch 上,可以弥补 Doris 在全文检索,Geo 数据扫描,高维度组合查询方面的劣势;利用 Doris 的分布式计算框架,也可以补足 Elasticsearch 在分布式计算(Distributed Aggregation, Distributed Join)方面的欠缺。

使用 Scroll API 对 ES 数据访问,整体架构轻量,在 FE 的内存中维护 ES 集群上 index 的元数据信息,定时访问并更新 ES 信息,在 BE 节点上访问 ES 获取数据。这样的框架没有对 ES 代码进行任何改动,方便后期运维和跟进后期 ES 发展。只是稍有一点点网络延迟的代价。



针对查询效率还做了以下优化:

  • 尽量并行扫 shard

  • 提供新的 esquery 语义

  • 谓词转换和下推,并对查询规划做了改进



  • 在查询 ES 的请求使用参数 filter_path,可以减少 ES 返回的大量冗余的文本字段,进一步减少网络传输

  • 查询条件改写,使用 ES 的计算能力来减少传输

  • ES 支持的数据类型可以映射到 Doris 进行查询


功能点四:性能优化



Apache Doris 0.10.0 版本中,除了丰富导入功能,扩展使用场景外,针对查询性能,也做了大量工作。第四点也就是关于这次 Doris 的优化,主要分为两点:

  • 优化 Decimal 类型的实现。采用定长的 16 字节(128 位)存储 decimal;对比此前的变长数组的存储方案,在计算性能上提升非常明显。

  • 由美团同学贡献的 Plan Fragment 并发执行。根据扫描数据量,动态切分扫描任务,并发扫描文件,有效利用空闲 CPU/IO 资源,速度可以有 3-5 倍的提升。


功能点五:易用性提升



最后一点是易用性的提升。

  • 支持 UDF,用户可通过 C++语句编写 udf。

  • 由搜狐同学贡献, 新增 hll_raw_agg 函数,支持在窗口函数中使用 hll_union_agg

  • 新增 20+metrics 监控项,协助用户更好洞察集群内部状态

  • 新增一些指标和参数,便于后期运维

  • 修复 30+ bug,提升系统稳定性


 What’s Next 



新版本的 Doris 的内容就分享到这儿,那么接下来百度团队对 Doris 后续工作还在继续。

  • 支持 bitmap 索引,解决在大宽表上任意维度查询效率差的问题

  • Cascades 模型基于代价的优化器

  • 改变整体系统架构来更好的面向 cloud native 的场景,存储和计算分离,为云上产品提供更好的弹性和更低的价格

  • 关注社区发展,做文档框架,方便用户使用和开发




现场录像指路⬇️

百度网盘:

https://pan.baidu.com/s/1N6kIHVmk1vbHyZns_ZpL2Q 

提取码: crah 

有关其他嘉宾的详细分享内容会陆续发出,敬请期待。欢迎关注 Apache Doris 官方公众号!




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


发布于: 2021 年 03 月 24 日阅读数: 9
用户头像

ApacheDoris

关注

还未添加个人签名 2021.03.17 加入

Doris(原百度Palo https://cloud.baidu.com/product/palo.html )是一款基于大规模并行处理技术的分布式 SQL 数据仓库,由百度在2017年开源,2018年进入 Apache 孵化器

评论

发布
暂无评论
【遇见Doris】4.13线下开发者沙龙分享--Doris主创团队