[HADOOP] 체크섬 예외는 아파치에서 읽거나 hdfs에 복사 할 때 발생합니다.
HADOOP체크섬 예외는 아파치에서 읽거나 hdfs에 복사 할 때 발생합니다.
Apache hadoop을 사용하여 병렬 알고리즘을 구현하려고하지만 로컬 파일 시스템에서 hdfs로 파일을 전송하려고 할 때 몇 가지 문제에 직면하고 있습니다. 파일을 읽거나 전송하려고 할 때 체크섬 예외가 발생합니다.
이상한 것은 일부 파일이 성공적으로 복사되는 반면 다른 파일은 복사되지 않는다는 것입니다. (나는 2 개의 파일로 시도했는데 하나는 다른 파일보다 약간 크고 크기는 작습니다.) 필자가 한 또 다른 관찰은 Java FileSystem.getFileChecksum 메서드가 모든 경우에 null을 반환한다는 것입니다.
달성하려는 목표에 대한 약간의 배경 : 필자가 작성한 mapreduce 작업의 분산 캐시로 사용할 수 있도록 파일을 hdfs에 쓰려고합니다.
나는 또한 터미널에서 hadoop fs -copyFromLocal 명령을 시도했으며 그 결과는 자바 코드를 통해 완료되었을 때와 완전히 똑같습니다.
나는 stackoverflow에 다른 질문을 포함하여 웹 온통 봤어 그러나 문제를 해결하기 위해 관리하지 않았습니다. 제발 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
해결법
-
==============================
1.HADOOP-7199에 설명 된 버그가 발생했을 수 있습니다. copyToLocal을 사용하여 파일을 다운로드하면 동일한 디렉토리에 crc 파일도 복사되므로 파일을 수정 한 다음 copyFromLocal을 시도하면 새 파일의 체크섬을 수행하고 로컬 파일과 비교합니다 crc 파일을 읽고 설명이없는 오류 메시지와 함께 실패하십시오.
HADOOP-7199에 설명 된 버그가 발생했을 수 있습니다. copyToLocal을 사용하여 파일을 다운로드하면 동일한 디렉토리에 crc 파일도 복사되므로 파일을 수정 한 다음 copyFromLocal을 시도하면 새 파일의 체크섬을 수행하고 로컬 파일과 비교합니다 crc 파일을 읽고 설명이없는 오류 메시지와 함께 실패하십시오.
이 문제를 해결하려면이 crc 파일을 가지고 있는지 확인한 다음 제거하고 다시 시도하십시오.
-
==============================
2..crc 파일을 제거하여 같은 문제가 해결되었습니다.
.crc 파일을 제거하여 같은 문제가 해결되었습니다.
-
==============================
3.Ok. 그래서 나는이 문제를 해결할 수 있었고, 다른 누군가가 똑같은 문제에 직면했을 때를 대비해 여기서 답을 쓰고 있습니다.
Ok. 그래서 나는이 문제를 해결할 수 있었고, 다른 누군가가 똑같은 문제에 직면했을 때를 대비해 여기서 답을 쓰고 있습니다.
내가 한 것은 단순히 새 파일을 만들고 문제가있는 파일의 모든 내용을 복사 한 것입니다.
어떤 crc 파일이 생성되어 특정 파일에 첨부되어있는 것처럼 보이기 때문에 다른 파일을 시도하여 다른 crc 검사가 수행됩니다. 또 다른 이유는 다른 리소스와 충돌하는 파일 이름이 될 수있는 attr.txt라는 파일을 명명 한 것일 수 있습니다. 어쩌면 누군가가 내 대답에 대해 더 많은 것을 확장 할 수 있습니다. 기술적 인 내용에 대해 100 % 확실하지 않고 단지 내 관찰 일뿐입니다.
-
==============================
4.CRC 파일은 특정 블록 데이터에 대한 일련 번호를 보유합니다. 전체 데이터는 집단 블록으로 스필 트됩니다. 각 블록은 CRC 파일과 함께 metada를 / hdfs / data / dfs / data 폴더에 저장합니다. 어떤 사람이 CRC 파일을 수정하면 실제 및 현재 CRC 일련 번호가 일치하지 않아 오류가 발생합니다 !! 이 오류를 수정하는 가장 좋은 방법은 CRC 파일과 함께 메타 데이터 파일을 덮어 쓰는 것입니다.
CRC 파일은 특정 블록 데이터에 대한 일련 번호를 보유합니다. 전체 데이터는 집단 블록으로 스필 트됩니다. 각 블록은 CRC 파일과 함께 metada를 / hdfs / data / dfs / data 폴더에 저장합니다. 어떤 사람이 CRC 파일을 수정하면 실제 및 현재 CRC 일련 번호가 일치하지 않아 오류가 발생합니다 !! 이 오류를 수정하는 가장 좋은 방법은 CRC 파일과 함께 메타 데이터 파일을 덮어 쓰는 것입니다.
-
==============================
5.나는 똑같은 문제가있어 해결책을 얻지 못했다. 이것이 처음으로 만회 한 경험 이었기 때문에 인터넷을 통한 지시를 따르지 못했습니다. 내 namenode 서식을 지정하여이 문제를 해결했습니다.
나는 똑같은 문제가있어 해결책을 얻지 못했다. 이것이 처음으로 만회 한 경험 이었기 때문에 인터넷을 통한 지시를 따르지 못했습니다. 내 namenode 서식을 지정하여이 문제를 해결했습니다.
hadoop namenode -format
from https://stackoverflow.com/questions/15434709/checksum-exception-when-reading-from-or-copying-to-hdfs-in-apache-hadoop by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] AM 컨테이너가 할당되기를 기다리는 MapReduce 작업이 중지됨 (0) | 2019.06.16 |
---|---|
[HADOOP] jobconf와 job의 기본적인 차이점은 무엇입니까? (0) | 2019.06.16 |
[HADOOP] Hadoop에서 파일 / 폴더 삭제 중 (0) | 2019.06.16 |
[HADOOP] Apache Spark은 HDFS 데이터 노드에 대해 어떻게 알고 있습니까? (0) | 2019.06.16 |
[HADOOP] Hadoop 릴리스 누락 / conf 디렉토리 (0) | 2019.06.16 |