복붙노트

[HADOOP] 정확히 DFS가 아닌 것은 의미합니까?

HADOOP

정확히 DFS가 아닌 것은 의미합니까?

이것이 최근에 웹 UI에서 본 것입니다.

 Configured Capacity     :   232.5 GB
 DFS Used    :   112.44 GB
 Non DFS Used    :   119.46 GB
 DFS Remaining   :   613.88 MB
 DFS Used%   :   48.36 %
 DFS Remaining%  :   0.26 %

나는 dfs가 아닌 것이 용량의 절반 이상을 차지할 정도로 혼란 스럽습니다.

나는 hadoop 스토리지의 절반이 낭비되고 있음을 의미한다고 생각합니다.

무의미한 시간을 보내고 난 후에, 나는 namenode를 포맷하고, 처음부터 시작했다.

그런 다음 로컬에서 HDFS로 1 개의 거대한 텍스트 파일 (약 19GB)을 복사했습니다 (성공).

이제 UI에

Configured Capacity  :   232.5 GB
DFS Used     :   38.52 GB
Non DFS Used     :   45.35 GB
DFS Remaining    :   148.62 GB
DFS Used%    :   16.57 %
DFS Remaining%   :   63.92 %

복사하기 전에 사용 된 DFS와 사용 된 DFS가 모두 0이었습니다.

사용 된 DFS가 원본 텍스트 파일 크기의 약 두 배이고 2 사본을 구성했기 때문에,

사용 된 DFS는 원본과 메타의 2 부로 구성됩니다.

그러나 여전히 Non DFS Used가 어디서 왔는지, 그리고 왜 DFS Used보다 더 많은 Capcity를 차지하는 지 전혀 알지 못합니다.

어떻게 된 거예요? 내가 실수 한거야?

