복붙노트

[HADOOP] Amazon의 EMR을 사용하여 CLI에서 사용자 정의 jar로 맵핑 된 구성 및 Java 옵션을 지정하는 방법은 무엇입니까?

HADOOP

Amazon의 EMR을 사용하여 CLI에서 사용자 정의 jar로 맵핑 된 구성 및 Java 옵션을 지정하는 방법은 무엇입니까?

사용자 정의 jar를 사용하여 스트리밍 작업을 실행할 때 mapredduce 구성 (mapred.task.timeout, mapred.min.split.size 등)을 지정하는 방법을 알고 싶습니다.

우리는 루비 나 파이썬 같은 외부 스크립팅 언어를 사용하여 실행할 때 이러한 구성을 지정하기 위해 다음과 같은 방법을 사용할 수 있습니다.

ruby elastic-mapreduce -j --stream --step-name "mystream"- jobconf mapred.task.timeout = 0 --jobconf mapred.min.split.size = 52880 - 매퍼 s3 : // somepath / 매퍼. rb - 생성자 s3 : somepath / reducer.rb - 입력 s3 : // somepath / input - 출력 s3 : // somepath / output

나는 다음과 같은 방법을 시도했지만 그들 중 누구도 일하지 않았다.

또한 EMR에서 사용자 정의 jar를 사용하여 스트리밍 작업에 java 옵션을 전달하는 방법을 알고 싶습니다. hadoop에서 로컬로 실행할 때 다음과 같이 전달할 수 있습니다.

bin / hadoop jar job.jar input_path output_path -D =

해결법

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

    1.나는 당신이 일 단위로 이것을 설정하기를 원한다면,

    나는 당신이 일 단위로 이것을 설정하기를 원한다면,

    A) 커스텀 Jars를 인자로 인자로 전달하고, 직접 처리하십시오. 나는 이것이 다음과 같이 자동화 될 수 있다고 생각한다.

    public static void main(String[] args) throws Exception {
      Configuration conf = new Configuration();
      args = new GenericOptionsParser(conf, args).getRemainingArgs();
      //....
    }
    

    그런 다음이 방법으로 작업을 만듭니다 (작동하는지 확인하지 않은 경우).

     > elastic-mapreduce --jar s3://mybucket/mycode.jar \
        --args "-D,mapred.reduce.tasks=0"
        --arg s3://mybucket/input \
        --arg s3://mybucket/output
    

    GenericOptionsParser는 -D 및 -jobconf 매개 변수를 Hadoop의 작업 설정으로 자동 전송해야합니다. 세부 정보 : http://hadoop.apache.org/docs/r0.20.0/api/org/apache/hadoop/util/GenericOptionsParser.html

    B) hadoop 스트리밍 병의 경우 구성 변경을 명령에 전달하기 만하면됩니다

    > elastic-mapreduce --jobflow j-ABABABABA \
       --stream --jobconf mapred.task.timeout=600000 \
       --mapper s3://mybucket/mymapper.sh \
       --reducer s3://mybucket/myreducer.sh \
       --input s3://mybucket/input \
       --output s3://mybucket/output \
       --jobconf mapred.reduce.tasks=0
    

    세부 정보 : https://forums.aws.amazon.com/thread.jspa?threadID=43872 및 elastic-mapreduce --help

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

    2.Amazon Elastic MapReduce (Amazon EMR)와 관련하여 부트 스트랩 작업을 찾고 있습니다.

    Amazon Elastic MapReduce (Amazon EMR)와 관련하여 부트 스트랩 작업을 찾고 있습니다.

    CLI에서 사용자 정의 부트 스트랩 조치를 실행하는 섹션은 일반적인 사용 예제를 제공합니다.

    & ./elastic-mapreduce --create --stream --alive \
    --input s3n://elasticmapreduce/samples/wordcount/input \
    --mapper s3://elasticmapreduce/samples/wordcount/wordSplitter.py \
    --output s3n://myawsbucket 
    --bootstrap-action s3://elasticmapreduce/bootstrap-actions/download.sh  
    

    특히 Hadoop과 Java를 구성하기위한 별도의 부트 스트랩 작업이 있습니다.

    부트 스트랩 작업을 통해 Hadoop 설정을 지정할 수 있습니다. Hadoop 구성 : 클러스터 전체의 Hadoop 설정을 지정할 수 있습니다. 예를 들면 다음과 같습니다.

    $ ./elastic-mapreduce --create \
    --bootstrap-action s3://elasticmapreduce/bootstrap-actions/configure-hadoop \
    --args "--site-config-file,s3://myawsbucket/config.xml,-s,mapred.task.timeout=0"     
    

    부트 스트랩 작업을 통해 사용자 정의 JVM 설정을 지정할 수 있습니다. 데몬 구성 :

    제공된 예제는 힙 크기를 2048로 설정하고 Java namenode 옵션을 구성합니다.

    $ ./elastic-mapreduce –create –alive \
      --bootstrap-action s3://elasticmapreduce/bootstrap-actions/configure-daemons \
      --args --namenode-heap-size=2048,--namenode-opts=-XX:GCTimeRatio=19   
    
  3. from https://stackoverflow.com/questions/9283929/how-to-specify-mapred-configurations-java-options-with-custom-jar-in-cli-using by cc-by-sa and MIT license