보물창고/Big Data2013.04.11 23:00











hadoop oozie 3.2.0 document 필요한 부분 번역 (Basic Setup, Oozie Quick Start, Oozie Examples 하둡)

Oozie 스터디할때 번역한 내용입니다

정확한 번역이 아니니... 원문 참고하면서 보세요


oozie 트러블 슈팅

http://paranwater.tistory.com/397





oozie 3,2,0 document

http://oozie.apache.org/docs/3.2.0-incubating/index.html



Oozie, Yahoo! Workflow Engine for Hadoop


oozie v3
높은 수준의 추상화를 제공하는 서버 기반 묶음 엔진입니다

일괄 코디네이터 응용 프로그램을  설정 합니다

사용자는 시작/중지/일시중지/재개/리턴 쉽게 operational contral 묶음 수준으로 설정 조정 작업을 실행 있습니다



oozie v2 시간과 데이터 트리거를 기반으로 워크 플로우를 실행하는 전문 서버 기반의 코디네이터 엔진 입니다.

시간 데이터 가용성에 따라 워크 플로를 실행할 있습니다 (예를 들어 시간마다 실행)

( 워크 플로우를 실행하기 전에 입력 데이터가 존재하는지 기다립니다)



oozie v1 hadoop map/reduce Pig작업을 실행하는 서버기반 전문 워크 플로우 엔진입니다











Distribution Contents (배포 내용)



Oozie배포는 하나의 'tar.gz'파일로 구성되어 있습니다



Readme, license, notice & Release log files.

Oozie server: oozie-server directory.

Scripts: bin/ directory, client and server scripts.

Binaries: lib/ directory, client JAR files.

Configuration: conf/ server configuration directory.

Archives:

 

  • oozie-client-*.tar.gz : Client tools.
  • oozie.war : Oozie WAR file.
  • docs.zip : Documentation.
  • oozie-examples-*.tar.gz : Examples.
  • oozie-sharelib-*.tar.gz : Share libraries (with Streaming, Pig JARs).










Oozie Workflow Overview

http://oozie.apache.org/docs/3.2.0-incubating/DG_Overview.html



oozie hadoop map/reduce Pig작업을 실행하는 서버기반 전문 워크 플로우 엔진입니다

Oozie 자바 서블릿 - 컨테이너에서 실행하는 Java 응용 프로그램입니다.

워크 플로우는 제어 종속성에 배치 작업(하둡 map/reduce, pig job) DAG(Direct Acyclic Graph) 집합 입니다

제어 종속성은 하나의 액션에서 번째 작업이 완료 때까지 두번째 작업은 실행할 없다는 것을 의미합니다

Oozie 워크 플로우 정의는 hPDL 작성되어 있습니다.

XML 프로세스 정의 언어는 JBOSS JBPM jPDL 유사합니다



Oozie 워크 플로우 작업은 원격 시스템에서 작업을 시작합니다. (hadoop, pig)

작업이 완료 되면, 원격 시스템은 oozie 콜백하고 워크 플로우의 oozie 다음 작업 지접으로 진행해서 작업 완료를 통보합니다



Oozie 워크 플로우는 제어 흐름 노드와 작업 노드를 포함합니다.



제어 흐름 노드는 시작 워크플로우의 끝을 정의하고(노드의 start, end fail) 워크 플로우의 실행 경로를 제어할 있는 메커니즘(노드의 decision, fork join) 제공합니다



액션 노드 워크 플로우는 computation/processing 작업의 실행을 트리거하는 매커니즘입니다

oozie 다양한 작업 유형을 지원합니다

hadoop map-reduce hadoop filesystem, Pig, SSH, HTTP, eMail oozie sub-workflow.

oozie 작업의 추가 유형을 지원하도록 확장할 있습니다



oozie 워크 플로우는 매개변수화 있습니다

(워크 플로우 정의 내에서 ${inputDir} 같이 변수를 사용)

매개 변수에 대한 워크 플로우 작업 값을 제출할때 제공해야합니다

제대로 매개변수화된 경우에는 여러 동일한 워크 플로우작업을 동시에 있습니다

(, 서로 다은 출력 디렉토리를 사용)










WordCount Workflow Example


Workflow Diagram:




hPDL Workflow Definition:

<workflow-app name='wordcount-wf' xmlns="uri:oozie:workflow:0.1">
   <start to='wordcount'/>
   <action name='wordcount'>
       <map-reduce>
           <job-tracker>${jobTracker}</job-tracker>
           <name-node>${nameNode}</name-node>
           <configuration>
               <property>
                   <name>mapred.mapper.class</name>
                   <value>org.myorg.WordCount.Map</value>
               </property>
               <property>
                   <name>mapred.reducer.class</name>
                   <value>org.myorg.WordCount.Reduce</value>
               </property>
               <property>
                   <name>mapred.input.dir</name>
                   <value>${inputDir}</value>
               </property>
               <property>
                   <name>mapred.output.dir</name>
                   <value>${outputDir}</value>
               </property>
           </configuration>
       </map-reduce>
       <ok to='end'/>
       <error to='end'/>
   </action>
   <kill name='kill'>
       <message>Something went wrong: ${wf:errorCode('wordcount')}</message>
   </kill/>
   <end name='end'/>
