2011-11-16 3 views
0

하둡 작업이 10 건 정도 있습니다.하둡 작업 구성 파일 지정

-conf /path/on/my/local/system/start-conf.xml 
-conf /path/on/my/local/system/job-1-conf.xml 
-conf /path/on/my/local/system/job-2-conf.xml 
-conf /path/on/my/local/system/job-i-conf.xml 
... 
-conf /path/on/my/local/system/job-10-conf.xml 

하는의 내가의 내가이 내 작업을 실행하는 가정하자 "com.my.project.RunClass"라는 작업을 실행하는 데 사용되는 클래스가 있다고 가정하자 : 나는 예를 들어 이러한 작업을 구성 XML 파일의 순서를 가지고 명령

hadoop jar /path/to/project.jar com.my.project.RunClass -conf /path/on/my/local/system/start-conf.xml 

나는 세그먼트를 대체하고 싶습니다 "/ 경로// 내/지역/시스템"예를 들어 어떤 자리에 $ {root.conf.dir}, 내가 뭔가 작업을 실행 할 수 있도록 like :

hadoop jar /path/to/project.jar com.my.project.RunClass -conf ${root.conf.dir}/job-1-conf.xml -Droot.conf.dir=/path/on/my/local/system 

Hadoop의 모든 버전에서 가능합니까? Cloudera 배포판을 사용하고 있으며 매번 실패하는 것처럼 보입니다.

+1

예외는 무엇입니까? –

+0

Hadoop 예외는 없었습니다. 자동으로 계속 진행되며 비즈니스 코드에서 속성을 놓친 경우 비즈니스 예외가 발생합니다. – Zec

답변

1

bash 4. *에 대해서는 잘 모르지만, 이전의 bashes는 '.'가있는 .vars 이름을 지원하지 않습니다.

내가이 도움이 되었으면 좋겠

root_conf_dir="/path/on/my/local/system" 
hadoop jar /path/to/project.jar com.my.project.RunClass \ 
    -conf "${root_conf_dir}"/job-1-conf.xml \ 
    -Droot.conf.dir="${root_conf_dir}" 

을보십시오.

+0

"실제로."문제가있는 것으로 판명되었습니다. CentOS linux (GNU bash, 버전 3.2.25 (1) -release (x86_64-redhat-linux-gnu) 버전)에서 "$"를 이스케이프 처리하지 않았습니다. – Zec

관련 문제