FAQ| 近期常见使用问题汇总

c3a56299-2830-4baa-8bdd-0144a45cac3d.gif


b3164189-21bb-4b3d-b571-fc1f451a2e77.png



随着 Apache Doris 在越来越多的公司中得到落地和运用,社区开发者和用户的规模日益壮大。作为 Doris 开发团队,我们一直在致力于帮助更多人更好地去使用 Doris,针对近期社区很多用户在使用过程中遇到的问题,我们进行了总结并汇总发布出来方便大家查阅。


 01 


Q: tablet writer write failed, tablet_id=27306172, txn_id=28573520, err=-235 or -215


这个错误通常发生在数据导入操作中。新版错误码为 -235,老版本错误码可能是 -215。这个错误的含义是,对应 Tablet 的数据版本超过了最大限制(默认500),后续写入将被拒绝。比如问题中这个错误,即表示 27306172 这个 Tablet 的数据版本超过了限制。

这个错误通常是因为导入的频率过高,大于后台数据的 Compaction速度,导致版本堆积并最终超过了限制。此时,我们可以先通过 show tablet 27306172 语句,然后执行结果中的 show proc 语句,查看 Tablet 各个副本的情况。结果中的 versionCount 即表示版本数量。如果发现某个副本的版本数量过多,则需要降低导入频率或停止导入,并观察版本数是否有下降。如果停止导入后,版本数依然没有下降,则需要去对应的 BE 节点查看 be.INFO 日志,搜索 Tablet id 以及 Compaction 关键词,检查 Compaction 是否正常运行。关于 Compaction 调优相关,可以参阅:Doris 最佳实践-Compaction调优(3) 


 02 


Q: tablet 110309738 has few replicas: 1, alive backends: [10003]


这个错误可能发生在查询或者导入操作中。通常意味着对应 Tablet 的副本出现了异常。

此时,可以先通过 show backends 命令检查 BE 节点是否有宕机,如 isAlive 字段为 false ,或者 LastStartTime 是最近的某个时间(表示最近重启过)。如果 BE 有宕机,则需要去 BE 对应的节点,查看 be.out 日志。如果 BE 是因为异常原因宕机,通常 be.out 中会打印异常堆栈,帮助排查问题。如果 be.out 中没有错误堆栈。则可以通过 linux 命令 dmesg -T 检查是否是因为 OOM 导致进程被系统 kill 掉。

如果没有 BE 节点宕机,则需要通过 show tablet 110309738 语句,然后执行结果中的 show proc 语句,查看 Tablet 各个副本的情况,进一步排查。


 03 


Q: disk ***** on backend **** exceed limit usage


通常出现在导入、Alter 等操作中。

这个错误意味着对应 BE 的对应磁盘的使用量超过了阈值(默认95%)此时可以先通过 show backends 命令,其中 MaxDiskUsedPct 展示的是对应 BE 上,使用率最高的那块磁盘的使用率,如果超过 95%,则会报这个错误。

此时需要前往对应 BE 节点,查看数据目录下的使用量情况。其中 trash 目录和 snapshot 目录可以手动清理以释放空间。如果是 data 目录占用较大,则需要考虑删除部分数据以释放空间了,具体可以参阅 Doris 官网文档中的「 磁盘空间管理 」

https://doris.apache.org/master/zh-CN/administrator-guide/operation/disk-capacity.html



 04 


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


在下线过程中,通过 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 。否则,还需要具体查看不健康分片的副本情况。


 05 


Q: Doris 网络参数  priorty_network 应该如何设置?


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 的值。


 06 


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


首先明确一点,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 角色和这个单词的含义一样,仅仅作为观察者来同步已经成功写入的元数据日志,并且提供元数据读服务。


 07 


Q: FE启动失败,fe.log中一直滚动 "wait catalog to be ready. FE type UNKNOWN"


这种问题通常有两个原因:

1. 本次 FE 启动时获取到的本机 IP 和上次启动不一致,通常是因为没有正确设置 `priority_network` 而导致 FE 启动时匹配到了错误的 IP 地址。需修改 `priority_network` 后重启 FE。

2. 集群内多数 Follower FE 节点未启动。比如有 3 个 Follower,只启动了一个。此时需要将另外至少一个 FE 也启动,FE 可选举组方能选举出 Master 已提供服务。

如果以上情况都不能解决,可以按照 Doris 官网文档中的「 元数据运维 」文档进行恢复:

https://doris.apache.org/master/zh-CN/administrator-guide/operation/metadata-operation.html#%E9%87%8D%E8%A6%81%E6%8F%90%E7%A4%BA


 08 

Q: Failed to get scan range, no queryable replica found in tablet: xxxx


这种情况是因为对应的 Tablet 没有找到可以查询的副本,通常原因可能是 BE 宕机、副本缺失等。可以先通过 `show tablet tablet_id` 语句,然后执行后面的 `show proc` 语句,查看这个 Tablet 对应的副本信息,检查副本是否完整。同时还可以通过 `show proc "/cluster_balance"` 信息来查询集群内副本调度和修复的进度。



 09 

Q: 使用 Stream Load 访问 FE 的公网地址导入数据,被重定向到内网 IP?


当 Stream Load 的连接目标为 FE 的 http 端口时,FE 仅会随机选择一台 BE 节点做 http 307 redirect 操作,因此用户的请求实际是发送给 FE 指派的某一个 BE 的。而 redirect 返回的是 BE 的 IP ,也即内网 IP 。所以如果你是通过 FE 的公网 IP 发送的请求,很有可能因为 redirect 到内网地址而无法连接。

通常的做法,一种是确保自己能够访问内网 IP 地址,或者是给所有 BE 上层假设一个负载均衡,然后直接将 Stream Load 请求发送到负载均衡器上,由负载均衡将请求透传到 BE 节点。





【精彩文章】
活动回顾| Apache Doris 的过去、现在与未来 社区人物志|张家锋:一个人可能走得更快,但一群人会走得更远 社区人物志|王博:每一位你,都是前进道路上的一团星光。
【应用实践】京东物流基于 Doris 的亿级数据自助探索应用
【应用实践】Apache Doris 在蜀海供应链的实践




欢迎扫码关注:

664b6f8e-5ee0-474e-bd93-c8aba012e248.jpg

Apache Doris(incubating)官方公众号


相关链接:

Apache Doris官方网站:

http://doris.incubator.apache.org

Apache Doris Github:

https://github.com/apache/incubator-doris

Apache Doris 开发者邮件组:

dev@doris.apache.org 






530e737d-4ae8-4109-bdf8-0ad4700fcf12.png

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ApacheDoris

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

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

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

打赏作者

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

抵扣说明:

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

余额充值