[스프링] 스프링 프로젝트에서의 Oozie 워크플로우 배포 방법

본 블로그 포스트에서는 Oozie 워크플로우를 스프링 프로젝트에 통합하고 배포하는 방법에 대해 다루고자 합니다. Oozie는 Apache Hadoop에서 사용되는 workflow scheduling 서비스로, 데이터 처리 작업을 자동화하는 데 사용됩니다.

Oozie 워크플로우 작성

우선, Oozie 워크플로우를 작성해야 합니다. XML 기반의 Oozie 워크플로우 정의 파일을 작성한 후, Hadoop 클러스터에 업로드합니다. 각 동작(Action)은 Hadoop에서 실행될 작업을 정의합니다.

<workflow-app xmlns="uri:oozie:workflow:0.5" name="sample-wf">
    <start to="hive-node"/>
    <action name="hive-node">
        <hive xmlns="uri:oozie:hive-action:0.2">
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <configuration>
                <property>
                    <name>mapred.job.queue.name</name>
                    <value>${queueName}</value>
                </property>
            </configuration>
        </hive>
        <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>

스프링에서의 Oozie 워크플로우 통합

스프링 프로젝트에서 Oozie 워크플로우를 실행하려면 oozie-client 라이브러리를 사용하여 Oozie Client를 초기화하고 워크플로우를 제출해야 합니다.

public class OozieWorkflowLauncher {
    public static void main(String[] args) {
        OozieClient oozieClient = new OozieClient("http://oozie-server:11000/oozie");
        Properties conf = oozieClient.createConfiguration();
        conf.setProperty("nameNode", "hdfs://namenode:8020");
        conf.setProperty("jobTracker", "mapred://jobtracker:8021");
        conf.setProperty("queueName", "default");
        conf.setProperty("oozie.wf.application.path", "${nameNode}/user/${user.name}/workflow.xml");

        String jobId;
        try {
            jobId = oozieClient.run(conf);
            System.out.println("Oozie job submitted: " + jobId);
        } catch (OozieClientException e) {
            e.printStackTrace();
        }
    }
}

워크플로우 배포

워크플로우를 실행하기 위해 oozie.wf.application.path에 정의된 경로에 워크플로우 파일을 배포해야 합니다.

결론

본 포스트에서는 Oozie 워크플로우를 스프링 프로젝트에 통합하고 배포하는 방법에 대해 살펴보았습니다. 이를 통해 데이터 처리 작업을 효과적으로 자동화할 수 있으며, 스프링과 Oozie를 함께 사용하여 더욱 효과적인 데이터 처리 작업을 구현할 수 있습니다.