Oozie Parameterization of Workflows
Oozie에서 workflow 또는 coordinator에서 파라미터를 변수로 설정한 뒤, 워크플로우나 코디네이터를 실행할 때 이 파라미터를 직접 사용할 수 있습니다. 즉, workflow.xml 파일이나 coordinator.xml 파일을 편집하지 않고서도 값을 변경하여 실행할 수 있으며, 다시 배포하지 않아도 파라미터를 통해 다른 형태의 워크플로우나 코디네이터를 실행할 수 있는 것이죠. 그러면 파라미터를 설정하는 방법에 대해 알아보도록 하겠습니다.
Parameter 설정 방법
- config-defaults.xml에 설정하기
- config-defaults.xml 파일을 생성하여 속성 값(property values)를 설정하여 파라미터를 설정할 수 있습니다.
- 해당 파일은 workflow.xml 파일이 존재하는 HDFS 내에 같은 디렉토리에 위치해야 합니다.
- config-defaults.xml 파일은 아래와 같이 정의할 수 있습니다.
<!-- Default values for the workflow job parameters --> <configuration> <property> <name>jobTracker</name> <value>root:8021</value> </property> <property> <name>nameNode</name> <value>hdfs://ubuntu:8020</value> </property> <property> <name>queueName</name> <value>default</value> </property> </configuration>
- job configuration file
- '.xml' 파일이나 '.properties' 파일
- workflow을 시작할 때, -config 커맨드 라인 옵션을 사용하여 파일을 넘겨줄 수 있습니다.
- Hadoop XML configuration 파일도 가능합니다.
- job.properties 파일의 에제는 아래와 같습니다.
# proprties nameNode = hdfs://rootname jobTracker = xyz.com:8088 database = database_name
- java -D option
- java -D 옵션은 시스템의 프로퍼티 값을 설정하는 것으로 Oozie에서 파라미터로 사용가능 합니다.
- -D <property=value> 구문을 사용합니다.
- 아래의 예처럼 명령어에서 -D 옵션을 통해서 test=option이라는 파라미터를 전달할 수 있습니다.
${OOZIE_HOME}/bin/oozie -Dtest=option job -oozie ${OOZIE_URL} -config /home/oozie/{application_name}.properties -run
- global configuration
- workflow에서 공통적으로 사용할 값들을 워크플로우 시작 부분이
섹션으로 저장하여 파라미터를 사용할 수 있습니다. global 섹션을 사용하는 방법 아래의 코드와 같습니다.
- workflow에서 공통적으로 사용할 값들을 워크플로우 시작 부분이
<workflow-app xmlns="uri:oozie:workflow:0.4" name="wf-name"> <global> <job-tracker>${job-tracker}</job-tracker> <name-node>${name-node}</name-node> <job-xml>job1.xml</job-xml> <configuration> <property> <name>mapred.job.queue.name</name> <value>${queueName}</value> </property> </configuration> </global> ...
이러한 파라미터들을 JSP Expression Language로 사용할 수 있습니다. 예를 들어 위에서 정의한 job-tracker의 경우 실제 값을 접근해서 사용하기 위해서는 ${job-tracker} 또는 ${wf:conf('job-tracker')}로 워크플로우 내에서 접근할 수 있습니다. 파라미터가 자바 프로퍼티가 아닌 경우 workflow expresstion language function인 뒤에 방법을 통해서만 접근이 가능합니다.
우지에서는 위와 같이 다양한 파라미터 설정을 통하여 변수를 사용할 수 있습니다. 동일한 워크플로우에서 파라미터 설정을 바꾸어 서로 다른 클러스터에 실행시키거나 서로 다른 데이터베이스 테이블에 저장하도록 할 수 있습니다.
references
- Apache Oozie
- Mark Grover,Ted Malaska,Jonathan Seidman,Gwen Shapira. (2015). Hadoop Application Architectures: Designing Real-World Big Data Applications, O'Reilly Media, Inc.
'Big Data > Apache Oozie' 카테고리의 다른 글
예제로 알아보는 Oozie Coordinator - 1 (0) | 2017.10.09 |
---|---|
Oozie classpath 정의하기 (0) | 2017.10.06 |
Oozie workflow pattern - 3 (0) | 2017.10.03 |
Oozie workflow pattern - 2 (0) | 2017.09.28 |
Oozie workflow Pattern - 1 (0) | 2017.09.24 |