Oozie
Server-based Workflow Engine인 Oozie를 정리 합니다.
- 홈페이지 : http://oozie.apache.org/
- 다운로드 : http://www.apache.org/dyn/closer.cgi/oozie/
- 라이선스 : Apache 2.0
- 플랫폼 : Java
Oozie 개요
- Workflow와 Scheduler 기능 제공
CentOS에서 Oozie 설치
사전 준비 사항
- Hive 0.11.0
- Pig 0.11.1
- Hadoop 1.1.2 (HDFS, MapReduce)
- Maven 3.0.5
- Ant 1.7.1
- Java 1.7.0_19
cd /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/lib cp /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/lib/tools.jar . cd /usr/lib/jvm/jre/bin ln -s /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/bin/javadoc javadoc
- CentOS 6.4, 64 bits
- Oozie에서 사용할 database와 DB user를 생성 합니다.
- Database : oozie, User : oozie
- MySQL connector를 다운로드 합니다.
wget http://cdn.mysql.com/Downloads/Connector-J/mysql-connector-java-5.1.25.tar.gz tar zxvf mysql-connector-java-5.1.25.tar.gz //--- mysql-connector-java-5.1.25/mysql-connector-java-5.1.25-bin.jar 파일을 사용 합니다.
- Ext JS를 다운로드 합니다.
wget http://dev.sencha.com/deploy/ext-2.2.1.zip unzip ext-2.2.1.zip -d ext-2.2.1 mv ext-2.2.1 /appl/extjs // wget http://cdn.sencha.com/ext/gpl/ext-4.2.1-gpl.zip // unzip ext-4.2.1-gpl.zip
설치
- 다운로드 사이트에 oozie를 다운로드한 후 maven을 사용하여 설치를 합니다.
wget http://www.us.apache.org/dist/oozie/3.3.2/oozie-3.3.2.tar.gz tar zxvf ../oozie-3.3.2.tar.gz cd oozie-3.3.2 ./bin/mkdistro.sh -DskipTests cd distro/target tar zxvf ../oozie-3.3.2-distro.tar.gz mv oozie-3.3.2 /appl/oozie cd /appl chown -R root:root oozie
- oozie.war 파일 생성
export HADOOP_HOME=/appl/hadoop cd /appl/oozie //--- Hadoop 1.x 버전을 사용할 경우 0.20.2 를 지정하여 설정 하세요. ./bin/oozie-setup.sh -hadoop 0.20.2 $HADOOP_HOME -extjs /appl/extjs -jars "/cloudnas/install/mysql-connector-java-5.1.25-bin.jar:$HADOOP_HOME/lib/commons-configuration-1.6.jar:$HADOOP_HOME/lib/jackson-core-asl-1.8.8.jar:$HADOOP_HOME/lib/jackson-mapper-asl-1.8.8.jar"
- Database 접속 정보 설정
- vi conf/oozie-site.xml
- oozie.service.JPAService.create.db.schema : true
- oozie.service.JPAService.jdbc.driver : org.gjt.mm.mysql.Driver
- oozie.service.JPAService.jdbc.url : jdbc:mysql://localhost:3306/oozie?useUnicode=true&characterEncoding=UTF-8
- oozie.service.JPAService.jdbc.username : ???
- oozie.service.JPAService.jdbc.password : ???
- oozie.db.schema.name : oozie
- oozie.service.JPAService.pool.max.active.conn : 10
//--- JDBC Driver 복사 cp /cloudnas/install/mysql-connector-java-5.1.25-bin.jar /appl/oozie/libtools //--- Database Tables 생성 ./bin/ooziedb.sh create -sqlfile oozie.sql -run
- Apache Tomcat UTF-8 설정
- vi /appl/oozie/oozie-server/conf/server.xml
- Tomcat에서 UTF-8 설정
- 서비스 확인
./bin/oozied.sh start ps -ef | grep oozie //--- 서비스가 살아 있는지 확인 ./bin/oozie admin -oozie http://localhost:11000/oozie -status //--- "System mode: NORMAL" 메시지 확인
- http://localhost:11000/oozie 사이트로 접속하여 확인 합니다.
- 방화벽에서 11000/tcp 포트를 오픈 하여야 접속할 수 있습니다.
- vi .bashrc
export OOZIE_HOME=/appl/oozie export PATH=$PATH:$OOZIE_HOME/bin export OOZIE_URL=http://localhost:11000/oozie
Hadoop 설정
- vi /appl/hadoop/conf/hdfs-site.xml
- oozie를 실행하는 Linux User가 oozie일 경우
- root 사용자로 실행할 경우에는 아래에서 oozie 대신에 root를 기입 하세요.
<property> <name>hadoop.proxyuser.oozie.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.oozie.groups</name> <value>*</value> </property>
- MapReduce에서 사용할 라이브러리를 HDFS에 저장
tar zxvf /appl/oozie/oozie-sharelib-3.3.2.tar.gz start-all.sh //--- Hadoop가 동작하고 있지 않으면 Hadoop을 기동 합니다. hadoop dfs -mkdir share
- Sample로 동작 확인
tar zxvf /appl/oozie/oozie-examples.tar.gz vi examples/apps/streaming/job.properties nameNode=hdfs://localhost:9000 //--- /appl/hadoop/conf/core-site.xml 참조 jobTracker=localhost:9001 //--- /appl/hadoop/conf/mapred-site.xml 참조 hadoop dfs -put examples/input-data examples/input-data hadoop dfs -put examples/apps/streaming/workflow.xml examples/apps/streaming/workflow.xml hadoop dfs -put examples/apps/streaming/job.properties examples/apps/streaming/job.properties oozie job -run -config examples/apps/streaming/job.properties oozie job -info xxxxx hadoop dfs -ls examples/output-data/streaming
Oozie 매뉴얼
- Oozie Action
- Shell
- JavaAction
- DistCp
- MapReduce
- Pig
- Hive
- Oozie Job 작성
- Oozie Sample 보기
cd /appl/oozie tar zxvf oozie-examples.tar.gz //--- examples 폴더에서 Sample 확인 가능
- vi /appl/oozie/product/workflow001/job.properties
- 여기서 선언한 변수는 ${var}로 참조할 수 있습니다.
nameNode=hdfs://cloud001.cloudserver.com:9000 jobTracker=cloud001.cloudserver.com:9001 queueName=default oozie.libpath=/appl/oozie/product/workflow001/lib oozie.wf.application.path=${nameNode}/appl/oozie/product/workflow/main
- vi workflow.xml
<workflow-app xmlns="uri:oozie:workflow:0.2" name="aggregator-wf"> <start to="aggregator"/> <action name="aggregator"> ~ <ok to="query_node"/> <error to="fail"/> </action> <action name="query_node"> ~ <ok to="end"/> <error to="fail"/> </action> <kill name="fail"> <message>Map/Reduce failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message> </kill> <end name="end"/> </workflow-app>
- Oozie Job 실행
oozie job -run -config /appl/oozie/product/workflow001/job.properties oozie job -info xxxxx
- http://localhost:11000/oozie 사이트에서 작업 진행 사항 확인
- Java에서 Oozie 속성 접근
System.getProperty("oozie.action.output.properties");
- <captureOuput />
참고 문헌
- 설치