</workflow-app>










Oozie Installation and Configuration

http://oozie.apache.org/docs/3.2.0-incubating/AG_Install.html



Basic Setup (기본 설정)

Environment Setup (환경설정)

Oozie Server Setup (oozie server 설치)

Setting Up Oozie with an Alternate Tomcat (Tomcat 함께 oozie 설정)

Database Configuration (데이터 베이스 구성)

Oozie Configuration (oozie구성)

Oozie Configuration Properties (oozie 속성 구정)

Logging Configuration (로그인 구성)

Oozie User Authentication Configuration (oozie 사용자 인증 구성)

Oozie Hadoop Authentication Configuration (oozie hadoop 인증 구성)

User ProxyUser Configuration (사용자 ProxyUser 구성)

User Authorization Configuration (사용자 인증 구성)

Oozie System ID Configuration (oozie 시스템 ID구성)

Fine Tuning an Oozie Server (세부조정 oozie서버)

Starting and Stopping Oozie (oozie 시작및 중지)

Oozie Command Line Installation (oozie 명령줄 설치)

Oozie Share Lib (oozie 공유 Lib)

Advanced/Custom Environment Settings (고급 / 맞춤 환경 설정)





--




Basic Setup

Oozie 빠른 시작의 지침을 따르십시오.




--



Environment Setup (환경 설정)



중요 :  oozie OOZIE_HOME에대한 설정값을 무시하고 자동으로 home 확인합니다



임베디드 Tomcat서버와 oozie 실행시 conf/oozie-env.sh파일은 oozie 의해 사용되는 환경변수를 구성하는데 사용할 있습니다



CATALINA_OPTS : 자바 시스템 등록 정보를 실행하는 임베디드 Tomcat에대한 설정을 변수에 지정해야 합니다. 기본값이 없습니다.



OOZIE_CONFIG_FILE : Oozie구성 파일은 Oozie구성 디렉토리에서 로드됩니다 기본값 oozie-site.xml



OOZIE_LOGS :  oozie 디렉토리를 기록합니다. 기본값은 oozie 설치된디렉토리 안의 logs/디렉토리



OOZIE_LOG4J_FILE : Oozie LOG4J구성 파일은 Oozie구성 디렉토리에서 로드 됩니다. 기본값 oozie-log4j.properties.



OOZIE_LOG4J_RELOAD : 몇초 간격으로 LOG4J구성파일을 새로고침 합니다 기본값 10



OOZIE_HTTP_PORT : Oozie서버 포트에서 실행합니다. 기본값 11000.



OOZIE_ADMIN_PORT : 관리자 포트로 oozie서버가 실행됩니다. 기본값 11001.



OOZIE_HTTP_HOSTNAME :  호스트이름으로 oozie서버가 실행됩니다 기본값 호스트 출력은 -F입니다



OOZIE_BASE_URL : oozie 콜백 작업 URL에대한 기본 URL값은 http://${OOZIE_HTTP_HOSTNAME}:${OOZIE_HTTP_PORT}/oozie 입니다



OOZIE_CHECK_OWNER : 사실 oozie설정으로 setup/start/run/stop스크립트는 oozie설치 디렉토리의 소유자와 스크립트를 호출 사용자가 일치하는지 확인합니다

기본값은 정의되지 않거나 false 해석됩니다




--



Oozie Server Setup



[oozie-setup.sh] 스크립트는 내장 Tomcat 서로 oozie실행 준비를 합니다



oozie-setup.sh 스크립트 옵션이 있습니다 :

