[HADOOP] 손상된 HDFS 파일을 수정하는 방법
HADOOP손상된 HDFS 파일을 수정하는 방법
누군가가 HDFS를 어떻게 수정합니까? Apache / Hadoop 웹 사이트를 살펴 보았는데 fsck 명령을 사용했는데 해결되지 않았습니다. 이전에이 문제를 겪어 본 누군가가이 문제를 해결하는 방법을 알려줄 수 있기를 바랍니다.
bin / hadoop fsck / -delete를 실행했을 때 손상되었거나 누락 된 파일이 나열되었습니다. 나는 그것을 어떻게 손상시키지 않습니까? 이것은 연습용 기계에 있기 때문에 모든 것을 날려 버릴 수 있습니다.하지만 우리가 살면 모든 것을 날려 버리므로 "수정"할 수 없으므로 지금 알아 내려고하고 있습니다.
해결법
-
==============================
1.당신이 사용할 수있는
당신이 사용할 수있는
hdfs fsck /
어떤 파일에 문제가 있는지 확인하십시오. 누락되거나 손상된 블록의 출력을 살펴 봅니다 (지금은 복제되지 않은 블록을 무시하십시오). 이 명령은 실제로 특히 대형 HDFS 파일 시스템에서 자세한 정보를 표시하므로 일반적으로 의미있는 결과물
hdfs fsck / | egrep -v '^\.+$' | grep -v eplica
복제에 대해 말하는 점과 줄만있는 줄은 무시합니다.
손상된 파일을 찾으면
hdfs fsck /path/to/corrupt/file -locations -blocks -files
이 출력을 사용하여 블록이 어디에 살고 있는지 판별하십시오. 파일이 블록 크기보다 크면 여러 블록이있을 수 있습니다.
보고 된 블록 번호를 사용하여 기계 또는 기계를 검색하는 datanodes 및 namenode 로그 블록이 살았던 곳. 파일 시스템 오류를 찾으십시오. 그 기계에. 누락 된 마운트 포인트, 실행중인 datanode, 파일 시스템 재 포맷 / 재 프로비저닝. 문제를 발견 할 수 있다면 그런 식으로 파일을 건강하게 유지할 수있는 온라인 블록을 가져 오십시오. 다시.
모든 파일이 건강 해지거나 배기 될 때까지 씻어서 반복하십시오. 블록을 찾는 모든 대안.
어떤 일이 발생했는지 판단하고 더 이상 블록을 복구 할 수 없으면, 그냥
hdfs fs -rm /path/to/file/with/permanently/missing/blocks
명령을 사용하여 HDFS 파일 시스템을 건강하게 복원하여 시작할 수 있습니다. 새로운 오류가 발생할 때이를 추적합니다.
-
==============================
2.HDFS를 일반 상태로 되돌리고 데이터에 대해 크게 걱정하지 않으려는 경우
HDFS를 일반 상태로 되돌리고 데이터에 대해 크게 걱정하지 않으려는 경우
그러면 손상된 HDFS 블록이 나열됩니다.
hdfs fsck -list-corruptfileblocks
이렇게하면 손상된 HDFS 블록이 삭제됩니다.
hdfs fsck / -delete
sudo 사용자가 아닌 경우 sudo -u hdfs를 사용해야 할 수도 있습니다 ( "hdfs"가 sudo 사용자의 이름이라고 가정)
-
==============================
3.여기에 대한 해결책은 나를 위해 일했습니다 : https://community.hortonworks.com/articles/4427/fix-under-replicated-blocks-in-hdfs-manually.html
여기에 대한 해결책은 나를 위해 일했습니다 : https://community.hortonworks.com/articles/4427/fix-under-replicated-blocks-in-hdfs-manually.html
su - <$hdfs_user> bash-4.1$ hdfs fsck / | grep 'Under replicated' | awk -F':' '{print $1}' >> /tmp/under_replicated_files -bash-4.1$ for hdfsfile in `cat /tmp/under_replicated_files`; do echo "Fixing $hdfsfile :" ; hadoop fs -setrep 3 $hdfsfile; done
-
==============================
4.모든 데몬을 시작하고 "hadoop namenode -recover -force"명령을 실행하여 데몬을 중지하고 다시 시작하십시오. 데이터를 복구하는 데 약간의 시간이 걸릴 수 있습니다.
모든 데몬을 시작하고 "hadoop namenode -recover -force"명령을 실행하여 데몬을 중지하고 다시 시작하십시오. 데이터를 복구하는 데 약간의 시간이 걸릴 수 있습니다.
from https://stackoverflow.com/questions/19205057/how-to-fix-corrupt-hdfs-files by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] Spark에서지도 작업의 ID를 얻는 방법? (0) | 2019.05.28 |
---|---|
[HADOOP] Hadoop 작업을 만들기 위해 mapred 또는 mapreduce 패키지를 사용하는 것이 더 좋습니까? (0) | 2019.05.28 |
[HADOOP] Hadoop에서 여러 MapReduce 작업 체인화 (0) | 2019.05.28 |
[HADOOP] hadoop map 보조 정렬 줄이기 (0) | 2019.05.28 |
[HADOOP] Java 프로그램에서 Sqoop을 사용하는 방법? (0) | 2019.05.28 |