[스프링] 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를 활용하면 복잡한 하둡 작업을 효과적으로 관리하고 스케줄링할 수 있습니다.

참고 문헌: