2011-02-02 5 views

답변

9

작업을 사용하면 작업 구성 mapred.job.reuse.jvm.num.tasks를 지정하여 작업 JVM을 다시 사용할 수 있습니다. 값이 1 (기본값)이면 JVM을 재사용하지 않습니다 (즉, JVM 당 1 개의 작업). -1이면 JVM이 (동일한 작업의) 실행할 수있는 작업 수에 제한이 없습니다. api를 사용하여 1보다 큰 값을 지정할 수도 있습니다. $HADOOP_HOME/conf/mapred-site.xml에서

+1

감사합니다, 하나 개 더 질문이 있습니다. 이러한 작업도 일부 클래스 로더를 공유하므로 모든 정적 리소스가 한 번만로드됩니까? (또는 바람둥이처럼 작동하여 JVM을 공유 할 이유가 거의 없습니다 ...) – yura

+1

작업 완료 후 JVM이 지워집니다. 이 매개 변수는 jvm 인스턴스화가 매우 비싸기 때문에 "장기 실행"이 아닌 작업에 더 나은 런타임 만 제공합니다. 작업 인스턴스에 대한 모든 자원을 공유 할 수 없습니다. –

4

#은 제한 없음에 대한 -1에 JVM (기본값은 1입니다) 재사용하는 횟수를 지정하는 숫자로 설정하거나 설정할 수 있습니다

<property> 
    <name>mapred.job.reuse.jvm.num.tasks</name> 
    <value>#</value> 
</property> 

추적 속성을 추가 재사용 량.

0

여러 가지 맵 작업 (Hadoop)이 정적 데이터 구조를 공유하는 가장 쉬운 방법은 없습니다.

이것은 실제로 현재 Map Reduce 모델의 알려진 문제점입니다. 현재 구현이 맵 작업에서 정적 데이터를 공유하지 않는 이유는 Hadoop이 매우 안정적으로 설계 되었기 때문입니다. 따라서 작업이 실패하면 자체 JVM 만 충돌합니다. 다른 JVM의 실행에는 영향을 미치지 않습니다.

현재 여러 코어에 걸쳐 단일 JVM의 작업을 배포 할 수있는 프로토 타입을 작성 중입니다. 본질적으로 멀티 코어를 사용하려면 하나의 JVM 만 있으면됩니다. 이 방법을 사용하면 CPU 사용 비용을 들이지 않고도 메모리 데이터 구조의 중복을 줄일 수 있습니다. 다음 단계는 하나의 JVM 내에서 여러 맵 작업을 실행할 수있는 Hadoop 버전을 개발하는 것입니다.이 작업은 사용자가 원하는 작업입니다.

여기에 흥미로운 게시물 https://issues.apache.org/jira/browse/MAPREDUCE-2123

관련 문제