해결법

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

    1."사용 된 비 DFS"는 다음 공식으로 계산됩니다.

    "사용 된 비 DFS"는 다음 공식으로 계산됩니다.

    비 DFS 사용됨 = 구성된 용량 - 남은 공간 - 사용 된 DFS

    적어도 나에게는 혼란 스럽다.

    때문에 구성된 용량 = 총 디스크 공간 - 예약 된 공간.

    따라서 사용 된 비 DFS = (총 디스크 공간 - 예약 된 공간) - 남은 공간 - 사용 된 DFS

    예를 들어 봅시다. 100GB 디스크가 있다고 가정하고 예약 된 공간 (dfs.datanode.du.reserved)을 30GB로 설정합니다.

    디스크에서 시스템 및 기타 파일은 최대 40GB까지, DFS는 10GB까지 사용되었습니다. df -h를 실행하면 해당 디스크 볼륨의 사용 가능한 공간이 50GB임을 알 수 있습니다.

    HDFS 웹 UI에서

    비 DFS 사용 = 100GB (총) - 30GB (예약 됨) - 10GB (DFS 사용) - 50GB (남음)              = 10GB

    따라서 처음에는 비 dfs 사용을 위해 30G를 예약하고 HDFS를 위해서는 70G를 예약하도록 구성했습니다. 그러나 비 dfs 사용량이 30G 예약을 초과하고 HDFS에 속해야하는 10GB 공간을 차지합니다.

    "비 DFS 사용"이라는 용어는 실제로 "비 DFS 사용으로 구성된 DFS 용량의 양"

    그리고 왜 dfs가 아닌 사용이 hadoop 내부에서 그렇게 높은지 알아내는 것을 멈춰야합니다.

    하나의 유용한 명령은 lsof | grep delete. 삭제 된 열린 파일을 식별하는 데 도움이됩니다. 가끔 Hadoop 프로세스 (하이브, 원사, 맵핑 및 hdfs)는 이미 삭제 된 파일을 참조 할 수 있습니다. 그리고 이러한 참조는 디스크 공간을 차지합니다.

    또한 du-hsx * | 정렬 -rh | head -10은 상위 10 위의 폴더를 나열하는 데 도움이됩니다.

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

    2.사용되지 않은 DFS는 dfs.data.dirs에없는 데이터 노드의 파일 시스템에있는 모든 데이터입니다. 여기에는 로그 파일, mapreduce 셔플 출력 및 데이터 파일의 로컬 복사본 (데이터 노드에 파일을 놓는 경우)이 포함됩니다. 뒤 또는 비슷한 도구를 사용하여 파일 시스템의 공간을 차지하는 것을 확인하십시오.

    사용되지 않은 DFS는 dfs.data.dirs에없는 데이터 노드의 파일 시스템에있는 모든 데이터입니다. 여기에는 로그 파일, mapreduce 셔플 출력 및 데이터 파일의 로컬 복사본 (데이터 노드에 파일을 놓는 경우)이 포함됩니다. 뒤 또는 비슷한 도구를 사용하여 파일 시스템의 공간을 차지하는 것을 확인하십시오.

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

    3.올바른 단순화 된 정의는 다음과 같습니다 : "dfs.data.dir과 동일한 파일 시스템에서 HDFS에 의해 작성되지 않은 모든 데이터. 즉, hdfs dfs 명령을 사용하여 데이터를 복사하면 dfs에서 끝납니다. data.dirs하지만 "DFS 사용"으로 간주되며 일반 cp 명령을 사용하여 파일을 dfs.data.dirs로 복사하면 "DFS 이외의 사용"이됩니다.

    올바른 단순화 된 정의는 다음과 같습니다 : "dfs.data.dir과 동일한 파일 시스템에서 HDFS에 의해 작성되지 않은 모든 데이터. 즉, hdfs dfs 명령을 사용하여 데이터를 복사하면 dfs에서 끝납니다. data.dirs하지만 "DFS 사용"으로 간주되며 일반 cp 명령을 사용하여 파일을 dfs.data.dirs로 복사하면 "DFS 이외의 사용"이됩니다.

  4. ==============================

    4.하나 더. 비 DFS 사용 = 100GB (총) - 30GB (예약) - 10GB (DFS 사용) - 50GB (남은 용량) = 10GB ext3 / ext4는 기본적으로 5 %를 예약하므로 (예약 된 블록 수를 참조하십시오), 그렇게해야합니다. 비 DFS 사용 = 100GB (총) - 30GB (응용 프로그램에서 예약) - 5GB (FS에서 예약) - 10GB (DFS 사용) - 50GB (나머지) = 5GB

    하나 더. 비 DFS 사용 = 100GB (총) - 30GB (예약) - 10GB (DFS 사용) - 50GB (남은 용량) = 10GB ext3 / ext4는 기본적으로 5 %를 예약하므로 (예약 된 블록 수를 참조하십시오), 그렇게해야합니다. 비 DFS 사용 = 100GB (총) - 30GB (응용 프로그램에서 예약) - 5GB (FS에서 예약) - 10GB (DFS 사용) - 50GB (나머지) = 5GB

    sudo tune2fs -l / dev / sdm1에서 "Reserved block count"를 얻습니다. BTW, tune2fs -m 0.2 / dev / sdm1 예약 된 공간을 조정하십시오.

  5. ==============================

    5.non-dfs는 노드 관리자가 저장할 일부 캐시 파일입니다. yarn-site.xml의 yarn.nodemanager.local-dirs 속성 아래에서 경로를 확인할 수 있습니다.

    non-dfs는 노드 관리자가 저장할 일부 캐시 파일입니다. yarn-site.xml의 yarn.nodemanager.local-dirs 속성 아래에서 경로를 확인할 수 있습니다.

    참조 할 수 있습니다. 자세한 내용은 기본 yarn-site.xml을 참조하십시오.

  6. from https://stackoverflow.com/questions/18477983/what-exactly-non-dfs-used-means by cc-by-sa and MIT license