[스프링] Oozie 워크플로우 실행 시나리오
이번 포스트에서는 스프링에서 Oozie 워크플로우를 실행하는 시나리오에 대해 알아보겠습니다.
Oozie란?
Oozie는 하둡(Hadoop) 워크플로를 스케줄링하기 위한 오픈 소스 시스템입니다. Oozie를 사용하면 사용자가 정의한 작업들을 시간 및 의존성에 따라 실행하고 관리할 수 있습니다.
스프링에서 Oozie 워크플로우 실행
1. Oozie 워크플로우 정의
먼저, Oozie 워크플로우를 정의해야 합니다. 이를 위해 .xml 파일에 워크플로우 스키마를 정의하고, 작업들에 대한 설정을 추가해야 합니다.
<workflow-app name="my_workflow" xmlns="uri:oozie:workflow:0.5">
<start to="first_task"/>
<action name="first_task">
<shell xmlns="uri:oozie:shell-action:0.3">
<exec>script.sh</exec>
<argument>arg1</argument>
</shell>
<ok to="end"/>
<error to="fail"/>
</action>
<kill name="fail">
<message>Workflow failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<end name="end"/>
</workflow-app>
2. Oozie 워크플로우 실행
원하는 작업을 수행하는 Oozie 워크플로우를 정의한 후에는 이를 실행할 수 있습니다. 스프링에서는 Oozie CLI나 Oozie REST API를 활용하여 워크플로우를 실행할 수 있습니다.
OozieClient wc = new OozieClient("http://oozie-host:11000/oozie");
Properties conf = wc.createConfiguration();
conf.setProperty("oozie.wf.application.path", "/user/oozie/workflow.xml");
String jobId = wc.run(conf);
wc.start(jobId); // 실행
결론
이상으로 스프링에서 Oozie 워크플로우를 실행하는 시나리오에 대해 알아보았습니다. Oozie를 활용하면 복잡한 하둡 작업을 효과적으로 관리하고 스케줄링할 수 있습니다.
참고 문헌:
- https://oozie.apache.org/
- https://docs.spring.io/spring-hadoop/docs/1.0.x/reference/html/oozie.html