热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

DorisWeekly:优化CSV格式导入效率、支持RuntimeFilter功能

doris,weekly,优化,csv,格式,导入,效率,支持,runtime

观众朋友们:

下午好!

欢迎收看【 Doris 近日要闻】~本次为您带来的是 2021年07月15日 ~ 2021年07月18日 的双周总结。

Doris 社区周报每期会包含 FAQ 环节。我们会在社区论坛、Github ISSUE、Dev邮件组以及微信用户群中挑选一些主要问题并在 FAQ 环节中进行解答。

  • Dev 邮件组:dev@doris.apache.org

  • Github Issue:https://github.com/apache/incubator-doris/issues

  • 社区论坛地址:http://ai.baidu.com/forum/topic/list/209/0/167

1. 统计数据

共位24作者提交了56个 Commit 。感谢以下作者的贡献:

Mingyu Chen, stdpain, Zhengguo Yang, Xinyi Zou, HappenLee, EmmyMiao87, zhoukang, qiye, jiafeng.zhang, Pxl, xy720, wudi, pengxiangyu, huzk, harveyyue, flynn, caiconghui, Stephen-Robin, Lijia Liu, Kuncle, Henry2SS, GeoffreyStark, DinoZhang, Arthur.Zhang

最近2周,共修改新增代码行 18424 ,删除代码行 7124 

2. 主要进展

2.1 新增功能

  • https://github.com/apache/incubator-doris/pull/6117

    show tablet status 增加表创建时间、数据更新时间

  • https://github.com/apache/incubator-doris/pull/6107

    支持 Alibaba DataX doriswriter 插件

  • https://github.com/apache/incubator-doris/pull/6140

    增加 bit_length 函数支持

  • https://github.com/apache/incubator-doris/pull/6161

    支持通过 libhdfs3 直接访问并导入 hdfs 数据,不再需要 broker 进程。

  • https://github.com/apache/incubator-doris/pull/6159

    支持通过限制一个用户的最大查询示例数来限制用户查询量,或避免用户发送不合理的复杂查询。

  • https://github.com/apache/incubator-doris/pull/6023

    支持修复分区表的默认分桶数。

  • https://github.com/apache/incubator-doris/pull/6121

    支持 Runtime Filter 功能。

  • https://github.com/apache/incubator-doris/pull/6226

    支持通过代价模型计算的 Join Reorder 功能。

  • https://github.com/apache/incubator-doris/pull/6209

    新增 bdbje debug 模式,用于查看存储在 bdbje 中的元数据日志。

2.2 WIP

  • https://github.com/apache/incubator-doris/pull/5980

    支持数组类型简单的查询语法。

2.3 Bug修复

  • https://github.com/apache/incubator-doris/pull/6165

    修复 Flink-Doris-Connector 导入 null 值报错的问题。

  • https://github.com/apache/incubator-doris/pull/6172

    修复 bucket shuffle join 某些情况下产生错误查询计划的问题。

  • https://github.com/apache/incubator-doris/pull/6129

    修复通过动态分区功能创建历史分区时可能产生错误的问题,并支持了指定创建历史分区的个数。

  • https://github.com/apache/incubator-doris/pull/6190

    show dynamic partition table 语句直接转发到 master 执行,避免出现信息无法查看的问题。

  • https://github.com/apache/incubator-doris/pull/6109

    修复某些情况下,错误的创建了范围重叠的分区的问题。

  • https://github.com/apache/incubator-doris/pull/6096

    修复创建逻辑视图时,会错误的折叠非确定性常量表达式的问题。

  • https://github.com/apache/incubator-doris/pull/6184

    修复 show view for table 可能出现 Unresovled table reference 错误的问题。

  • https://github.com/apache/incubator-doris/pull/6215

    修复某些情况下,Routine Load 可能会卡住的问题。

  • https://github.com/apache/incubator-doris/pull/6213

    修复 Routine Load中使用 json 函数,无法匹配整个 json 数据的问题。

  • https://github.com/apache/incubator-doris/pull/6051

    修复 decimal 类型除零错误

  • https://github.com/apache/incubator-doris/pull/6250

    升级 okhttp 版本已修复在jdk13下使用 doris on es 功能可能导致 http 请求卡住的问题。

