hadoop 文件和本地文件校验和比较
Posted 车斗
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hadoop 文件和本地文件校验和比较相关的知识,希望对你有一定的参考价值。
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
这样就本地文件和hadoop上的文件证明完全一致了。
再举一个例子:
$ hdfs dfs -checksum hdfs://tmp/000003_0
MD5-of-524288MD5-of-512CRC32C 0000020000000000000800003312abd6394dff3e5e9f001fa8d114e1
下载到本地:
$ hdfs dfs -get hdfs://tmp/000003_0 ./
如果 checksum 本地文件,则为:
$ java -jar HDFSChecksumForLocalfile/target/HadoopChecksumForLocalfile-1.0.jar 000003_0 512 524288 CRC32C
3312abd6394dff3e5e9f001fa8d114e1
从而证明二个文件完全一致。
以上是关于hadoop 文件和本地文件校验和比较的主要内容,如果未能解决你的问题,请参考以下文章