2013-03-19 4 views
0

hadoop 작업을 실행할 때 시스템 속성 (hadoop 속성 아님)을 설정하고 싶습니다. 시스템 속성을 설정하는 것이 쉽지 않은 것으로 나타났습니다. 심지어 쉘에 속성을 설정했습니다.modify hadoop-env.sh를 제외하고 hadoop에서 시스템 속성을 지정하는 방법은 무엇입니까?

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

여전히 작동하지 않습니다. hadoop 명령 행의 "-D"옵션은 시스템 속성이 아닌 Configuration에만 사용됩니다. 따라서 "-D"옵션도 작동하지 않습니다.

누구나 아이디어가 있습니까? 감사합니다

+0

우리는 당신이 당신의 작업을 시작하기 위해 사용하는 명령을 볼 수 ? 'ToolRunner' 또는'GenericOptionsParser'를 사용하고 있습니까? – Quetzalcoatl

답변

5

이유는 단순히과 같이, 인라인 -Dfoo.bar=example를 사용

hadoop jar example.jar com.example.ExampleTool -Dfoo.bar=example argument

코드에서 속성에 얻기 위하여, 사용 conf.get("foo.bar");


이제 시스템 속성으로 설정해야 할 필요가있는 경우 Hadoop 구성에서 가져온 값을 사용하여 코드 시작 부분에 설정할 수 있습니다.

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

으로 설정되지 않습니다. 이유는 시스템 속성을 가져와야하는 라이브러리를 사용하고 있기 때문입니다. – zjffdu

+0

잠재적 인 솔루션에 대한 내 대답을 편집했습니다. – Quetzalcoatl

+0

고마워,이게 나를 위해 일해야한다. – zjffdu

0

시스템 속성과 환경 변수의 차이점과 설정 방법을 확인하십시오 here. 명령 줄을 통해 작업을 시작할 때

+0

-D는 구성 전용이며 시스템 속성은 – zjffdu

2

그래서이

exec "$JAVA" $JAVA_HEAP_MAX $HADOOP_OPTS $CLASS "[email protected]" 

처럼 hadoop 스크립트 호출 자바 클래스, 우리는 다음과 같이 시스템 전체의 속성을 전달할 수 있습니다

export HADOOP_OPTS="$HADOOP_OPTS -Dfoo=bar"