Usage  : oozie-setup.sh <OPTIONS>"

        [-extjs EXTJS_PATH] (expanded or ZIP, to enable the Oozie webconsole)"

        [-hadoop HADOOP_VERSION HADOOP_PATH] (Hadoop version [0.20.1|0.20.2|0.20.104|0.20.200]"  and Hadoop install dir)"

        [-jars JARS_PATH] (multiple JAR path separated by ':')"

        (without options does default setup, without the Oozie webconsole)"



만약 libext/ 디렉토리가 oozie설치 디렉토리에 있는 경우

oozie-setup.sh스크립트는 libext/ 디렉토리에 있는 oozie WAR파일의 모둔 JARs 포함하고 있습니다.



만약 ExtJS ZIP파일이 libext/디렉토리에 있는 경우 oozie WAR에도 추가됩니다

ExtJS파이브러리 파일 이름은 ext-2.2.zip입니다




Setting Up Oozie with an Alternate Tomcat (oozie설정과 Tomcat 대체)



oozie 배포시 함께 제공되는 내장된 Tomcat 아닌 다른 서블릿 컨테이너와 함께 실행될 경우에만 oozie 서버를 위해 addtowar.sh스크립트를 사용합니다



addtowar.sh 스크립트는 hadoop JARs, JDBC JARs ExtJS라이브러리를 Oozie WAR파일에 추가합니다



addtowar.sh 스크립트 옵션입니다:

Usage  : addtowar <OPTIONS>

Options: -inputwar INPUT_OOZIE_WAR

         -outputwar OUTPUT_OOZIE_WAR

         [-hadoop HADOOP_VERSION HADOOP_PATH]

         [-extjs EXTJS_PATH]

         [-jars JARS_PATH] (multiple JAR path separated by ':')



원본 oozie.war 파일은 Oozie 서버 설치 디렉토리에 있습니다.



Hadoop 단지와 ExtJS 라이브러리는 Oozie oozie.war파일에 추가 실행 준비가되어 있습니다.



서블릿 컨테이너에서 oozie.war 이전 배포를 삭제합니다

(만약 톰캣을 사용하는 경우 delete = oozie.war = 톰캣의 webapps/ 디렉토리의 oozie 디렉토리)



서블릿 컨테이너의 준비된 oozie.war파일을 배포할 있습니다

Hadoop JARs ExtJS라이브라리를 포함하고 있음

Tomcat 사용하는 경우 Tomcat webapps디렉토리에 준비된 oozie.war파일을 복사합니다



중요 : Tomcat인스턴스당 하나의 oozie인스턴스를 배포할 있습니다.




--




Database Configuration



Oozie HSQL, Derby, MySQL, 오라클이나 PostgreSQL 데이터베이스와 함께 작동합니다.



기본적으로 Oozie 임베디드 Derby 사용하도록 구성되어 있습니다.



oozie번들은 HSQL 위한 JDBC 드라이버와 임베디드 Derby PostgreSQL.



HSQL 일반적으로 인메모리 데이터베이스와 모든 데이터는 매번 Oozie중지 손실로 부터 테스트 케이스에 사용됩니다



만약 Derby, MySQL, Oracle 이나 PostgreSQL 사용하는 경우 oozie데이터 베이스 스키마는 ooziedb.sh명령 도구를 사용하여 생성 있어야 합니다.



MySQL이나 Oracle 사용하는 경우 해당 JDBC드라이버 JAR파일 mut oozie libext/ 디렉토리에 복사 있으며, 경우 해당 정보는 bin/addtowar.sh또는 oozie-setup.sh스크립트 -jars옵션을 사용하여 oozie WAR파일에 추가해야 합니다



oozie에서 사용하는 SQL데이터베이스는 다음과 같은 구성 등록정보를 사용하여 구성됩니다

oozie.db.schema.name=oozie

oozie.service.JPAService.create.db.schema=false

oozie.service.JPAService.validate.db.connection=false

oozie.service.JPAService.jdbc.driver=org.apache.derby.jdbc.EmbeddedDriver

oozie.service.JPAService.jdbc.url=jdbc:derby:${oozie.data.dir}/${oozie.db.schema.name}-db;create=true

oozie.service.JPAService.jdbc.username=sa

oozie.service.JPAService.jdbc.password=

oozie.service.JPAService.pool.max.active.conn=10



참고 : oozie.db.schema.create속성이 true 설정되어 있는 경우 (기본값 false) oozie테이블 ooziedb명령줄 도구를 사용하지 않고도 자동으로 생성됩니다

속성을 true 설정하고 개발하는 것이 좋습니다.



참고 : oozie.db.schema.create 속성이 true 설정되어 있는경우 oozie.service.JPAService.validate.db.connection속성 값이 무시되고 oozie 그대로 false 설정 처리됩니다.



데이터 베이스 설정은 oozie-site.xml 설정으로하고 command line ooziedb.sh 실행해서 데이터 베이스를 생성합니다

$ bin/ooziedb.sh create -sqlfile oozie.sql -runValidate DB Connection.

DONE

Check DB schema does not exist

DONE

Check OOZIE_SYS table does not exist

DONE

Create SQL schema

DONE

DONE

Create OOZIE_SYS table

DONE

Oozie DB has been created for Oozie version '3.2.0'

The SQL commands have been written to: oozie.sql

$



참고 : MySQL 또는 Oracle 사용하는 경우 ooziedb.sh command line도구를 실행하기 전에 libext/디렉토리에 해당 JDBC드라이버 JAR파일을 복사합니다



참고 : -run 옵션 대신에 -sqlfile 사용하는 경우 모든 데이터베이스 변경 사항은 지정된 파일에 기록되고 데이터베이스가 수정되지 않습니다



만약 HDQL 사용하는 경우 HSQL 인메모리 데이터 베이스이기 때문에 ooziedb command line툴을 사용할 필요가 없습니다

oozie-site.xml에서 다음 구성 속성을 사용합니다.

oozie.db.schema.name=oozie

oozie.service.JPAService.create.db.schema=true

oozie.service.JPAService.validate.db.connection=false

oozie.service.JPAService.jdbc.driver=org.hsqldb.jdbcDriver

oozie.service.JPAService.jdbc.url=jdbc:hsqldb:mem:${oozie.db.schema.name}

oozie.service.JPAService.jdbc.username=sa

oozie.service.JPAService.jdbc.password=

oozie.service.JPAService.pool.max.active.conn=10








Oozie Configuration (oozie 구성)



기본적으로 oozie구성은 oozie’s conf/ 디렉토리에서 읽습니다

 

Oozie 설정은 3종류 파일로 구성되어 있습니다

oozie-site.xml : Oozie 서버 구성

oozie-log4j.properties : Oozie logging 구성

adminusers.txt : Oozie 관리자 사용자 목록




Oozie Configuration Properties (Oozie 구성 속성)



모든 Oozie 구성 속성과 기본 값은 oozie-default.xml 파일에 정의되어 있습니다.



Oozie 다음과 같은 순서로 구성 속성 값을 해결합니다.

자바 시스템 속성이 정의되어있는 경우, 그것은 값을 사용합니다.

Oozie 구성 파일 (= oozie-site.xml =) 속성이 포함되어있는 경우 다른, 값을 사용합니다.

아니면, oozie-default.xml 파일에 설명 기본 값을 사용합니다.



참고 : oozie conf/ 디렉토리에 있는 oozie-default.xml파일은 oozie에의한 참조 목적으로만 있습니다




Logging Configuration (로그인 구성)



기본적으로 Oozie 로그 구성은 oozie-log4j.properties 설정 파일에 정의되어 있습니다.

만약 Oozie 로그 설정 파일이 변경되면, Oozie 새로운 설정을 자동으로 다운로드 합니다.



기본적으로 oozie log oozie’s logs/ directory 기록합니다



Oozie 4 다른 파일에 기록합니다.

oozie.log : 서비스는 로그에 스트리밍 works 기록합니다

oozie-ops.log : 관리/운영에대한 모니터링 메시지

oozie-instrumentation.log : intrumentation데이터를 60초마다 구성

oozie-audit.log :  감시 메시지, 워크 플로작업이 변경될때



임베디드 Tomcat 임베디드 Derby로그 파일도 Oozie’s logs/디렉토리에 기록됩니다.




Oozie User Authentication Configuration (oozie 사용자 인증 구성)



oozie kerberos HTTP SPNEGO인증, pseudo/simple 인증과 클라이언트 연결에 대한 익명 액세스를 지원합니다



익명 액세스는 (*기본*) 사용자가 인증을 요구하지 않으며, 사용자 ID job제출 연산에 대한 job속성에서 얻은것입니다 다른 작업은 익명입니다.



Pseudo/simple 인증 사용자 요청에 사용자이름을 지정해야합니다, 이것을 묻는 요청은 쿼리문자열에 user.name매개 변수를 더하여 PseudoAuthenticator 클래스에 의해 이루어집니다

user.name매개 변수 값은 클라이언트 java 프로세스 시스템 속성 user.name에서 가져옵니다.



Kerberos HTTP SPNEGO 인증은 사용자가 Kerberos HTTP SPNEGO 인증 순서를 수행해야합니다.



만약 Pseudo/simple 또는 Kerberos HTTP SPNEGO 인증 메커니즘을 사용하는 경우, Oozie  나중에 증명 요청에 사용할수 있는 identy 인증 토큰을 HTTP쿠키를 통해 사용자에게 반환 합니다



Oozie인증을 위해 아파치 Hadoop-Auth (Java HTTP SPENGO) 라이브러리를 사용합니다. 라이브러리는 다른 인증 메커니즘을 지원하도록 확장할 있습니다



Oozie 사용자 인증은 다음과 같은 구성등록 정보를 사용하여 구성됩니다. (기본값 표시)

oozie.authentication.type=simple

oozie.authentication.token.validity=36000

oozie.authentication.signature.secret=

oozie.authentication.cookie.domain=

oozie.authentication.simple.anonymous.allowed=true

oozie.authentication.kerberos.principal=HTTP/localhost@${local.realm}

oozie.authentication.kerberos.keytab=${oozie.service.HadoopAccessorService.keytab.file}



유형은 Oozie HTTP 끝점에 사용되는 인증을 정의해 지원되는 값입니다

simple | kerberos | #AUTHENTICATION_HANDLER_CLASSNAME#.



token.validity 갱신을 위한 인증토큰의 유효시간을 나타냅니다



signature.secret 인증 토큰을 서명을위한 서명 비밀번호입니다. 설정하지 않으면 랜덤 secret 시작 시간에 생성됩니다.



oozie.authentication.cookie.domain 인증 토큰을 저장하는 HTTP 쿠키에 사용할 도메인입니다. authentiation 위해 모든 Hadoop 노드 콘솔 도메인이 올바르게 설정해야 제대로 작동합니다.



simple.anonymous.allowed 익명 요청을 허용하는 경우 true 설합니다. simple 인증을 하는 경우에만 설정을 사용할 있습니다



kerberos.principal HTTP 끝에 사용되는 Kerberos주체를 나타냅니다. Kerberos HTTP SPNEGO 설정에 따라 HTTP/ 시작 해야 합니다



kerberos.keytab 주요 자격 증명으로 keytab파일의 위치를 나타냅니다. Oozie Hadoop 위한 Kerberos작격 증명에 사용하는것과 같은 keytab파일이 있어야 합니다





Oozie Hadoop Authentication Configuration (Oozie Hadoop 인증 구성)



Oozie Kerberos 인증을 지원하는 Hadoop 버전에서 작동합니다.




Oozie Hadoop 인증은 다음과 같은 구성 등록 정보를 사용하여 구성됩니다. (기본값 표시)

oozie.service.HadoopAccessorService.kerberos.enabled=false

local.realm=LOCALHOST

oozie.service.HadoopAccessorService.keytab.file=${user.home}/oozie.keytab

oozie.service.HadoopAccessorService.kerberos.principal=${user.name}/localhost@{local.realm}



위의 기본 값은 Hadoop 0.20 보안 배포판 입니다.(Kerberos 인증을 지원)



Kerberos 인증을 사용하도록 설정하려면 다음 속성을 설정해야합니다.

oozie.service.HadoopAccessorService.kerberos.enabled=true



Kerberos 인증을 사용하는 경우, 다음과 같은 속성을 올바른 값으로 설정해야합니다. (기본 표시)

local.realm=LOCALHOST

oozie.service.HadoopAccessorService.keytab.file=${user.home}/oozie.keytab

oozie.service.HadoopAccessorService.kerberos.principal=${user.name}/localhost@{local.realm}



중요 : Hadoop 20보안 배포버전과 Oozie 사용하는 경우 Hadoop에서 Oozie사용자를 프록시 사용자로 구성해야 합니다




User ProxyUser Configuration (사용자 proxyUser 구성)



Oozie 위장 proxyuser기능을 지원합니다 (Hadoop proxyuser기능과 동일하고 Unix sudo 개겸과 유사합니다)



Proxyuser 다른 시스템에서도 사용 가능하고 Oozie 클라이언트는 다른 사용자를 대신하여 작업을 제출 합니다



Proxyuser 강력한 기능이기 때문에 Oozie 다음과 같은 기능 제한을 제공합니다 (Hadoop 비슷)



Proxyuser proxyuser 사용자 기준으로 명시 적으로 구성합니다



proxyuser 사용자는 호스트 집합에서 다른 사용자로 위장해 한정 있습니다

.

proxyuser 사용자는 그룹의 집합에 속하는 사용자로 위장해 한정 있습니다



proxyuser 설정하는 필요한 구성 속성이 있습니다.



oozie.service.ProxyUserService.proxyuser.#USER#.hosts   - 사용자의 호스트 #USER# 다른 사용자로 위장할 있습니다



oozie.service.ProxyUserService.proxyuser.#USER#.groups   - 그룹 사용자는 #USER# 위장되고 사용자에 속해 있어야 합니다



속성 값은 “*” 와일드 카드를 지원합니다만 이것은 testing/development 할때 사용 하는것이 좋습니다




User Authorization Configuration (사용자 인증 구성)



Oozie 기본 인증 모델이 있습니다.



사용자는 모든 작업에 대한 읽기 접근 권한이 있습니다

사용자는 자신의 작업에 쓰기 권한이 있습니다

사용자는  액세스 제어 목록을 기반으로 작업에 쓰기권한이 있습니다. (사용자 그룹의 목록 입니다)

사용자는 관리자 작업에 대한 읽기 접근 권한입니다

관리자는 모든 작업에 쓰기 권한이 있습니다

관리자는 관리자 작업에 대한 쓰기 접근 권한이 있습니다



보안 기능이 해제되어있는 경우 모든 사용자는 관리자 권한 입니다



Oozie 보안은 다음과 같은 구성 속성을 통해 설정됩니다. (기본값 표시)

oozie.service.AuthorizationService.security.enabled=false



보안이 활성화 되어 있는 경우 관리자 목록을 conf/adminusers.txt파일에서 읽을수 있습니다

한줄에 하나의 사용자 이름을 적습니다

#으로 시작하거나 비어 있는 행은 무시됩니다



참고 : 다음과 같은 속성이 oozie-site.xml 설정되어있는경우 그룹이 제공된 기존 ACL모델은 여전히 지원됩니다

oozie.service.AuthorizationService.default.group.as.acl=true



Oozie System ID Configuration (Oozie 시스템 아이디 구성)



Oozie 임시 런타임 디렉토리를 생성하는데 사용되는 시스템 ID 있습니다. 워크플로우 job ID 워크플로우 action ID입니다



그들은 서로 다른 시스템 ID 있을경우 동일한 ID 실행해도 Oozie시스템 충돌은 없지만 문제 해결을 원하는 경우 리소스 create/used 다른 oozie시스템에서 쉽게 식별할수있습니다(기본값 표시)



oozie.system.id=oozie-${user.name}




Fine Tuning an Oozie Server (Oozie서버 세부 조정)



자세한 내용은 아래 링크 참조

http://oozie.apache.org/docs/3.2.0-incubating/oozie-default.xml





Starting and Stopping Oozie (시작 Oozie중지)



Oozie 시작하고 중지하려면 표준 Tomcat 명령을 사용합니다


 

Oozie Command Line Installation (Oozie Command Line Installation 설치)



배포 번들 oozie 클라이언트 TAR.GZ 파일을 복사하여 확장합니다. PATH bin/ 디렉토리를 추가합니다



oozie 명령 도구의 전체 내용 Command Line Interface Utilities 문서를 참조하십시오.




Oozie Share Lib (Oozie Lib 공유)



배포판에 함께있는 Oozie 공유 Lib TAR.GZ파일은 Oozie map-reduce 스트리밍과 pig작업을 실행하는데 필요한 파일이 포함되어 있습니다



번들 스트리밍과 Pig JARs Oozie Test case에서 사용하는 것들입니다





Advanced/Custom Environment Settings (고급/맞춤 환경 설정)



Oozie 다른 파일이기 때문에 유닉스 표준 파일 시스템 계층구조를 사용하도록 구성할 있습니다 (구성, 로그, 데이터파일 임시파일)



설정은 bin/oozie-env.sh 스크립트에서 수행되어야 합니다



oozie-env.sh스크립트로 구성하기전에 소스 추가 환경변수를 지원합니다(기본값표시)

export OOZIE_CONF=${OOZIE_HOME}/conf

export OOZIE_DATA={OOZIE_HOME}/data

export OOZIE_LOG={OOZIE_HOME}/logs

export CATALINA_BASE=${OOZIE_HOME}/oozie-server

export CATALINA_TMPDIR=${OOZIE_HOME}/oozie-server/temp

export CATALINA_OUT=${OOZIE_LOGS}/catalina.out

export CATALINA_PID=/tmp/oozie.pid



샘플 값은 Oozie 유닉스 표준 파일 시스템 계층 구조를 따를 있도록하고 있습니다.

export OOZIE_CONFIG=/etc/oozie

export OOZIE_DATA=/var/lib/oozie

export OOZIE_LOG=/var/log/oozie

export CATALINA_BASE=${OOZIE_DATA}/oozie-server

export CATALINA_TMPDIR=/tmp

export CATALINA_PID=/tmp/oozie.pid








Oozie Quick Start

http://oozie.apache.org/docs/3.2.0-incubating/DG_QuickStart.html



지침은 Tomcat 포함하는 서버 임베디드 더비 데이터베이스를 사용 oozie 설치하고 실행합니다



자세한 설치 구성하는 방법에 대한 자세한 내용은 oozie 참조하십시오



--



System Requirements (시스템 요구사항)



Unix (tested in Linux and Mac OS X)

Java 1.6+

Hadoop

Apache Hadoop (tested with 1.0.0 & 0.23.1)

ExtJS library (optional, to enable Oozie webconsole)

ExtJS 2.2

The Java 1.6+ bin directory should be in the command path.



--



Server Installation (서버 설치)



중요 : Oozie OOZIE_HOME 대한 설정 값을 무시하고 oozie 자동으로 home 계산합니다

Oozie 바이너리 배포판을 다운로드하거나 구축.

Hadoop 바이너리 배포판을 다운로드,

ExtJS 라이브러리를 (버전 2.2이어야합니다) 다운로드.



참고 : ExtJS 다른 라이센스를 사용하기 때문에 Oozie 함께 제공되지 않습니다



참고 : Oozie서버로 유닉스를 사용하는 것이 좋습니다



oozie tar.gz 배포를 풉니다



hadoop tar.gz 풉니다



참고 : Oozie프로세스 proxyuser 있는 Hadoop클러스터를 구성합니다



다음 속성을 Hadoop core-site.xml 필요합니다

<!-- OOZIE -->

 <property>

   <name>hadoop.proxyuser.[OOZIE_SERVER_USER].hosts</name>

   <value>[OOZIE_SERVER_HOSTNAME]</value>

 </property>

 <property>

   <name>hadoop.proxyuser.[OOZIE_SERVER_USER].groups</name>

   <value>[USER_GROUPS_THAT_ALLOW_IMPERSONATION]</value>

 </property>



특정 값으로 대문자 절을 교체한후 Hadoop 다시 시작 합니다



Oozie hadooplibs tar.gz 풀린 같은 곳에 Oozie distribution tar.gz 풉니다

*hadooplibs/* 디렉토리는 Oozie배포를 지원하는 Hadoop 버전에 대한 Hadoop JAR 포함해 성성됩니다



ExtJS라이브러리는 선택 사항입니다(오직 작동할 있는 Oozie 콘솔에 필요합니다)



중요 : 모든 Oozie서버 스크립트는 Oozie설치 디렉토리를 소유하고 있는 유닉스 사용자에서 실행됩니다. 필요한 경우 sudo -u OOZIE_USER 스크립트를 호출 하면 됩니다  (=oozie-setup.sh=, oozie-start.sh , oozie-run.sh and oozie-stop.sh )



Oozie 확장된 디렉토리에서 libext/ 디렉토리를 만듭니다



Oozie hadooplibs/ 번들 Hadoop버전을 사용하는 경우 hadooplibs/에서 libext/디렉토리에 Hadoop jar 복사합니다

Hadoop 다른 버전을 사용하는 경우 libext/디렉토리의 같은 버전에서 필요한 hadoop jar 복사합니다.



ExtJS라이브러리 사반을 libext/ 디렉토리 zip파일을 사용합니다



libext/ 디렉토리에 추가하는 모든 구성 요소와 Oozie 구성하는 oozie-setup.sh스크립트를 실행해야 합니다.



$ bin/oozie-setup.sh



ooziedb.sh command line도구를 사용하여 oozie DB 만듭니다.

$ bin/ooziedb.sh create -sqlfile oozie.sql -runValidate DB Connection

DONE

Check DB schema does not exist

DONE

Check OOZIE_SYS table does not exist

DONE

Create SQL schema

DONE

DONE

Create OOZIE_SYS table

DONE

Oozie DB has been created for Oozie version '3.2.0'

$



데몬 프로세스 실행으로 Oozie 시작합니다.

$ bin/oozie-start.sh



그라운드 프로세스 실행으로 Oozie 시작합니다.

$ bin/oozie-run.sh



oozie 제대로 실행되었는지 확인하기위해 로그파일 logs/oozie.log 확인



oozie command line도구로 oozie 상태를 확인합니다

$ bin/oozie admin -oozie http://localhost:11000/oozie -status



브라우저를 사용하여 Oozie 콘솔로 이동 Oozie 상태는 정상이어야합니다. (http://localhost:11000/oozie)



예제를 실행에 대한 자세한 내용은 예제를 실행 문서를 참조하십시오.




--



Client Installation (클라이언트 설치)



배포 번들로 oozie 클라이언트 TAR.GZ 파일을 복사하여 확장합니다.

bin/ 디렉토리를 PATH 추가합니다



oozie command line 도구의 유틸리티 문서를 참조하십시오

(http://oozie.apache.org/docs/3.2.0-incubating/DG_QuickStart.html)



참고 : oozie 서버 설치시 oozie 클라이언트도 포함하고 있습니다 클라이언트는 원격 컴퓨터에 설치해야 합니다



--



Oozie Share Lib Installation ( oozie 공유 Lib설치)



배포 번들로 oozie-sharelib TAR.GZ 파일을 확장합니다.



share/ 디렉토리는 HDFS Oozie 디렉토리에 복사해야합니다



$ hadoop fs -put share share



중요 : 작업은 Oozie Hadoop (HDFS) 이용해 수행해야 합니다 공유 디렉토리가 이미 HDFS 있는 경우 복사하기 전에 삭제해야 합니다









Oozie Examples ( oozie 예제)

http://oozie.apache.org/docs/3.2.0-incubating/DG_Examples.html



Command Line Examples (command line )

Setting Up the Examples (예제 설정)

Running the Examples (예제를 실행)

Java API Example (javaAPI 예제)

Local Oozie Example (local oozie 예제)



--




Command Line Examples (command line 예제)



Setting Up the Examples (예제 설정)



Oozie예제는 oozie-examples.tar.gz파일은 Oozie 함께 제공됩니다



파일을 확장하면 로컬파일 시스템 example/디렉토리를 생성합니다



example/ 디렉토리는 HDFS user 디렉토리에 복사해야 합니다



$ hadoop fs -put examples examples



참고 : HDFS 이미 samples디렉토리가 있으면 복사하기전에 삭제해야 합니다 안그러면 복사할 없습니다.



Running the Examples (예제 실행)



streaming pig 예제로 Oozie공유 라이브러리는 HDFS 설치해야 합니다.



환경변수 PATH Oozie bin 추가



초기 설정은 JobTracker localhost:9001이고 NameNode hdfs://localhost9000입니다

실제 이와 다른경우 examples디렉토리내 파일을 올바른 값으로 편집해야 합니다



예를 들어 응용프로그램은 examples/app 디렉토리안에 있습니다

응용프로그램 디렉토리안에 xml 파일이 포함되어 있습니다 job.properties파일 jab JAR파일을 필요로하는 예제가 있을 있습니다

(workflow 또는 coordinator)



모든 예제에 대한 입력은 examples/input-data/ 디렉토리에 있습니다

예제는 examples/output-data/${EXAMPLE)NAME} 디렉토리 아래에 출력을 만들 있습니다



참고 : job.properties파일이 로컬 제출시 파일이 아닌 HDFS경로 여야 합니다




How to run an example application ( 응용프로그램을 실행하는 방법)



$ oozie job -oozie http://localhost:8080/oozie -config examples/apps/map-reduce/job.properties -run

.

job: 14-20090525161321-oozie-tucu

Check the workflow job status:



$ oozie job -oozie http://localhost:8080/oozie -info 14-20090525161321-oozie-tucu



.

.----------------------------------------------------------------------------------------------------------------

Workflow Name :  map-reduce-wf

App Path      :  hdfs://localhost:9000/user/tucu/examples/apps/map-reduce

Status        :  SUCCEEDED

Run           :  0

User          :  tucu

Group         :  users

Created       :  2009-05-26 05:01 +0000

Started       :  2009-05-26 05:01 +0000

Ended         :  2009-05-26 05:01 +0000

Actions

.----------------------------------------------------------------------------------------------------------------

Action Name             Type        Status     Transition  External Id            External Status  Error Code    Start Time              End Time

.----------------------------------------------------------------------------------------------------------------

mr-node                 map-reduce  OK         end         job_200904281535_0254  SUCCEEDED        -             2009-05-26 05:01 +0000  2009-05-26 05:01 +0000

.----------------------------------------------------------------------------------------------------------------



브라우져에서 http://localhost:8080/oozie 이동해서 Oozie 콘솔을 통해 워크 플로우 작업상태를 확인합니다



모든 Oozie명령과 Oozie URL -oozie옵션을 제공하지 않도록 합니다 환경에서 Oozie URL OOZIE_URL 유럽 표준안 변수를 설정합니다

예를 들어

$ export OOZIE_URL="http://localhost:8080/oozie"

$

$ oozie job -info 14-20090525161321-oozie-tucu




--




Java API Example



Oozie provides a =Java Client API that simplifies integrating Oozie with Java applications. This Java Client API is a convenience API to interact with Oozie Web-Services API.



The following code snippet shows how to submit an Oozie job using the Java Client API.



import org.apache.oozie.client.OozieClient;

import org.apache.oozie.client.WorkflowJob;

.

import java.util.Properties;

.

   ...

.

   // get a OozieClient for local Oozie

   OozieClient wc = new OozieClient("http://bar:8080/oozie");

.

   // create a workflow job configuration and set the workflow application path

   Properties conf = wc.createConfiguration();

   conf.setProperty(OozieClient.APP_PATH, "hdfs://foo:9000/usr/tucu/my-wf-app");

.

   // setting workflow parameters

   conf.setProperty("jobTracker", "foo:9001");

   conf.setProperty("inputDir", "/usr/tucu/inputdir");

   conf.setProperty("outputDir", "/usr/tucu/outputdir");

   ...

.

   // submit and start the workflow job

   String jobId = wc.run(conf);

   System.out.println("Workflow job submitted");

.

   // wait until the workflow job finishes printing the status every 10 seconds

   while (wc.getJobInfo(jobId).getStatus() == Workflow.Status.RUNNING) {

       System.out.println("Workflow job running ...");

       Thread.sleep(10 * 1000);

   }

.

   // print the final status o the workflow job

   System.out.println("Workflow job completed ...");

   System.out.println(wf.getJobInfo(jobId));

   ...

Local Oozie Example



Oozie provides a embedded Oozie implementation, LocalOozie , which is useful for development, debugging and testing of workflow applications within the convenience of an IDE.



The code snipped below shows the usage of the LocalOozie class. All the interaction with Oozie is done using Oozie OozieClient Java API, as shown in the previous section.



The examples bundled with Oozie include the complete and running class, LocalOozieExample from where this snipped was taken.



import org.apache.oozie.local.LocalOozie;

import org.apache.oozie.client.OozieClient;

import org.apache.oozie.client.WorkflowJob;

.

import java.util.Properties;

.

   ...

   // start local Oozie

   LocalOozie.start();

.

   // get a OozieClient for local Oozie

   OozieClient wc = LocalOozie.getClient();

.

   // create a workflow job configuration and set the workflow application path

   Properties conf = wc.createConfiguration();

   conf.setProperty(OozieClient.APP_PATH, "hdfs://foo:9000/usr/tucu/my-wf-app");

.

   // setting workflow parameters

   conf.setProperty("jobTracker", "foo:9001");

   conf.setProperty("inputDir", "/usr/tucu/inputdir");

   conf.setProperty("outputDir", "/usr/tucu/outputdir");

   ...

.

   // submit and start the workflow job

   String jobId = wc.run(conf);

   System.out.println("Workflow job submitted");

.

   // wait until the workflow job finishes printing the status every 10 seconds

   while (wc.getJobInfo(jobId).getStatus() == Workflow.Status.RUNNING) {

       System.out.println("Workflow job running ...");

       Thread.sleep(10 * 1000);

   }

.

   // print the final status o the workflow job

   System.out.println("Workflow job completed ...");

   System.out.println(wf.getJobInfo(jobId));

.

   // stop local Oozie

   LocalOozie.stop();

   ...


신고





Posted by 파란물