Apache hadoopを使用して並列化アルゴリズムを実装しようとしていますが、ローカルファイルシステムからhdfsにファイルを転送しようとすると、いくつかの問題が発生します。ファイルからの読み取りまたはファイルの転送を試みると、チェックサム例外がスローされます。
奇妙なことに、一部のファイルは正常にコピーされていますが、他のファイルは正常にコピーされていません(2つのファイルを試してみましたが、一方はもう一方より少し大きく、両方ともサイズが小さいです)。私が行ったもう1つの観察結果は、JavaFileSystem.getFileChecksumメソッドがすべての場合にnullを返していることです。
私が達成しようとしていることのわずかな背景:私が書いたmapreduceジョブの分散キャッシュとして使用できるように、hdfsにファイルを書き込もうとしています。
また、ターミナルからhadoop fs -copyFromLocalコマンドを試しましたが、結果はJavaコードを介して実行した場合とまったく同じ動作になります。
私はここスタックオーバーフローに関する他の質問を含めてウェブ全体を見てきましたが、問題を解決することができませんでした。私はまだHadoopを初めて使用するので、助けていただければ幸いです。
スローされる例外を示すスタックトレースを以下に添付しています。(この場合、ターミナルからのhadoop fs -copyFromLocalコマンドの結果であるスタックトレースを投稿しました)
name@ubuntu:~/Desktop/hadoop2$ bin/hadoop fs -copyFromLocal ~/Desktop/dtlScaleData/attr.txt /tmp/hadoop-name/dfs/data/attr2.txt
13/03/15 15:02:51 INFO util.NativeCodeLoader: Loaded the native-hadoop library
13/03/15 15:02:51 INFO fs.FSInputChecker: Found checksum error: b[0, 0]=
org.apache.hadoop.fs.ChecksumException: Checksum error: /home/name/Desktop/dtlScaleData/attr.txt at 0
at org.apache.hadoop.fs.ChecksumFileSystem$ChecksumFSInputChecker.readChunk(ChecksumFileSystem.java:219)
at org.apache.hadoop.fs.FSInputChecker.readChecksumChunk(FSInputChecker.java:237)
at org.apache.hadoop.fs.FSInputChecker.read1(FSInputChecker.java:189)
at org.apache.hadoop.fs.FSInputChecker.read(FSInputChecker.java:158)
at java.io.DataInputStream.read(DataInputStream.java:100)
at org.apache.hadoop.io.IOUtils.copyBytes(IOUtils.java:68)
at org.apache.hadoop.io.IOUtils.copyBytes(IOUtils.java:47)
at org.apache.hadoop.io.IOUtils.copyBytes(IOUtils.java:100)
at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:230)
at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:176)
at org.apache.hadoop.fs.FileSystem.copyFromLocalFile(FileSystem.java:1183)
at org.apache.hadoop.fs.FsShell.copyFromLocal(FsShell.java:130)
at org.apache.hadoop.fs.FsShell.run(FsShell.java:1762)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:79)
at org.apache.hadoop.fs.FsShell.main(FsShell.java:1895)
copyFromLocal: Checksum error: /home/name/Desktop/dtlScaleData/attr.txt at 0