[HADOOP] Hadoop 입력 분할 크기 대 블록 크기
HADOOPHadoop 입력 분할 크기 대 블록 크기
내가 입력 나누기에 대해 명확하게 설명하는 hadoop 최종 가이드를 살펴 보겠습니다. 그것은 같이 간다.
과
1) 64MB 블록이 노드 A에 있고 2 개의 다른 노드 (B, C) 사이에서 복제되고 map-reduce 프로그램의 입력 분할 크기가 64MB라고 가정하면이 분할은 노드 A에 대한 위치 만 갖습니까? 아니면 3 개의 노드 A, B, C 모두를위한 위치를 가질 것인가?
2) 데이터가 3 개 노드 모두에 대해 로컬이므로 프레임 워크가 특정 노드에서 실행할 냅 (maptask)을 결정 (선택)하는 방식은 무엇입니까?
3) 입력 분할 크기가 블록 크기보다 크거나 작은 경우 어떻게 처리됩니까?
해결법
-
==============================
1.
희망이 도움이됩니다.
-
==============================
2.블록은 데이터의 물리적 표현입니다. Split은 Block에있는 데이터의 논리적 표현입니다.
블록은 데이터의 물리적 표현입니다. Split은 Block에있는 데이터의 논리적 표현입니다.
블록 및 분할 크기는 속성에서 변경할 수 있습니다.
맵은 블록에서 스플릿을 통해 데이터를 읽습니다. 즉, 블록과 매퍼간에 브로커 역할을합니다.
두 블록을 고려하십시오.
블록 1
블록 2
이제 map은 블록 1을 aa에서부터 JJ까지 읽으며 블록 2를 읽는 법을 모릅니다. 즉 블록은 다른 정보 블록을 처리하는 방법을 모릅니다. 여기에서 Split은 블록 1과 블록 2의 논리적 그룹을 단일 블록으로 구성한 다음 inputformat 및 레코드 판독기를 사용하여 오프셋 (키)과 행 (값)을 형성하고 추가 처리를 처리하기 위해 맵을 보냅니다.
리소스가 제한되어 있고 맵의 수를 제한하려면 분할 크기를 늘릴 수 있습니다. 예 : 640MB의 10 개의 블록, 즉 64MB의 각 블록과 리소스가 제한되어있는 경우 분할 크기를 128MB로 언급 한 다음 128MB의 논리적 그룹이 형성되고 128MB의 크기로 5 개의 맵만 실행됩니다.
분할 크기를 false로 지정하면 전체 파일이 하나의 입력 분할을 형성하고 하나의 맵으로 처리되므로 파일이 클 때 처리하는 데 더 많은 시간이 걸립니다.
-
==============================
3.HDFS 블록은 입력 데이터의 물리적 인 부분 인 반면 입력 분할은 레코드의 논리적 구분입니다. 똑같은 경우 매우 효율적이지만 실제로는 완벽하게 정렬되지 않습니다. 레코드는 블록 경계를 넘을 수 있습니다. Hadoop은 모든 레코드의 처리를 보장합니다. 특정 분할을 처리하는 기계는 "메인"블록 이외의 블록에서 레코드의 프래그먼트를 가져올 수 있으며 원격으로 상주 할 수 있습니다. 레코드 조각을 가져 오는 통신 비용은 비교적 드물기 때문에 중요하지 않습니다.
HDFS 블록은 입력 데이터의 물리적 인 부분 인 반면 입력 분할은 레코드의 논리적 구분입니다. 똑같은 경우 매우 효율적이지만 실제로는 완벽하게 정렬되지 않습니다. 레코드는 블록 경계를 넘을 수 있습니다. Hadoop은 모든 레코드의 처리를 보장합니다. 특정 분할을 처리하는 기계는 "메인"블록 이외의 블록에서 레코드의 프래그먼트를 가져올 수 있으며 원격으로 상주 할 수 있습니다. 레코드 조각을 가져 오는 통신 비용은 비교적 드물기 때문에 중요하지 않습니다.
-
==============================
4.1)과 2)까지 : 100 % 확신 할 수는 없지만 작업을 완료 할 수없는 경우 - 입력 된 스플릿에 문제가있는 경우를 포함하여 어떤 이유로 든 종료되고 다른 장소가 시작됩니다. maptask는 파일 정보가있는 하나의 분할을 가져옵니다 (입력 분할 객체에서 어떤 정보가 보유되어 있는지 보려면 로컬 클러스터에 대해 디버깅을하면됩니다). 단 하나의 위치 일뿐입니다.
1)과 2)까지 : 100 % 확신 할 수는 없지만 작업을 완료 할 수없는 경우 - 입력 된 스플릿에 문제가있는 경우를 포함하여 어떤 이유로 든 종료되고 다른 장소가 시작됩니다. maptask는 파일 정보가있는 하나의 분할을 가져옵니다 (입력 분할 객체에서 어떤 정보가 보유되어 있는지 보려면 로컬 클러스터에 대해 디버깅을하면됩니다). 단 하나의 위치 일뿐입니다.
~ 3) : 파일 형식이 분할 가능한 경우 Hadoop은 파일을 "inputSplit"크기 청크로 잘라냅니다. 그렇지 않다면 파일 크기에 관계없이 파일 당 하나의 작업입니다. minimum-input-split 값을 변경하면 각 입력 파일이 블록 크기로 나뉘어지면 생성되는 매퍼 작업이 너무 많지 않게 할 수 있지만 일부 마법을 사용하면 입력을 결합 할 수 있습니다 결합 자 클래스 (나는 그것이 그것이라고 불리는 것이라고 생각한다).
-
==============================
5.Hadoop 프레임 워크의 강점은 데이터의 지역성입니다. 클라이언트가 hdfs 데이터를 요청할 때마다 프레임 워크는 항상 I / O 활용을 거의 찾지 않는 지역을 확인합니다.
Hadoop 프레임 워크의 강점은 데이터의 지역성입니다. 클라이언트가 hdfs 데이터를 요청할 때마다 프레임 워크는 항상 I / O 활용을 거의 찾지 않는 지역을 확인합니다.
-
==============================
6.입력 분할은 각 매퍼에 공급되는 논리적 데이터 단위입니다. 데이터는 유효한 레코드로 분할됩니다. 입력 스플릿은 블록 주소와 바이트 오프셋을 포함합니다.
입력 분할은 각 매퍼에 공급되는 논리적 데이터 단위입니다. 데이터는 유효한 레코드로 분할됩니다. 입력 스플릿은 블록 주소와 바이트 오프셋을 포함합니다.
예를 들어 네 블록에 걸쳐있는 텍스트 파일이 있다고 가정 해 봅시다.
a b c d e f g h 난 케이 케이 m n o o p
block1 : a b c d e 블록 2 : f g h i j block3 : k l m n o block4 : p
Split1 : a b c d e f h Split2 : i j k l m n o o p
파일의 경계 (레코드)가 인라인되어 있음을 관찰하십시오. 이제 각 분할은 매퍼로 보내집니다.
입력 분할 크기가 블록 크기보다 작 으면 더 많은 수의 매퍼를 사용하게됩니다.
희망이 도움이됩니다.
-
==============================
7.HDFS 블록 크기는 정확한 숫자이지만 입력 분할 크기는 Google의 구성된 숫자와 약간 다를 수있는 데이터 로직
HDFS 블록 크기는 정확한 숫자이지만 입력 분할 크기는 Google의 구성된 숫자와 약간 다를 수있는 데이터 로직
from https://stackoverflow.com/questions/17727468/hadoop-input-split-size-vs-block-size by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] hadoop : 0 감속기와 신원 감속기의 차이점은 무엇입니까? (0) | 2019.05.30 |
---|---|
[HADOOP] Hadoop의 투기 적 태스크 실행 (0) | 2019.05.30 |
[HADOOP] 하둡의 파일 분할 크기 변경 (0) | 2019.05.30 |
[HADOOP] 돼지 라틴어 : 날짜 범위에서 여러 파일로드 (디렉토리 구조의 일부) (0) | 2019.05.30 |
[HADOOP] Hadoop은 입력 분할을 어떻게 수행합니까? (0) | 2019.05.30 |