[HADOOP] 하둡의 입력 분할 - 어떻게 작동하나요?
HADOOP하둡의 입력 분할 - 어떻게 작동하나요?
나는 hadoop에 대한 간략한 것을 안다.
나는 그것이 어떻게 작동하는지 알고 싶어합니다.
정확하게 알고 싶습니다. 정확히 어떻게 입력 파일을 나누거나 나누는 지 알고 싶습니다.
사이즈면에서 똑같은 덩어리로 나눕니 까?
또는 구성 가능한 것입니다.
나는이 지위를 통과했지만 이해할 수 없었다.
해결법
-
==============================
1.이것은 대부분의 파일 기반 형식이 FileInputFormat 기본 클래스에 정의 된 InputFormat에 따라 다릅니다.
이것은 대부분의 파일 기반 형식이 FileInputFormat 기본 클래스에 정의 된 InputFormat에 따라 다릅니다.
hadoop이 하나의 파일을 어떻게 하나의 분할로 처리할지 또는 파일을 여러 개의 분할로 나누는지를 나타내는 많은 설정 가능한 옵션이 있습니다 :
더 많이 알고 싶고 소스 코드를보고 싶다면 FileInputFormat의 getSplits () 메소드를 확인하십시오 (새 API와 이전 API는 모두 동일한 메소드를 갖지만 다소 차이가있을 수 있음).
-
==============================
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));
여기에서 예제를 확인할 수 있습니다.
from https://stackoverflow.com/questions/10719191/hadoops-input-splitting-how-does-it-work by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] Hadoop 2.2.0 jobtracker가 시작되지 않습니다. (0) | 2019.06.27 |
---|---|
[HADOOP] 슬레이브 머신의 DiskErrorException - Hadoop multinode (0) | 2019.06.27 |
[HADOOP] Hadoop에서 Java 객체를 직렬화하는 방법은 무엇입니까? (0) | 2019.06.27 |
[HADOOP] 모든 쿼리에 대해 빈 결과 집합을 반환하는 하이브 테이블 (0) | 2019.06.27 |
[HADOOP] Spark를 사용하여 디렉토리에서 여러 파일 읽기 (0) | 2019.06.27 |