Hadoop中的校验和验证

chh*_*rma 11 hadoop checksum hdfs

我们需要在通过Webhdfs从Linux服务器将文件移动到Hadoop(HDFS)后验证校验和吗?

我想确保HDFS上的文件在复制后没有损坏.但检查校验和是否必要?

在将数据写入HDFS之前,我读取客户端做校验和

有人可以帮助我理解如何确保Linux系统上的源文件与使用webhdfs的Hdfs上的摄取文件相同.

小智 9

如果您的目标是比较驻留在HDFS上的两个文件,我不会使用"hdfs dfs -checksum URI",因为在我的情况下,它会为具有相同内容的文件生成不同的校验和.

在下面的示例中,我将比较具有相同内容的两个文件在不同位置:

old-school md5sum方法返回相同的校验和:

$ hdfs dfs -cat /project1/file.txt | md5sum
b9fdea463b1ce46fabc2958fc5f7644a  -

$ hdfs dfs -cat /project2/file.txt | md5sum
b9fdea463b1ce46fabc2958fc5f7644a  -
Run Code Online (Sandbox Code Playgroud)

但是,对于具有相同内容的文件,HDFS上生成的校验和是不同的:

$ hdfs dfs -checksum /project1/file.txt
0000020000000000000000003e50be59553b2ddaf401c575f8df6914

$ hdfs dfs -checksum /project2/file.txt
0000020000000000000000001952d653ccba138f0c4cd4209fbf8e2e
Run Code Online (Sandbox Code Playgroud)

有点令人费解,因为我希望对相同的内容生成相同的校验和.


Ven*_*hik 7

可以使用hadoop fs命令计算文件的校验和.

用法:hadoop fs -checksum URI

返回文件的校验和信息.

例:

hadoop fs -checksum hdfs://nn1.example.com/file1 hadoop fs -checksum file:/// path/in/linux/file1

有关更多详细信息,请参阅:Hadoop文档

因此,如果你想在linux和hdfs中使用comapre file1,你可以使用上面的实用程序.

  • `hadoop fs -checksum file:/// path/in/linux/file1`对我不起作用,它返回`NONE`.任何想法为什么? (3认同)

Abh*_*and 6

我写了一个库,您可以用它来计算本地文件的校验和,就像hadoop在hdfs文件上所做的一样。

因此,您可以比较校验和以进行交叉校验。 https://github.com/srch07/HDFSChecksumForLocalfile