3

ローカル ファイル システムから HDFS にデータを取り込むために webhdfs を使用しています。ここで、HDFS に取り込まれたファイルの整合性を確保したいと考えています。

転送されたファイルが破損/変更されていないことを確認するにはどうすればよいですか?

以下の webhdfs コマンドを使用して、ファイルのチェックサムを取得しました

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

取り込まれたファイルの整合性を確保するには、上記のチェックサムをどのように使用すればよいですか? 提案してください

以下は私が従っている手順です

>md5sum locale_file
740c461879b484f4f5960aa4f67a145b

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

ローカル システム上のファイルのチェックサムが、HDFS 上の同じファイルとは異なります。チェックサムを比較する必要があります。どうすればよいですか?

4

3 に答える 3

3

これを行う 1 つの方法は、ローカルでチェックサムを計算し、それを取り込んだ後に Hadoop チェックサムと照合することです。

誰かが興味を持った場合に備えて、ローカルでチェックサムを計算するライブラリを作成しました。 https://github.com/srch07/HDFSChecksumForLocalfile

于 2016-11-09T09:14:47.467 に答える
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

于 2015-06-29T14:29:37.003 に答える
1

以下のようにコンソールから実行できます

$ md5sum locale_file
740c461879b484f4f5960aa4f67a145b

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

コードを介してローカルファイルを確認することもできます

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

val md5sum = DigestUtils.md5Hex("locale_file")

そしてHadoopのために

import org.apache.hadoop.fs._
import org.apache.hadoop.io._

val md5sum = MD5Hash.digest(FileSystem.get(hadoopConfiguration).open(new Path("locale_file"))).toString
于 2017-11-15T07:35:47.110 に答える