복붙노트

[HADOOP] 하둡의 입력 분할 - 어떻게 작동하나요?

HADOOP

하둡의 입력 분할 - 어떻게 작동하나요?

나는 hadoop에 대한 간략한 것을 안다.

나는 그것이 어떻게 작동하는지 알고 싶어합니다.

정확하게 알고 싶습니다. 정확히 어떻게 입력 파일을 나누거나 나누는 지 알고 싶습니다.

사이즈면에서 똑같은 덩어리로 나눕니 까?

또는 구성 가능한 것입니다.

나는이 지위를 통과했지만 이해할 수 없었다.

해결법

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

    1.이것은 대부분의 파일 기반 형식이 FileInputFormat 기본 클래스에 정의 된 InputFormat에 따라 다릅니다.

    이것은 대부분의 파일 기반 형식이 FileInputFormat 기본 클래스에 정의 된 InputFormat에 따라 다릅니다.

    hadoop이 하나의 파일을 어떻게 하나의 분할로 처리할지 또는 파일을 여러 개의 분할로 나누는지를 나타내는 많은 설정 가능한 옵션이 있습니다 :

    더 많이 알고 싶고 소스 코드를보고 싶다면 FileInputFormat의 getSplits () 메소드를 확인하십시오 (새 API와 이전 API는 모두 동일한 메소드를 갖지만 다소 차이가있을 수 있음).

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

    2.지도 축소 작업 (또는 돼지 / 하이브 작업)을 제출하면 Hadoop은 먼저 입력 분할을 계산하며 각 입력 분할 크기는 일반적으로 HDFS 블록 크기와 동일합니다. 예를 들어 1GB 크기의 파일의 경우 블록 크기가 64MB 인 경우 16 개의 입력 분할이 있습니다. 그러나 분할 크기는 HDFS 블록 크기보다 작거나 더 크게 구성 할 수 있습니다. 입력 스플릿의 계산은 FileInputFormat을 사용하여 수행됩니다. 이러한 입력 스플릿 각각에 대해 맵 태스크를 시작해야합니다.

    지도 축소 작업 (또는 돼지 / 하이브 작업)을 제출하면 Hadoop은 먼저 입력 분할을 계산하며 각 입력 분할 크기는 일반적으로 HDFS 블록 크기와 동일합니다. 예를 들어 1GB 크기의 파일의 경우 블록 크기가 64MB 인 경우 16 개의 입력 분할이 있습니다. 그러나 분할 크기는 HDFS 블록 크기보다 작거나 더 크게 구성 할 수 있습니다. 입력 스플릿의 계산은 FileInputFormat을 사용하여 수행됩니다. 이러한 입력 스플릿 각각에 대해 맵 태스크를 시작해야합니다.

    그러나 다음 속성을 구성하여 입력 나누기의 크기를 변경할 수 있습니다.

    mapred.min.split.size: The minimum size chunk that map input should be split into.
    mapred.max.split.size: The largest valid size inbytes for a file split. 
    dfs.block.size: The default block size for new files.
    

    입력 분할 수식은 다음과 같습니다.

    Math.max("mapred.min.split.size", Math.min("mapred.max.split.size", blockSize));
    

    여기에서 예제를 확인할 수 있습니다.

  3. from https://stackoverflow.com/questions/10719191/hadoops-input-splitting-how-does-it-work by cc-by-sa and MIT license