2010-12-05 3 views
2

Hadoop 0.21.0,이 주어진다면, 프레임 워크는 각 개별 맵에 상대적으로 열린 파일 디스크립터의 수를 고려하고 작업을 줄이는 데 어떤 가정을합니까? 특히, Hadoop이 작업 실행 중에 새로운 파일 설명자를 열거 나 디스크로 유출되는 하위 작업은 무엇입니까? Hadoop 0.21.0에서 열린 파일 디스크립터의 예상 사용량

(이것은 의도적으로, MultipleOutputs의 사용을 무시로 시스템이 제공하는 보증과 그것을 매우 명확 나사.)

여기 내 근거는 간단하다 : 나는 하둡 보장을 위해 쓰기 각 작업을 확인하고 싶습니다 각 매퍼 또는 감속기에 필요한 한정된 수의 필수 파일 기술자. Hadoop은 이것을 프로그래머로부터 유쾌하게 추상화합니다. 보통 서버 관리 중에 다른 신발이 떨어지면 좋을 것입니다.

원래는 클러스터 관리 측면에서 asked this question on Server Fault이었습니다. 또한 프로그래밍에 대한 책임도 있기 때문에이 질문은 여기에 똑같이 적용됩니다. 이 문제에 통찰력을 제공

+0

관련하여, Hadoop이 각 작업자에 대해 1024 개의 사용 가능한 파일 설명자를 모두 사용하는 것을 보는 것은 그리 즐겁지 않았습니다. 제한을 임시 수정으로 제기했지만 장기 프로그래밍 및 클러스터 관리 전략으로 위장한 것 같습니다. – MrGomez

+0

그리고 누구든지 스택 추적을 요청하거나 게시하기 전에 : 코드를 통해 추적하여 수집 한 가정에 대한 프레임 워크의 보증을 선호합니다. – MrGomez

답변

1

Here's a post : 당신이 MultipleOutputs 클래스를 사용할 때 더 작은 파일이 생성되기 때문에

발생합니다. 50 개의 매퍼가 있다고 가정하면 왜곡 된 데이터가 없다고 가정하면 Test1은 항상 정확히 50 개의 파일을 생성하지만 Test2는 50 ~ 1000 개의 파일 (50Mappers x 20TotalPartitionsPossible)을 생성하므로 I/O에서 성능이 저하됩니다. 내 벤치 마크에서 Test1에 대해 199 개의 출력 파일이 생성되었고 Test2에 대해 4569 개의 ​​출력 파일이 생성되었습니다.

정상적인 동작의 경우, 매퍼의 수는 열린 파일 디스크립터의 수와 정확하게 동일하다는 것을 의미합니다. MultipleOutputs은 매퍼 수와 사용 가능한 파티션 수를 곱하여이 수를 분명히 왜곡합니다. 그런 다음 Reducers는 정상적으로 진행하여 축소 작업 당 하나의 파일 (따라서 하나의 파일 설명자)을 생성합니다.

그러면 문제가 발생합니다. spill 작업 중에 대부분의 파일은 분할로 쾌적하게 마샬링되므로 각 매퍼가 열어 두었습니다. 따라서 사용 가능한 파일 설명자 문제.

는 따라서, 현재 가정, 최대 파일 설명자 제한해야 :

지도 상 : number of mappers * total partitions possible

단계 감소 : 우리가 말한대로 number of reduce operations * total partitions possible

그리고 그,이다 그.