MPP数据库之Doris(7):Doris安装部署之常见问题

目录

0. 相关文章链接

1. 如何确定 FE 进程启动成功

2. 如何确定 BE 进程启动成功

3. 搭建系统后,如何确定 FE、BE 连通性正常

4. Doris 各节点认证机制

5. BE 进程文件句柄数


0. 相关文章链接

数据库 文章汇总

1. 如何确定 FE 进程启动成功

FE 进程启动后,会首先加载元数据,根据 FE 角色的不同,在日志中会看到 transfer from UNKNOWN to MASTER/FOLLOWER/OBSERVER。最终会看到 thrift server started 日志,并且可以通过 mysql 客户端连接到 FE,则表示 FE 启动成功。

也可以通过如下连接查看是否启动成功:
http://fe_host:fe_http_port/api/bootstrap

如果返回:
{"status":"OK","msg":"Success"}

则表示启动成功,其余情况,则可能存在问题。

注:如果在 fe.log 中查看不到启动失败的信息,也许在 fe.out 中可以看到。

2. 如何确定 BE 进程启动成功

BE 进程启动后,如果之前有数据,则可能有数分钟不等的数据索引加载时间。

如果是 BE 的第一次启动,或者该 BE 尚未加入任何集群,则 BE 日志会定期滚动 waiting to receive first heartbeat from frontend 字样。表示 BE 还未通过 FE 的心跳收到 Master 的地址,正在被动等待。这种错误日志,在 FE 中 ADD BACKEND 并发送心跳后,就会消失。如果在接到心跳后,又重复出现 master client, get client from cache failed.host: , port: 0, code: 7 字样,说明 FE 成功连接了 BE,但 BE 无法主动连接 FE。可能需要检查 BE 到 FE 的 rpc_port 的连通性。

如果 BE 已经被加入集群,日志中应该每隔 5 秒滚动来自 FE 的心跳日志:get heartbeat, host: xx.xx.xx.xx, port: 9020, cluster id: xxxxxx,表示心跳正常。

其次,日志中应该每隔 10 秒滚动 finish report task success. return code: 0 的字样,表示 BE 向 FE 的通信正常。

同时,如果有数据查询,应该能看到不停滚动的日志,并且有 execute time is xxx 日志,表示 BE 启动成功,并且查询正常。

也可以通过如下连接查看是否启动成功:
http://be_host:be_http_port/api/health

如果返回:
{"status": "OK","msg": "To Be Added"}

则表示启动成功,其余情况,则可能存在问题。

注:如果在 be.INFO 中查看不到启动失败的信息,也许在 be.out 中可以看到。

3. 搭建系统后,如何确定 FE、BE 连通性正常

首先确认 FE 和 BE 进程都已经单独正常启动,并确认已经通过 ADD BACKEND 或者 ADD FOLLOWER/OBSERVER 语句添加了所有节点。

如果心跳正常,BE 的日志中会显示 get heartbeat, host: xx.xx.xx.xx, port: 9020, cluster id: xxxxxx。如果心跳失败,在 FE 的日志中会出现 backend[10001] got Exception: org.apache.thrift.transport.TTransportException 类似的字样,或者其他 thrift 通信异常日志,表示 FE 向 10001 这个 BE 的心跳失败。这里需要检查 FE 向 BE host 的心跳端口的连通性。

如果 BE 向 FE 的通信正常,则 BE 日志中会显示 finish report task success. return code: 0 的字样。否则会出现 master client, get client from cache failed 的字样。这种情况下,需要检查 BE 向 FE 的 rpc_port 的连通性。

4. Doris 各节点认证机制

除了 Master FE 以外,其余角色节点(Follower FE,Observer FE,Backend),都需要通过 ALTER SYSTEM ADD 语句先注册到集群,然后才能加入集群。

Master FE 在第一次启动时,会在 doris-meta/image/VERSION 文件中生成一个 cluster_id。

FE 在第一次加入集群时,会首先从 Master FE 获取这个文件。之后每次 FE 之间的重新连接(FE 重启),都会校验自身 cluster id 是否与已存在的其它 FE 的 cluster id 相同。如果不同,则该 FE 会自动退出。

BE 在第一次接收到 Master FE 的心跳时,会从心跳中获取到 cluster id,并记录到数据目录的 cluster_id 文件中。之后的每次心跳都会比对 FE 发来的 cluster id。如果 cluster id 不相等,则 BE 会拒绝响应 FE 的心跳。

心跳中同时会包含 Master FE 的 ip。当 FE 切主时,新的 Master FE 会携带自身的 ip 发送心跳给 BE,BE 会更新自身保存的 Master FE 的 ip。

priority_network

priority_network 是 FE 和 BE 都有一个配置,其主要目的是在多网卡的情况下,协助 FE 或 BE 识别自身 ip 地址。priority_network 采用 CIDR 表示法:RFC 4632(opens new window)

当确认 FE 和 BE 连通性正常后,如果仍然出现建表 Timeout 的情况,并且 FE 的日志中有 backend does not found. host: xxx.xxx.xxx.xxx 字样的错误信息。则表示 Doris 自动识别的 IP 地址有问题,需要手动设置 priority_network 参数。

出现这个问题的主要原因是:当用户通过 ADD BACKEND 语句添加 BE 后,FE 会识别该语句中指定的是 hostname 还是 IP。如果是 hostname,则 FE 会自动将其转换为 IP 地址并存储到元数据中。当 BE 在汇报任务完成信息时,会携带自己的 IP 地址。而如果 FE 发现 BE 汇报的 IP 地址和元数据中不一致时,就会出现如上错误。

这个错误的解决方法:1)分别在 FE 和 BE 设置 priority_network 参数。通常 FE 和 BE 都处于一个网段,所以该参数设置为相同即可。2)在 ADD BACKEND 语句中直接填写 BE 正确的 IP 地址而不是 hostname,以避免 FE 获取到错误的 IP 地址。

5. BE 进程文件句柄数

BE进程文件句柄数,受min_file_descriptor_number/max_file_descriptor_number两个参数控制。

如果不在[min_file_descriptor_number, max_file_descriptor_number]区间内,BE进程启动会出错,可以使用ulimit进行设置。

min_file_descriptor_number的默认值为65536。

max_file_descriptor_number的默认值为131072.

举例而言:ulimit -n 65536; 表示将文件句柄设成65536。

启动BE进程之后,可以通过 cat /proc/$pid/limits 查看进程实际生效的句柄数


注:Doris系列博文为通过对Doris官网学习记录所写,其中有加入个人理解,如有不足,请各位读者谅解☺☺☺

注:其他相关文章链接由此进 ->     数据库 文章汇总


  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

电光闪烁

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

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

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

打赏作者

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

抵扣说明:

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

余额充值