Исключение контрольной суммы при чтении или копировании в hdfs в apache hadoop

Я пытаюсь реализовать распараллеленный алгоритм, используя Apache Hadoop, однако я сталкиваюсь с некоторыми проблемами при попытке передачи файла из локальной файловой системы в hdfs.исключение контрольной суммы выбрасывается при попытке чтения или передачи файла.

Странно то, что некоторые файлы успешно копируются, а другие нет (я пробовал с 2 файлами, один немного больше другого, хотя оба имеют небольшой размер). Еще одно наблюдение, которое я сделал, заключается в том, что JavaFileSystem.getFileChecksum метод, возвращаетзначение NULL в любом случае.

Небольшая предыстория того, чего я пытаюсь достичь: я пытаюсь записать файл в hdfs, чтобы иметь возможность использовать его в качестве распределенного кэша для задания mapreduce, которое я написал.

Я также попробовал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

Ответы на вопрос(4)

Ваш ответ на вопрос