作者:敏儿儿 | 来源:互联网 | 2023-08-22 04:14
观众朋友们:
下午好!
欢迎收看【 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
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 --