2.4 功能改进

  • https://github.com/apache/incubator-doris/pull/6149

    Spring 内嵌容器修改为 Jetty,修复307转发问题。

  • https://github.com/apache/incubator-doris/pull/6180

    优化 Bloom Filter 的过滤效率。

  • https://github.com/apache/incubator-doris/pull/6170

    优化 csv 格式导入的效率。

  • https://github.com/apache/incubator-doris/pull/5934

    Flink Doris Connector 支持设置数据写入到 Doris 的时间间隔。

  • https://github.com/apache/incubator-doris/pull/6092

    Routine Load 新增 errorRowsAfterResumed 来展示重启后作业处理的错误行数。

3. FAQ

Q:通过 DECOMMISSION 下线BE节点时,为什么总会有部分tablet残留?

A:

在下线过程中,通过 show backends 查看下线节点的 tabletNum ,会观察到 tabletNum 数量在减少,说明数据分片正在从这个节点迁移走。当数量减到0时,系统会自动删除这个节点。但某些情况下,tabletNum 下降到一定数值后就不变化。这通常可能有以下两种原因:

1. 这些 tablet 属于刚被删除的表、分区或物化视图。而刚被删除的对象会保留在回收站中。而下线逻辑不会处理这些分片。可以通过修改 FE 的配置参数 catalog_trash_expire_second 来修改对象在回收站中驻留的时间。当对象从回收站中被删除后,这些 tablet就会被处理了。

2. 这些 tablet 的迁移任务出现了问题。此时需要通过 show proc "/cluster_balance" 来查看具体任务的错误了。

对于处理版本,可以先通过 show proc "/statistic" 查看集群是否还有 unhealthy 的分片,如果为0,则可以直接通过 drop backend 语句删除这个 BE 。否则,还需要具体查看不健康分片的副本情况。

Q:priorty_network应该如何设置?

A:

priorty_network 是 FE、BE 都有的配置参数。这个参数主要用于帮助系统选择正确的网卡 IP 作为自己的 IP 。建议任何情况下,都显式的设置这个参数,以防止后续机器增加新网卡导致IP选择不正确的问题。

priorty_network 的值是 CIDR 格式表示的。分为两部分,第一部分是点分十进制的 IP 地址,第二部分是一个前缀长度。比如 10.168.1.0/8 会匹配所有 10.xx.xx.xx 的IP地址,而 10.168.1.0/16 会匹配所有 10.168.xx.xx 的 IP 地址。

之所以使用 CIDR 格式而不是直接指定一个具体 IP,是为了保证所有节点都可以使用统一的配置值。比如有两个节点:10.168.10.1 和 10.168.10.2,则我们可以使用 10.168.10.0/24 来作为 priorty_network 的值。

Q:FE的Master、Follower、Observer都是什么?

A:

首先明确一点,FE 只有两种角色:Follower 和 Observer。而 Master 只是一组 Follower 节点中选择出来的一个 FE。Master 可以看成是一种特殊的 Follower。所以当我们被问及一个集群有多少 FE,都是什么角色时,正确的回答当时应该是所有 FE 节点的个数,以及 Follower 角色的个数和 Observer 角色的个数。

所有 Follower 角色的 FE 节点会组成一个可选择组,类似 Poxas 一致性协议里的组概念。组内会选举出一个 Follower 作为 Master。当 Master 挂了,会自动选择新的 Follower 作为 Master。而 Observer 不会参与选举,因此 Observer 也不会称为 Master 。

一条元数据日志需要在多数 Follower 节点写入成功,才算成功。比如3个 FE ,2个写入成功才可以。这也是为什么 Follower 角色的个数需要是奇数的原因。

Observer 角色和这个单词的含义一样,仅仅作为观察者来同步已经成功写入的元数据日志,并且提供元数据读服务。他不会参与多数写的逻辑。

-- END --


推荐阅读
author-avatar
敏儿儿
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有