报错信息如下:
Check failed: _s.ok() Bad status: Corruption: Failed to load FS layout: Could not process records in container /data/sa_cluster/kudu/table_server/tserver_data/data/57229d7636f54c7d8d4ca41ecda01c1e: Data checksum does not match: Incorrect checksum in file /data/sa_cluster/kudu/table_server/tserver_data/data/57229d7636f54c7d8d4ca41ecda01c1e.metadata at offset 1601543: Checksum does not match. Expected: 0. Actual: 2043694497
解决办法:
1、删除xx.metadata文件最后一行。命令 sed -i ‘$d’ xx.metadata
2、 一般异常关闭会导致一批metadata文件损环,删除报错文件最后一行,再次启动很可能报下一个文件损坏。
可用批量删除同一时间点的metadata文件最后一行。
(1)先找到对应时间点:
cd /da1/bigdata/kudu/tablet/data/data/
ls -l --full-time | grep “b77918da73e342b4940f64c557ea0f61.metadata” | grep .metadata
找到时间点:
-rw------- 1 kudu kudu 568864 2018-10-13 17:04:07.857377164 +0800 b77918da73e342b4940f64c557ea0f61.metadata
(2)查看对应时间点的所有metadata文件ls -l --full-time | grep "2018-10-13 17:04:07.8" | grep ".metadata“
(3)用VIM随机打开几个文件是否都有异常(基本上最后一行都有异常字符)。
(4)批量删除这些文件最后一行
执行:(一行命令)
for i in `ls -l --full-time |
grep "2018-10-13 17:04:07.85" |
grep ".metadata" |
awk {'print $9'}`; do sed -i ‘$d’ $i; done
命行执行情况