[hadoop] 이름 노드가 안전 모드에 있습니다. 떠날 수 없다

root# bin/hadoop fs -mkdir t
mkdir: org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot create directory /user/root/t. Name node is in safe mode.

hdfs에서 아무것도 만들 수 없습니다.

나는했다

root# bin/hadoop fs -safemode leave

하지만 보여주는

safemode: Unknown command

무엇이 문제입니까?

해결책



답변

네임 노드가 안전 모드를 강제로 나가게하려면 다음 명령을 실행해야합니다.

 bin/hadoop dfsadmin -safemode leave

에 대한 하위 명령이 아니기 때문에 Unknown command명령에 대한 오류 가 발생 하지만 .-safemodehadoop fshadoop dfsadmin

또한 위의 명령 후에는 hadoop fsckhdfs에서 발생하는 불일치를 정리할 수 있도록 한 번 실행하는 것이 좋습니다 .

최신 정보:

최신 배포판 에는 hdfscommand 대신 hadoopcommand를 사용하십시오 . 이 hadoop명령은 더 이상 사용되지 않습니다.

hdfs dfsadmin -safemode leave

hadoop dfsadmin더 이상 사용되지 않으며 hadoop fs명령도 마찬가지입니다 . 모든 hdfs 관련 작업은 별도의 명령으로 이동됩니다 hdfs.


답변

이것을 시도하면 작동합니다

sudo -u hdfs hdfs dfsadmin -safemode leave


답변

명령은 나를 위해 작동하지 않았지만 다음은 작동했습니다.

hdfs dfsadmin -safemode leave

hdfs명령 대신 명령을 사용했습니다 hadoop.

http://ask.gopivotal.com/hc/en-us/articles/200933026-HDFS-goes-into-readonly-mode-and-errors-out-with-Name-node-is-in-safe-를 확인하십시오. 모드- 링크도


답변

위의 Hadoop 버전 2.6.1을 사용하는 경우 명령이 작동하는 동안 감가 상각되었다고 불평합니다. hadoop dfsadmin -safemode leaveDocker 컨테이너에서 Hadoop을 실행 하고 있었기 때문에 실제로 사용할 수 없었고 해당 명령은 컨테이너에서 실행될 때 마술처럼 실패했습니다. 그래서 제가 한 일은 이랬습니다. 나는 문서를 확인 dfs.safemode.threshold.pct했고 문서에서

dfs.replication.min에 정의 된 최소 복제 요구 사항을 충족해야하는 블록의 백분율을 지정합니다. 0보다 작거나 같은 값은 안전 모드를 종료하기 전에 특정 비율의 블록을 기다리지 않음을 의미합니다. 1보다 큰 값은 안전 모드를 영구적으로 만듭니다.

그래서 나는 hdfs-site.xml다음과 같이 변경했습니다 (이전 Hadoop 버전에서는 분명히 다음에서해야합니다 hdfs-default.xml.

<configuration>
    <property>
        <name>dfs.safemode.threshold.pct</name>
        <value>0</value>
    </property>
</configuration>


답변

네임 노드는 메모리가 부족할 때 안전 모드로 들어갑니다. 결과적으로 HDFS는 읽기만 가능합니다. 즉, HDFS에 추가 디렉토리 나 파일을 만들 수 없습니다. 안전 모드에서 나오려면 다음 명령이 사용됩니다.

hadoop dfsadmin -safemode leave

cloudera 관리자를 사용하는 경우 :

go to >>Actions>>Leave Safemode

하지만 항상 문제가 해결되는 것은 아닙니다. 완전한 해결책은 메모리에 약간의 공간을 만드는 데 있습니다. 다음 명령을 사용하여 메모리 사용량을 확인하십시오.

free -m

cloudera를 사용하는 경우 HDFS가 건강 상태가 좋지 않은 징후를 보이는지도 확인할 수 있습니다. 아마도 네임 노드와 관련된 메모리 문제를 보여주고있을 것입니다. 사용 가능한 옵션에 따라 더 많은 메모리를 할당하십시오. cloudera 관리자를 사용하지 않는 경우 동일한 명령을 사용할지 모르겠지만 방법이 있어야합니다. 도움이 되었기를 바랍니다. 🙂


답변

이 시도

sudo -u hdfs hdfs dfsadmin -safemode leave

안전 모드 상태 확인

sudo -u hdfs hdfs dfsadmin -safemode get

여전히 안전 모드에있는 경우 노드의 공간이 충분하지 않은 이유 중 하나는 다음을 사용하여 노드 디스크 사용량을 확인할 수 있습니다.

df -h

루트 파티션이 가득 찬 경우 파일을 삭제하거나 루트 파티션에 공간을 추가하고 첫 번째 단계를 다시 시도하십시오.


답변

안전 모드 켜짐은 (HDFS가 읽기 전용 모드에 있음)
안전 모드 꺼짐은 (HDFS가 쓰기 가능 및 읽기 가능 모드에 있음)을 의미합니다.

에서는 Hadoop 2.6.0아래 명령을 사용하여 이름 노드의 상태를 확인할 수 있습니다.

이름 노드 상태를 확인하려면

$ hdfs dfsadmin -safemode get

안전 모드로 들어가려면 :

$ hdfs dfsadmin -safemode enter

안전 모드를 종료하려면

~$ hdfs dfsadmin -safemode leave