oozie 명령에 -config 로 넘길 property 파일. 로컬에 둔다.
jobName=Hive_Action_test
appPath=hdfs://mast1.hadoop.com:8020/user/hdfs/test_oozie
oozie.wf.application.path=${appPath}
oozie.use.system.libpath=true
oozie.use.system.libpath=true 여야 Oozie 공유 라이브러리(sharelib)의 Hive · Sqoop jar 를 쓴다.
job.properties 의 oozie.wf.application.path 가 가리키는 HDFS 경로에 workflow.xml 이 있어야 한다. Hive 작업은 hive-site.xml 도 같은 경로에 둔다.
<workflow-app xmlns="uri:oozie:workflow:0.4" name="Hive_Action_test">
<global>
<!-- JOB TRACKER, YARN -->
<job-tracker>HDFS_HOST_NAME:8032</job-tracker>
<!-- HDFS namenode info -->
<name-node>hdfs://mast1.hadoop.com:8020</name-node>
<job-xml>hive-site.xml</job-xml>
</global>
<!-- 실제 액션 -->
<start to="hive_action"/>
<action name="hive_action">
<hive xmlns="uri:oozie:hive-action:0.4">
<!-- 이 스크립트는 hdfs 에 존재해야 한다. -->
<script>test.hql</script>
</hive>
<ok to="end"/>
<error to="kill"/>
</action>
<kill name="kill">
<message>Map/Reduce failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<end name="end"/>
</workflow-app>
<job-tracker> 는 이름과 달리 YARN ResourceManager 주소(기본 8032)다. Oozie 5 스키마에서는 <resource-manager> 로도 쓸 수 있다.
test.hql. HDFS 의 워크플로 경로에 올린다.
insert into default.temp_01
values("1");
# job properties 파일에 명시된 디렉터리의 workflow xml 을 실행한다
oozie job -oozie http://OOZIE_HOSTNAME:11000/oozie -config job.properties -run
# job 을 생성만 한다. 별도로 job id 를 확인해 run 해 줘야 한다
oozie job -oozie http://OOZIE_HOSTNAME:11000/oozie -config job.properties -submit