복붙노트

[HADOOP] HDFS에서 "mapred.min.split.size"매개 변수의 동작

HADOOP

HDFS에서 "mapred.min.split.size"매개 변수의 동작

매개 변수 "mapred.min.split.size"는 파일이 이전에 작성된 블록의 크기를 변경합니까? JOB을 시작할 때 매개 변수 "mapred.min.split.size"를 134217728 (128MB)의 값으로 전달하는 상황을 가정합니다. 무슨 일이 일어나는가에 대해 옳은 말은 무엇입니까?

1 - 각 MAP은 2 개의 HDFS 블록에 해당하는 프로세스를 처리합니다 (각 블록이 64MB라고 가정).

2 - HDFS 128M에서 블록을 차지하기 위해 입력 파일 (이전에 포함 된 HDFS 포함)의 새로운 부분이있을 것입니다.

해결법

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

    1.분할 크기는 다음 공식으로 계산됩니다.

    분할 크기는 다음 공식으로 계산됩니다.

    max(mapred.min.split.size, min(mapred.max.split.size, dfs.block.size))
    

    귀하의 경우 그것은 될 것입니다 :

    split size=max(128,min(Long.MAX_VALUE(default),64))
    

    그래서 위의 추론 : -

    그러나 블록 크기보다 큰 최소 분할 크기를 만들면 분할 크기가 증가하지만 지역적 비용은 발생합니다.

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

    2.최소 분할 크기가 128MB로 정의되고 최소 블록 크기가 64MB로 정의된다고 가정하십시오.

    최소 분할 크기가 128MB로 정의되고 최소 블록 크기가 64MB로 정의된다고 가정하십시오.

    참고 : 기본적으로 각 블록은 HDFS에 의해 3 개의 다른 데이터 노드에 복제됩니다. 또한 각지도 작업은 단일 블록에서 작업을 수행합니다.

    따라서 128MB 분할 크기는 2 블록을 단일 블록으로 간주하여 단일 데이터 노드에서 실행되는 단일 맵 작업을 만듭니다. 이것은 데이터 지역성을 희생 시켜서 발생합니다. "데이터 지역성의 비용"이라는 말은지도 작업이 실행되고 있지 않은 데이터 노드에있는 블록을 말하는 것입니다. 해당 데이터 노드에서 가져와야하는 데이터는 맵 작업이 실행되는 데이터 노드에서 처리되므로 성능이 저하됩니다.

    그러나 기본 파일 크기가 64MB이고 기본 최소 분할 크기가 64MB 인 크기가 128MB 인 파일을 고려할 경우이 경우 일반적으로 두 가지 맵 작업이 각 64MB 블록에 대해 생성됩니다.

  3. from https://stackoverflow.com/questions/19188315/behavior-of-the-parameter-mapred-min-split-size-in-hdfs by cc-by-sa and MIT license