Big Data/Apache Oozie

Oozie workflow 파라미터

Data Engineer 2017. 10. 3. 14:20

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-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