복붙노트

[HADOOP] 하나의 JVM에서 여러 맵 작업을 실행할 수 있습니까?

HADOOP

하나의 JVM에서 여러 맵 작업을 실행할 수 있습니까?

Hadoop의 맵 작업에 메모리 정적 데이터 (RAM lucene 인덱스)를 크게 공유하고 싶습니다. 같은 JVM을 공유하는 여러 맵 / 축소 작업을위한 방법이 있습니까?

해결법

  1. ==============================

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

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

  2. ==============================

    2.$ HADOOP_HOME / conf / mapred-site.xml에 follow 속성을 추가합니다.

    $ HADOOP_HOME / conf / mapred-site.xml에 follow 속성을 추가합니다.

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

    #은 JVM이 재사용되는 횟수 (기본값은 1)를 지정하는 숫자로 설정되거나 재사용 량에 제한이 없으면 -1로 설정 될 수 있습니다.

  3. ==============================

    3.뻔뻔한 플러그

    뻔뻔한 플러그

    JVM 재사용으로 정적 객체를 사용하여 여기서 설명한 내용을 수행합니다. http://chasebradford.wordpress.com/2011/02/05/distributed-cache-static-objects-and-fast-setup/

    또 다른 옵션은 더 복잡하지만 읽기 전용 메모리 매핑 파일이있는 분산 캐시를 사용하는 것입니다. 그렇게하면 JVM 프로세스 전체에서 리소스를 공유 할 수 있습니다.

  4. ==============================

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

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

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

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

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

  5. from https://stackoverflow.com/questions/4877691/is-it-possible-to-run-several-map-task-in-one-jvm by cc-by-sa and MIT license