KEEP GOING

우지 워크플로우(woozie w/f)란? 본문

bigdata/hadoop

우지 워크플로우(woozie w/f)란?

jmHan 2022. 9. 22. 13:50
반응형

우지의 워크플로는 action 노드와 control 노드로 구성된다.

action 노드란 각각의 실제 작업단위(workflow task)를 말하며 control 노드는 여러 action들이 어떤 조건에 의해 어떤 순서로 진행될 것인지를 지정한다.

 

유의할 것은 action 노드에 의해 실시되는 모든 작업(computation task)은 기본적으로 하둡의 맵리듀스 프레임워크 속에서 진행되므로 실제 작업은 우지와는 별개의 것으로 수행된다는 점이다.

 

즉 우지의 워크플로 action은 원격 시스템에서의 작업(job) 형태로 수행되고, 작업이 완료되면 해당 원격시스템은 우지를 호출(callback)해 그 작업이 완료됐음을 알려준다.

우지는 이러한 작업완료 통보를 받은 후 지정돼있던 다음 작업을 진행하도록 조치한다.

우지는 callback 또는 polling 두 가지 방식으로 이들 작업 진행상태를 파악한다.

예컨대 특정 작업이 완료됐다면, 우지는 HTTP callback을 통해 클라이언트에게 완료 상태(workflow status)을 통보한다.

 

ACTION 노드

action 노드에는 다음과 같은 것들이 포함된다.

 

  • 하둡 맵리듀스 작업 수행
  • 하둡 파일시스템 (HDFS)으로 파일 이동
  • Pig 프로그램 수행
  • Java 프로그램 수행
  • Sqoop를 이용해 데이터를 import
  • 기타 각종의 sub-workflow와 custom Java 코드

CONTROL 노드

control 노드에는 다음과 같은 것들이 있다.

 

  • start 노드: 워크플로 job의 시작을 지정한다.
  • end 노드: 워크플로 job의 종료를 지정한다.
  • decision 노드: 워크플로 job의 진행 중 분기를 위한 조건을 규정한다.
  • kill 노드: 진행 중인 job을 정지시킨다.
  • error 노드: 작업 흐름의 진행 중 문제가 발생했을 때 이를 오류로 규정하고 해당사항을 알려준다.

 

<workflow-app xmlns="uri:oozie:workflow:0.4" name="aggregate_and_load">
   <!-- 1 -->
   <global>
         <job-tracker>${jobTracker}</job-tracker>
         <name-node>${nameNode}</name-node>
   </global>

   <!-- 2 -->
   <start to="aggregate" />

   <!-- 3 -->
   <action name="aggregate">
      <hive xmlns="uri:oozie:hive-action:0.5">
         <job-xml>hive-site.xml</job-xml>
         <script>populate_agg_table.sql</script>
      </hive>
      <ok to="sqoop-export" />
      <error to="kill" />
   </action>

   <!-- 4 -->
   <action name="sqoop_export">
      <sqoop xmlns="uri:oozie:sqoop-action:0.4">
         <arg>export</arg>
         <arg>--connect</arg>
         <arg>jdbc:oracle:thin:@//orahost:1521/oracle</arg>
         <arg>--username</arg>
         <arg>scott</arg>
         <arg>--password</arg>
         <arg>tiger</arg>
         <arg>--table</arg>
         <arg>mytable</arg>
         <arg>--export-dir</arg>
         <arg>/etl/BI/clickstream/aggregate-preferences/output</arg>
      </sqoop>
      <ok to="end" />
      <error to="kill" />
   </action>

   <!-- 5 -->
   <kill name="kill">
      <message> Workflow failed. Error message
      [${wf:errorMessage(wf:lastErrorNode())}]</message>
   </kill>
   <!-- 6 -->
   <end name="end" />
</workflow-app>
반응형
Comments