복붙노트

[HADOOP] modify hadoop-env.sh를 제외하고 hadoop에서 시스템 속성을 지정하는 방법?

HADOOP

modify hadoop-env.sh를 제외하고 hadoop에서 시스템 속성을 지정하는 방법?

hadoop 작업을 실행할 때 시스템 속성 (hadoop 속성 아님)을 설정하고 싶습니다. 시스템 속성을 설정하는 것이 쉽지 않은 것으로 나타났습니다. 심지어 내가 껍질에있는 속성을 설정

export HADOOP_OPTS="$HADOOP_OPTS:-Dproperty=value"

아직 작동하지 않습니다. hadoop 명령 줄의 "-D"옵션은 시스템 속성이 아닌 Configuration 전용입니다. 따라서 "-D"옵션도 작동하지 않습니다.

누구든지 아이디어가 있습니까? 감사

해결법

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

    1.명령 줄을 통해 작업을 시작할 때 단순히 -Dfoo.bar = example in-line을 사용하면 안됩니다.

    명령 줄을 통해 작업을 시작할 때 단순히 -Dfoo.bar = example in-line을 사용하면 안됩니다.

    hadoop jar example.jar com.example.ExampleTool -Dfoo.bar = 예제 인자

    코드에서 속성을 가져 오려면 conf.get ( "foo.bar");

    이제 시스템 속성으로 설정할 필요가 있다면 Hadoop config에서 얻은 값을 사용하여 코드 시작 부분에 설정할 수 있습니다.

    String property = conf.get("foo.bar");
    System.setProperty("foo.bar", property);
    
  2. ==============================

    2.hadoop 스크립트는 다음과 같이 java 클래스를 호출합니다.

    hadoop 스크립트는 다음과 같이 java 클래스를 호출합니다.

    exec "$JAVA" $JAVA_HEAP_MAX $HADOOP_OPTS $CLASS "$@"
    

    그래서 우리는 다음과 같이 시스템 전체 속성을 전달할 수 있습니다.

    export HADOOP_OPTS="$HADOOP_OPTS -Dfoo=bar"
    
  3. ==============================

    3.시스템 등록 정보와 환경 변수의 차이점과 여기에서 설정하는 방법을 확인하십시오.

    시스템 등록 정보와 환경 변수의 차이점과 여기에서 설정하는 방법을 확인하십시오.

  4. from https://stackoverflow.com/questions/15490090/how-to-specify-system-property-in-hadoop-except-modify-hadoop-env-sh by cc-by-sa and MIT license