验证HDFS中文件的校验和

时间:2015-06-29 14:04:24

标签: hadoop hdfs checksum webhdfs

我正在使用webhdfs将数据从本地文件系统提取到HDFS。现在我想确保摄入HDFS的文件的完整性。

如何确保传输的文件不会被破坏/更改等?

我使用下面的webhdfs命令来获取文件的校验和

curl -i -L --negotiate -u: -X GET "http://$hostname:$port/webhdfs/v1/user/path?op=GETFILECHECKSUM"

我应该如何使用上面的校验和来确保Ingested文件的完整性?请建议

以下是我正在遵循的步骤

>md5sum locale_file
740c461879b484f4f5960aa4f67a145b

 >hadoop fs -checksum locale_file
locale_file     MD5-of-0MD5-of-512CRC32C        000002000000000000000000f4ec0c298cd6196ffdd8148ae536c9fe

本地系统上的文件校验和与HDFS上的同一文件不同我需要比较校验和我该怎么做?

3 个答案:

答案 0 :(得分:2)

试试这个

curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=GETFILECHECKSUM"

请参阅以下链接以获取完整信息

https://hadoop.apache.org/docs/r2.6.0/hadoop-project-dist/hadoop-hdfs/WebHDFS.html#Get_File_Checksum

答案 1 :(得分:2)

这样做的一种方法是在本地计算校验和,然后在摄取后将其与hadoop校验和进行匹配。

我写了一个库来计算当地的支票金额,以防任何机构感兴趣。 https://github.com/srch07/HDFSChecksumForLocalfile

答案 2 :(得分:0)

可以从控制台完成,如下所示

bars

您还可以通过代码验证本地文件

$ md5sum locale_file
740c461879b484f4f5960aa4f67a145b

$ hadoop fs -cat locale_file |md5sum -
740c461879b484f4f5960aa4f67a145b -

和Hadoop

import java.io._
import org.apache.commons.codec.digest.DigestUtils;

val md5sum = DigestUtils.md5Hex("locale_file")