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

cf5f331c-39c5-4fd5-8c2a-07a572ae8223.png


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




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


 What’s Doris 

1ca9f20f-366d-4a69-b66f-3c86e8197f69.png

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

拥有以下特点:

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

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

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

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

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

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

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


7db509fa-2701-495b-a651-38549e611aca.png

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

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

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



 What’s new in 0.10.0 

97e68ce1-2a52-49d7-8cce-a791b7e1c8d6.png

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

  • 统一的导入框架

  • 支持例行导入功能

  • 通过Doris查询ES的数据

  • 性能优化

  • 易用性改进

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


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

1c24fe29-30f1-40b8-b1bb-c33fc969a3b0.png

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

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

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

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

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

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

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

    相对之前的导入框架,有许多优点:

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

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

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


ec169c3d-3326-49d9-b240-25bd46f683d6.png

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

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

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



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

8e86e235-2fef-46bb-b4c2-4be9776b8d56.png

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

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


991bd386-87ea-4916-8dac-290840b2bff7.png

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

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


ee054e3e-8195-46f0-a2a4-607c359178c3.png

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


d933d622-e11b-44e6-b88f-4c36313c7c85.png

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


e0d3a3a2-344e-4dcf-8639-fd091b8f8f64.png

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



功能点三:Doris与Elasticsearch结合

0a970dec-6c6d-4afa-9fec-e51a2098aad9.png

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

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

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

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


c5bc4b02-2b74-4939-9155-0894a6f985c9.png


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

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


aa1bb46b-6adf-41a7-82a7-1b4b4439b28a.png

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

  • 尽量并行扫shard

  • 提供新的esquery语义

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


3a2ff504-ee01-4d44-9b18-87f0c5a40782.png

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

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

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



功能点四:性能优化

c7d7a467-7135-4ba0-90d0-e49397990ff2.png

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

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

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



功能点五:易用性提升

3fb3f343-ed4a-4447-a992-2655689d7f34.png

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

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

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

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

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

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



 What’s Next 


110065e3-0c28-49ce-859f-45004c882fa6.png

新版本的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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ApacheDoris

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

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

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

打赏作者

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

抵扣说明:

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

余额充值