kudu 服务器断电无法启动

kudu 服务器断电无法启动

  • kudu 服务器正在大量数据写入时, 服务器异常断或非法关闭会造成 Tablet Server 的
    metadata文件数据不完整,再次启动tablet server会报如下错误:
    Check failed: _s.ok() Bad status: Corruption: Failed to load FS layout: Could not process records in container
    /da1/bigdata/kudu/tablet/data/datab77918da73e342b4940f64c557ea0f61:
    Data length checksum does not match: Incorrect checksum in file
    /da1/bigdata/kudu/tablet/data/data/b77918da73e342b4940f64c557ea0f61.metadata
    at offset 634685: Checksum does not match. Expected: 0. Actual:
    1214729159
    解决办法:
    1、删除/da1/bigdata/kudu/tablet/data/data/b77918da73e342b4940f64c557ea0f61.metadata
    文件最后一行。
    命令 sed -i ‘$d’ /da1/bigdata/kudu/tablet/data/data/b77918da73e342b4940f64c557ea0f61.metadata

  • 一般异常关闭会导致一批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随机打开几个文件是否都有异常(基本上最后一行都有异常字符)。

metadata文件最一行的异常信息
(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

命行执行情况