2021-05-24
问题:服务器断电后kudu启动失败或成功后服务掉线
Check failed: _s.ok() Bad status: Incomplete: Failed to load FS layout: Could not open container 3f4b8e835db0431b9abfe9b4bb64f63b: Could not read header for proto container file /data2/kudu_ts/fs_data_dirs/data/3f4b8e835db0431b9abfe9b4bb64f63b.metadata: File size not large enough to be valid: Proto container file /data2/kudu_ts/fs_data_dirs/data/3f4b8e835db0431b9abfe9b4bb64f63b.metadata: Tried to read 16 bytes at offset 0 but file size is only 0 bytes
原因:元数据丢失,经检查发现该元数据文件大小为0
解决方式:删除该节点,删除数据目录,重新安装服务,最后启动。
kudu本身是具有分布式管理功能,当一个节点发生故障,会将数据自动迁移到其他节点上,所以此处我们将kudu的元数据目录迁移重新创建,启动后会有数据重新从其他节点同步过来。
2021-07-01
问题:kudu没有分区
Errors while interacting with Kudu: Row error for primary key=”2021-07-01 14:51:35\x00\x002021-07-01\x00\x001”, tablet=null, server=null, status=Not found: non-covered range
解决方式:创建分区
alter table realtime.ncs_point1 add range partition '2021-07-05' <= VALUES < '2021-07-05\000';
2021-10-09
问题:日志大量WARN,kudu无法使用
解决方式:刷新元数据:invalidate metadata
2021-12-12
常用操作:Kudu副本数检查
- 检查表健康情况操作
sudo -u kudu kudu cluster ksck shmdsjcm01,shmdsjcm02,shmdsjcdh01
shmdsjcm01,shmdsjcm02,shmdsjcdh01 是Kudu Master地址
- 修复操作
刚才那个命令的输出,会把tablet-id和副本数情况显示出来,两种情况:
- 一个副本或者两副本不可用
使用命令修复:
sudo -u kudu kudu remote_replica unsafe_change_config syshdp-kudu38:7050 84b398808bbf449c86d3d625889cfbde e5464e8b7e1145b988b2d16b66fdc438
sudo -u kudu kudu remote_replica unsafe_change_config kudu-server:port tablet-id partition-id
- 三副本不可用
这个时候有一种可能是数据还在(对于丢失元数据的情况),但是没有元数据,真实数据无法访问。可以问问官方社区的老哥,有没有一种建立连接的方法(相当于重新生成元数据)。我当时的处理是直接删掉 tablet 了,这样虽然数据没有了,但是会释放表,表还可用。(如果元数据丢失的少,表里面还会有部分数据)
删除命令:
sudo -u kudu kudu tablet unsafe_replace_tablet shmdsjcm01,shmdsjcm02,shmdsjcdh01 a4343ee8c2544622bf509703f9d0e0fa
sudo -u kudu kudu tablet unsafe_replace_tablet KuduMaster Tablet-id