全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

KS3分布式文件校验工具

最近更新时间:2021-12-27 17:19:02

下载

dist-checker-1.0.2.jar

功能说明

DistChecker 用于校验 hdfs、ks3 上文件或目录的一致性。

  • 运行于 mapreduce 框架上,需要 MR 的运行环境。
  • 访问 ks3 文件,需要依赖 hadoop-ks3 的包;并增加相关 ks3 配置

原理

  • DistChecker 将需要校验的每一对源 path和目标 path,进行校验。
  • Reduce 用于汇总结果。
  • 针对输入文件的每一行,递归遍历源 path,将遍历出来的文件路径列表,进行 shuffle 打乱顺序,
    然后按照行数(根据map数计算得出)进行读取;然后根据源 path 进行 reduce

注:

1. shuffle 打乱顺序有助于提升 map 任务的均衡度,降低 MR 任务数据倾斜的风险

2. map 数,可以通过命令行的第三个参数传入;默认为 5

3. 读取行数的计算方式为 lineCount/mapCount+1,即遍历后的文件路径列表行数除以 map 数、然后加 1

4. 过程中会在 hdfs 的临时目录写入文件 check-file-list-detailed 和 check-file-list-shuffled

一致性校验

对于文件校验,由于原生 hdfs 的 checksum 会根据 block 的大小、EC 等发生变化,而文件长度会因加密、压缩等发生变化,因此采用读取完整文件的方式,校验两个文件的 MD5 来校验两个文件的一致性。

如果校验的是目录,则递归校验该目录树中所有文件和目录。

性能

使用 md5 会比 crc 消耗更多的性能,但是具有更好的安全性。一个 2GB 大小的文件计算 MD5 大约需要 7s

使用

hadoop jar dist-checker-x.x.x.jar [check list file] [result output path] [map count]

参数说明:

  • 校验列表文件 check list file

文件中每行包含一个源 path和一个目标 path,以 “,” 分隔。DistChecker 会对比源 path 和目标 path 的一致性。
例如 [check list file] 文件如下:

hadoop fs -cat [check list file]

hdfs://hdfs-ha/tmp/check/data/d1/d1-f2,ks3://ryanbk-test/mi/d1-f2-nomi
hdfs://hdfs-ha/tmp/check/data,ks3://ryanbk-test/check/data
  • 校验结果输出目录 result output path

DistChecker 会将校验文件列表中每一行的校验结果,以源 path 为 key 输出到校验结果文件中。如果校验成功,标记 true;如果失败,标记 false,并列出其中不一致的 entries。

例如检查结果如下:

hadoop fs -cat [result output path]/part-r-00000

hdfs://hdfs-ha/tmp/check/data,false || inconsistent path(s):  hdfs://hdfs-ha/tmp/check/data/d2=>ks3://ryanbk-test/check/data/d2=>TARGET_FILE_MISSING
hdfs://hdfs-ha/tmp/check/data/d1/d1-f2,true
  • 设置 map 数 map count

默认为 5,建议根据集群情况设置

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