2015-01-25 2 views
0

현재 4 노드 멀티 클러스터에서 작업 중입니다. 누구든지 22GB 입력 파일에서 작업 할 수있는 적절한 크기의 블록을 제안 할 수 있습니까? 미리 감사드립니다. hadoop의 블록 크기

다음은 성능 결과입니다. 64M - 32 분. 128M - 19.4 분 256M - 15 분

이제는 1GB/2GB보다 훨씬 커야합니까? 그렇게하면 문제가 있는지 친절하게 설명하십시오.

편집 : 또한 , 경우 기본 블록 크기의 경우 64MB 1백28메가바이트 인 이유 20GB의 입력 파일의 블록 크기를 증가와 성능 향상? Kindly answer similar question over here

+0

이상적은 128M 또는 256M – SMA

+0

@ almasshaikh 좀 더 구체적으로 할 수 있습니까? 결과는 64M, 128M 및 256M 경우 어떻게 달라질까요? 감사합니다 – re3el

답변

1

이 파일을 처리하는 데 사용할 분할 크기는 무엇입니까? 기본 블록 크기보다 약간 큰 경우 블록 크기를 분할 크기 값으로 변경하는 것이 좋습니다. 이렇게하면 매퍼의 데이터 지역성이 높아져 작업 처리량이 향상됩니다.

분할 크기는 입력 형식으로 계산됩니다.

protected long computeSplitSize(long blockSize, long minSize, 
            long maxSize) { 
    return Math.max(minSize, Math.min(maxSize, blockSize)); 
    } 
MINSIZE maxsize와는

mapreduce.input.fileinputformat.split.minsize

mapreduce.input.fileinputformat.split.maxsize

를 아래의 구성 파라미터를 사용하여 조작 될 수

자세한 데이터 흐름은 FileInputFormat 클래스에서 찾을 수 있습니다.

+0

분할 크기를 찾는 방법? 또한 그것이 무엇을 설명 할 수 있습니까? 미안하지만 질문이 너무 분명한 경우. – re3el

+0

분할 크기는 단일 맵퍼에서 처리해야하는 데이터 양을 결정하기 위해 맵 축소 처리 중에 계산 된 논리적 분할입니다. 입력 형식은 분할 크기를 계산하고 각 매퍼가 처리 할 분할을 생성합니다. 기본적으로 분할 크기는 블록 크기가됩니다. -> computeSplitSize (blockSize, minSize, maxSize) – Makubex

+0

내 프로그램의 분할 크기는 어떻게 계산해야합니까? – re3el

0

회선 당 처리량은 얼마나됩니까? 단순히 "grep"이라면 블록 크기를 최대 1GB까지 늘릴 수 있습니다. 단순히 그것을 시험해 보는 것은 어떨까요? 실적 수치는 이미 블록 크기를 늘리는 긍정적 인 결과를 나타냅니다.

더 작은 블록 크기에 대한 고려 사항은 각 줄에 중요한 보조 처리가 필요한 경우입니다. 그러나 그것은 이미 확립 된 성과 추세를 고려할 때 의심 스럽습니다.