我正在使用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上的同一文件不同我需要比较校验和我该怎么做?
答案 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")