Hadoop의 내지도 작업에 메모리 정적 데이터 (RAM lucene index)를 공유하고 싶습니까? 동일한 JVM을 공유하는 여러 맵/축소 작업을위한 방법이 있습니까?하나의 JVM에서 여러 맵 작업을 실행할 수 있습니까?
답변
작업을 사용하면 작업 구성 mapred.job.reuse.jvm.num.tasks를 지정하여 작업 JVM을 다시 사용할 수 있습니다. 값이 1 (기본값)이면 JVM을 재사용하지 않습니다 (즉, JVM 당 1 개의 작업). -1이면 JVM이 (동일한 작업의) 실행할 수있는 작업 수에 제한이 없습니다. api를 사용하여 1보다 큰 값을 지정할 수도 있습니다. $HADOOP_HOME/conf/mapred-site.xml
에서
는 #
은 제한 없음에 대한 -1
에 JVM (기본값은 1
입니다) 재사용하는 횟수를 지정하는 숫자로 설정하거나 설정할 수 있습니다
<property>
<name>mapred.job.reuse.jvm.num.tasks</name>
<value>#</value>
</property>
추적 속성을 추가 재사용 량.
뻔뻔 플러그
내가 이상 여기에 무엇을 설명 달성하기 위해 JVM 재사용 정적 객체를 사용하여 이동 : http://chasebradford.wordpress.com/2011/02/05/distributed-cache-static-objects-and-fast-setup/
또 다른 옵션은 더 복잡하지만, 읽기 전용 메모리 분산 캐시를 사용하는 것입니다 맵핑 된 파일. 그렇게하면 JVM 프로세스 전체에서 리소스를 공유 할 수 있습니다.
여러 가지 맵 작업 (Hadoop)이 정적 데이터 구조를 공유하는 가장 쉬운 방법은 없습니다.
이것은 실제로 현재 Map Reduce 모델의 알려진 문제점입니다. 현재 구현이 맵 작업에서 정적 데이터를 공유하지 않는 이유는 Hadoop이 매우 안정적으로 설계 되었기 때문입니다. 따라서 작업이 실패하면 자체 JVM 만 충돌합니다. 다른 JVM의 실행에는 영향을 미치지 않습니다.
현재 여러 코어에 걸쳐 단일 JVM의 작업을 배포 할 수있는 프로토 타입을 작성 중입니다. 본질적으로 멀티 코어를 사용하려면 하나의 JVM 만 있으면됩니다. 이 방법을 사용하면 CPU 사용 비용을 들이지 않고도 메모리 데이터 구조의 중복을 줄일 수 있습니다. 다음 단계는 하나의 JVM 내에서 여러 맵 작업을 실행할 수있는 Hadoop 버전을 개발하는 것입니다.이 작업은 사용자가 원하는 작업입니다.
여기에 흥미로운 게시물 https://issues.apache.org/jira/browse/MAPREDUCE-2123
- 1. 하나의 프로그램이 여러 JVM에서 실행됩니까?
- 2. J # 코드를 JVM에서 실행할 수 있습니까
- 3. 석영으로 여러 작업을 실행할 수 없습니다.
- 4. 어떻게 병렬 작업을 파이썬에서 실행할 수 있습니까?
- 5. Pulse 스마트 펜에서 실행되는 JVM에서 Jython을 실행할 수 있습니까?
- 6. .net에서 SSIS 작업을 실행할 수 있습니까?
- 7. UI 스레드에서 quartz.net 작업을 실행할 수 있습니까?
- 8. 동일한 JVM에서 여러 디스플레이로 렌더링 할 수 있습니까?
- 9. 여러 Java 응용 프로그램을 동일한 VM에서 실행할 수 있습니까?
- 10. 스레드를 여러 번 실행할 수 있습니까?
- 11. 동시에 여러 앱을 Android에서 실행할 수 있습니까?
- 12. 하나의 루프에서이 작업을 수행 할 수 있습니까?
- 13. 다른 하나의 작업을 Rakefile에서 사용할 수 있습니까?
- 14. 하나의 쿼리에서이 작업을 수행 할 수 있습니까?
- 15. 하나의 쿼리로이 작업을 수행 할 수 있습니까?
- 16. 하나의 명령으로이 작업을 수행 할 수 있습니까?
- 17. Clojure의 STM 모델을 여러 JVM에서 사용할 수 있습니까?
- 18. struts2에서 하나의 요청으로 여러 작업을 호출하는 방법
- 19. 여러 응용 프로그램에서 하나의 작업을 재사용합니다.
- 20. MS Access에서 여러 쿼리를 실행할 수 있습니까?
- 21. Perl - 여러 컴퓨터에서 스레드를 실행할 수 있습니까?
- 22. iPhone에서 동시에 여러 앱을 실행할 수 있습니까?
- 23. 한 작업을 실행할 수 있지만 다른 작업을 실행할 수 없도록하는 방법은 무엇입니까?
- 24. gradle : "실행할 작업을 결정할 수 없습니다."
- 25. 종속성 트리에서 어떤 작업을 병렬로 실행할 수 있습니까?
- 26. 웹 응용 프로그램에서 cron 작업을 실행할 수 있습니까?
- 27. SSIS가 특정 순서로 작업을 실행할 수 있습니까? 필요
- 28. SQL Server Compact 4에서 여러 문을 실행할 수 있습니까?
- 29. 여러 테스트 클래스에서 junit 테스트 세트를 어떻게 실행할 수 있습니까?
- 30. 하나의 서버에서 두 개의 SharePoint 인스턴스를 실행할 수 있습니까?
감사합니다, 하나 개 더 질문이 있습니다. 이러한 작업도 일부 클래스 로더를 공유하므로 모든 정적 리소스가 한 번만로드됩니까? (또는 바람둥이처럼 작동하여 JVM을 공유 할 이유가 거의 없습니다 ...) – yura
작업 완료 후 JVM이 지워집니다. 이 매개 변수는 jvm 인스턴스화가 매우 비싸기 때문에 "장기 실행"이 아닌 작업에 더 나은 런타임 만 제공합니다. 작업 인스턴스에 대한 모든 자원을 공유 할 수 없습니다. –