Big Data/Apache Oozie

Oozie workflow Pattern - 1

Data Engineer 2017. 9. 24. 15:06

해당 포스트는 이전한 블로그에서도 확인할 수 있습니다.

Oozie workflow pattern - 1

Oozie가 무엇인지 궁금한 분들을 Apache Oozie 알아보기라는 이전 포스트를 참고하시기 바랍니다.
일반적으로 Oozie에서 많이 사용되는 워크플로우 패턴에 대해서 알아봅시다.

순차적 액션 수행 (Point-to-Point Pattern)

가장 간단한 형태로 수행하는 워크플로우 형태가 되겠습니다. 말그대로 순차적으로 액션을 수행할 때 사용합니다. 예제를 한번 살펴볼까요?

간단한 예제입니다. 예제 워크플로우의 모습은 아래와 같습니다. 하이브를 사용하여 데이터 셋에 대한 집계를 수행한 후 스쿱을 사용하여 RDBMS로 내보내는 워크플로우입니다.


이와 같은 패턴을 Oozie의 workflow.xml로 나타내면 다음과 같습니다.

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

그러면 한번 oozie workflow.xml 파일을 한번 살펴볼까요?
상세히 알아보기 위해서 주석으로 번호를 달아났습니다. 그럼 번호별로 살펴볼게요.

  1. Global configuration
    액션마다 중복된 설정들을 global configuration을 통해 한 곳에 설정할 수 있습니다. global로 설정되는 것들은 job-xml, configuration, job-tracker, name-node 등이 있습니다.
  2. Start control node
    워크플로우의 시작 포인트입니다. 워크플로우 내에 가장 먼저 시작해야할 액션을 지정해줍니다. 여기서는 aggregate가 워크플로우에서 시작 액션입니다.
  3. Hive action
    우지에서 하이브 잡을 실행시켜줄 수 있는 하이브 액션입니다.
  4. Sqoop action
    우지에서 스쿱 잡을 실행시켜주는 스쿱 액션입니다.
  5. Kill control node
    워크플로우가 잡이 실패를 하는 경우 실행됩니다. kill node는 어떠한 에러를 발생했는지 정보를 메세지로 전달해줍니다.
  6. End control node
    End 노드는 워크플로우가 성공적으로 완료되었을 때 수행되는 마지막 플로우입니다.

Oozie action 종류

위의 예제에서 간단히 살펴봤듯이 우지에서는 다양한 액션을 지원합니다. 위의 예제에서는 하이브 액션과 스쿱 액션이 우지에서 지원하는 액션들 중 하나였습니다. 그럼 우지에서 지원하는 액션의 종류에 대해 살펴보도록 하겠습니다. 우지에서 지원하는 액션은 아래와 같습니다.

Actions
  • Map-Reduce action
    • Hadoop의 Map-Reduce job을 실행하는 액션입니다.
  • Pig action
    • Pig job을 실행하는 액션입니다.
  • Fs (HDFS) action
    • HDFS의 파일 시스템을 조작하는 액션입니다.
  • Sub-workflow action
    • child workflow 잡을 수행하는 액션입니다.
  • Java action
    • 자바 클래스의 메인 메소드를 수행하는 액션입니다.
Action Extensions
  • Email action
    • 이메일을 보내는 액션입니다.
  • Shell action
    • Shell command를 실행하는 액션입니다.
  • Hive action
    • Hive job을 실행하는 액션입니다.
  • Sqoop action
    • Sqoop job을 실행하는 액션입니다.
  • Ssh action
    • ssh를 이용하여 remote machine에 shell command를 수행합니다.
  • Distcp action
    • Hadoop의 distcp를 수행해주는 액션입니다.
  • Spark action
    • Spark job을 수행하는 액션입니다.
  • Custom action
    • 사용자가 직접 액션을 작성할 수 있습니다. 직접 Custom action을 작성하고 싶은 경우 Custom Action Nodes 문서를 참고하시기 바랍니다.

다음 포스트에서는 Oozie workflow의 fork-and-join 패턴에 대해 알아보도록 하겠습니다.

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 classpath 정의하기  (0) 2017.10.06
Oozie workflow 파라미터  (0) 2017.10.03
Oozie workflow pattern - 3  (0) 2017.10.03
Oozie workflow pattern - 2  (0) 2017.09.28
Apache Oozie 알아보기  (0) 2017.09.21