hadoop 文件和本地文件校验和比较
把本地文件 aaa.csv 上传到 hdfs:///tmp/aaa.csv:
$ hdfs dfs -put ./aaa.csv hdfs:///tmp/
但是不放心文件是否完整地传输到 hdfs 上,需要校验本地文件和 hdfs 上是否完全一致。先对 hdfs 上的文件进行 md5:
$ hdfs dfs -checksum hdfs:///tmp/aaa.csv
hdfs:///tmp/aaa.csv MD5-of-0MD5-of-512CRC32C 000002000000000000000000925dd9d851dc2c6a0f003879fb4fde62
但是本地的: md5sum ./aaa.csv
56abbb84db24eed7e39e9b0560fd676a aaa.csv
可见使用的算法不同。下载下面这个开源工具:
https://github.com/srch07/HDFSChecksumForLocalfile
编译之后(cd HDFSChecksumForLocalfile && mvn compile package)使用它的 jar:
$ java -jar HDFSChecksumForLocalfile/target/HadoopChecksumForLocalfile-1.0.jar ./aaa.csv 512 0 CRC32C
925dd9d851dc2c6a0f003879fb4fde62
上面的命令行的参数:512 0 CRC32C 必须与下面这个匹配:
MD5-of-0MD5-of-512CRC32C