복붙노트

[HADOOP] 네임 노드 형식이 데이터 노드 디스크 공간을 비우지 않습니다.

HADOOP

네임 노드 형식이 데이터 노드 디스크 공간을 비우지 않습니다.

클러스터 ./stop-all.sh를 종료 한 후 hadoop namenode-format을 호출하면 데이터 노드의 디스크 공간이 동일합니다. 즉, 공간이 확보되지 않은 것을 알 수 있습니다.

왜 그런가요?

해결법

  1. ==============================

    1.NameNode를 포맷하기 전에 DataNode에서 수동으로 데이터를 삭제할 수 있습니다

    NameNode를 포맷하기 전에 DataNode에서 수동으로 데이터를 삭제할 수 있습니다

    rmr

    Usage: hadoop fs -rmr URI [URI …]
    

    재귀 버전의 삭제 예:

    hadoop fs -rmr /user/hadoop/dir
    hadoop fs -rmr hdfs://nn.example.com/user/hadoop/dir
    

    종료 코드 :

    성공하면 0을, 에러이면 -1을 반환합니다.

    대안 적으로

    이름 노드가 될 때마다 데이터 노드를 다시 포맷해야합니다. 여기에 두 가지 접근 방식이 있습니다.

    https://issues.apache.org/jira/browse/HDFS-107

  2. ==============================

    2.네임 노드를 포맷 할 때 공간이 정리되지 않습니다. 수동으로해야합니다.

    네임 노드를 포맷 할 때 공간이 정리되지 않습니다. 수동으로해야합니다.

    하기 위해서,

    먼저 ./stop-all.sh 또는 ./stop-mapred.sh 및 ./stop-dfs.sh를 올바른 순서로 호출하여 클러스터를 중지하십시오.

    그런 다음 데이터 노드의 데이터 디렉토리, 즉 hdfs-site.xml의 dfs.data.dir 또는 hadoop.tmp.dir / dfs / data에 의해 지정된 디렉토리를 삭제하십시오.

    포맷을 수행하기 전에 -rmr (이 질문에 대한 다른 답변 중 하나로 지정) 옵션을 사용하는 것이 실제로 가장 좋은 방법입니다. 청소하십시오;)

  3. ==============================

    3.네임 노드를 포맷하면 데이터 노드를 포맷하지 않습니다.

    네임 노드를 포맷하면 데이터 노드를 포맷하지 않습니다.

    네임 노드의 내용 만 포맷합니다. 즉, 귀하의 네임 노드는 더 이상 알 수 없습니다 데이터가있는 곳. 또한 namenode -format은 네임 스페이스에 새 네임 스페이스 ID를 할당합니다.

    데이터 노드를 작동 시키려면 데이터 노드에서 namespaceID를 변경해야합니다. 이것은 dfs / data / current / VERSION에 있습니다.

    네임 노드를 포맷 할 때 데이터 노드를 포맷 할 것을 제안하는 동일한 JIRA가 있습니다. HDFS-107

  4. from https://stackoverflow.com/questions/20141331/namenode-format-does-not-free-up-datanode-disk-space by cc-by-sa and MIT license