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 文件和本地文件校验和比较的主要内容,如果未能解决你的问题,请参考以下文章

hadoop 文件和本地文件校验和比较

Hadoop块校验和:也存储在namenode中?

HDFS(Hadoop Distributed File System)的组件架构概述

hadoop IO操作

Hadoop IO

hadoop内部表直接添加文件