Skip to Content
Data EngineeringOozie Hive Launcher에 Java Agent 옵션 전달하기
📊 Data Engineering2016년 11월 28일

Oozie Hive Launcher에 Java Agent 옵션 전달하기

#data-engineering#oozie#hive#hadoop#workflow

Oozie에서 Hive 작업을 실행할 때 수집용 Java Agent를 함께 사용하기 위해 남긴 workflow.xml 예시입니다. 일반적인 Hive 실행에 필요한 설정과, 당시 모니터링 연동을 위해 추가한 Launcher JVM 옵션을 구분해서 봐야 합니다.

Hive 액션 구성

아래는 당시 설정의 경로를 예시로 바꾼 형태입니다. Workflow와 Hive 액션의 XML 스키마는 0.2를 사용합니다.

xml
workflow.xml
<workflow-app xmlns="uri:oozie:workflow:0.2" name="hive-wf"> <start to="hivejob"/> <action name="hivejob"> <hive xmlns="uri:oozie:hive-action:0.2"> <job-tracker>${jobTracker}</job-tracker> <name-node>${nameNode}</name-node> <job-xml>hive-site.xml</job-xml> <configuration> <property> <name>oozie.launcher.mapreduce.map.java.opts</name> <value>-javaagent:/opt/monitoring/hive-agent.jar</value> </property> </configuration> <script>run.sql</script> </hive> <ok to="end"/> <error to="fail"/> </action> <kill name="fail"> <message>Hive failed: ${wf:errorMessage(wf:lastErrorNode())}</message> </kill> <end name="end"/> </workflow-app>

jobTracker와 nameNode, hive-site.xml, run.sql은 실제 환경에 맞게 준비해야 합니다. Hive 액션 문서 에는 설정 파일과 inline configuration의 적용 방식이 정리돼 있습니다.

Launcher JVM 옵션

수집 연동을 위해 추가한 부분은 oozie.launcher.mapreduce.map.java.opts입니다. -javaagent를 전달해 Hive 액션을 실행하는 Launcher JVM에서 에이전트를 로드하도록 했습니다.

이 설정을 모든 MapReduce 태스크 JVM에 적용하는 옵션과 혼동하면 안 됩니다. 당시 수집기가 필요한 실행 위치에 붙어 있는지 확인해야 합니다. 에이전트를 쓰지 않는 일반 Hive 작업에 이 경로가 필수인 것도 아닙니다.

예시에 사용한 경로는 Launcher가 실행되는 노드에서 접근할 수 있어야 합니다. Oozie 서버에 파일이 있다는 이유만으로 실행 노드에서도 찾을 수 있는 것은 아닙니다.

공유 라이브러리 경로 확인

당시 설정에는 oozie.use.system.libpath와 특정 날짜의 Hive sharelib 경로도 있었습니다. sharelib 경로는 클러스터에 설치된 라이브러리에 따라 달라지므로 이전 환경의 경로를 그대로 복사하지 않아야 합니다.

작업이 실패할 때는 Hive 액션 로그와 Launcher 로그를 보고, 에이전트 로드 오류인지 Hive 설정·스크립트 실행 오류인지 나눠 확인할 수 있습니다. Oozie는 현재 종료된 프로젝트이므로 이 글은 기존 환경의 설정을 읽는 용도로 남깁니다.

Last updated on