복붙노트

[HADOOP] Hadoop에서 데이터 블록 크기를 설정하는 방법은 무엇입니까? 그것을 바꾸는 것이 유리한가?

HADOOP

Hadoop에서 데이터 블록 크기를 설정하는 방법은 무엇입니까? 그것을 바꾸는 것이 유리한가?

Hadoop에서 데이터 블록 크기를 변경할 수있는 방법을 알려주십시오. 블록 크기를 변경하는 것이 유리한가요? 그렇다면 알려주세요. 왜 그리고 어떻게해야합니까? 그렇다면 왜, 어떻게 알려 주실 건가요?

해결법

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

    1.이 주제에 대해 많은 혼란이있을 것으로 보이며 잘못된 방향을 제시하는 것도 좋습니다. 혼란을 없애기 위해 실제로 HDFS가 어떻게 구현되는지 생각하는 것이 도움이됩니다.

    이 주제에 대해 많은 혼란이있을 것으로 보이며 잘못된 방향을 제시하는 것도 좋습니다. 혼란을 없애기 위해 실제로 HDFS가 어떻게 구현되는지 생각하는 것이 도움이됩니다.

    HDFS는 분산 디스크 기반 파일 시스템에 대한 추상화입니다. 따라서 "블록"및 "블록 크기"라는 단어는 일반적으로 이해되는 의미와 다릅니다. HDFS의 경우 "파일"은 블록 모음 일 뿐이며 반환되는 각 "블록"은 데이터 노드의 실제 파일로 저장됩니다. 사실 동일한 파일이 복제 요소에 따라 여러 데이터 노드에 저장됩니다. 이러한 개별 파일의 블록 크기와 다른 성능 특성은 개별 데이터 노드의 기본 파일 시스템에 따라 달라집니다.

    HDFS 파일과 데이터 노드의 개별 파일 간의 매핑은 유지됩니다. 에 의해 namenode. 하지만 namenode는 특정 블록 크기를 기대하지 않으며, 일반적으로 분할 된 HDFS 파일을 생성하는 동안 생성 된 매핑 기본 dfs.blocksize에 따라 (그러나 개별적으로 덮어 쓸 수 있습니다).

    예를 들어 복제가 3이고 블록 크기가 64 인 1MB 파일이있는 경우를 의미합니다. 물리적으로 단 3 개의 1MB 파일이 저장되므로 63MB * 3 = 189MB가 손실되지 않습니다. 기본 파일 시스템의 표준 블록 크기 (예 : ext4)와 비교합니다.

    따라서 문제는 dfs.blocksize가 좋은 것으로 바뀌고 변경하는 것이 좋습니다. 먼저 더 큰 블록 크기에 대해 말하는 부분을 나열 해 보겠습니다.

    그러나 블록 크기가 작 으면 무한대로 설정해야합니다.

    이러한 요소들을 서로에 대해 가중치를 부여하는 것은 데이터, 클러스터, 작업 부하 등의 종류에 따라 달라집니다. 그러나 일반적으로 기본 블록 크기 128MB는 이미 일반적인 용도로는 약간 낮습니다. 512MB 또는 1GB까지 고려할 가치가 있습니다.

    그러나 그 부분을 파헤기기 전에 먼저 입력 파일의 크기를 확인해야합니다. 대부분의 파일이 작고 최대 기본 블록 크기에 미치지 못하는 경우 기본적으로 블록 크기는 항상 파일 크기이며 기본 블록 크기를 늘리는 데 도움이되지 않습니다. 너무 많은 매퍼를 생성하는 것을 피하기 위해 입력 결합자를 사용하는 것과 같은 해결 방법이 있지만 궁극적으로 입력 파일이 큰 블록 크기를 충분히 활용할 수 있도록해야합니다.

    그리고 파일이 이미 작 으면 블록 크기를 더 작게 만들어 문제를 복합화하지 마십시오.

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

    2.입력 데이터에 따라 다릅니다. 맵퍼의 수는 DFS 블록 크기에 따라 달라지는 입력 분할에 정비례합니다.

    입력 데이터에 따라 다릅니다. 맵퍼의 수는 DFS 블록 크기에 따라 달라지는 입력 분할에 정비례합니다.

    매우 큰 입력 파일의 처리량을 최대화하려면 매우 큰 블록 (128MB 또는 256MB)을 사용하는 것이 가장 좋습니다.

    작업에 1TB 이상의 입력이있는 경우 입력 데이터 세트의 블록 크기를 256M 또는 512M으로 늘려 작업 수가 적어 지도록하십시오.

    작은 파일의 경우 더 작은 블록 크기를 사용하는 것이 좋습니다.

    이 기사를 한번보세요.

    작은 파일이 있고 최소 DFS 블록 크기보다 작은 경우 HAR 또는 SequenceFiles와 같은 몇 가지 대안을 사용할 수 있습니다.

    이 cloudera 블로그를 한번보세요.

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

    3.dfs.blocksize 매개 변수가 hdfs-site.xml의 final로 정의되어 있지 않으면 언제든지 블록 크기를 변경할 수 있습니다.

    dfs.blocksize 매개 변수가 hdfs-site.xml의 final로 정의되어 있지 않으면 언제든지 블록 크기를 변경할 수 있습니다.

    블록 크기를 변경하려면

    블록 크기 변경 기준 :

    필자는이 성능 튜닝 재생 목록의 2와 3에서 대부분을 설명했습니다.

  4. from https://stackoverflow.com/questions/34419869/how-to-set-data-block-size-in-hadoop-is-it-advantage-to-change-it by cc-by-sa and MIT license