본문 바로가기

미분류/Hadoop

Hadoop - Oozie 설치하기

Apche Oozie

- 프로젝트 규모가 커지면서 여러개의 MapReduce job을 연결하기 위해 만들어졌다.

- Job을 손쉽게 제어할 수 있어서 특정 Job을 시작하거나 종료, 일시정지 할 수 있다.

- 맵리듀스 작업 이외에도 사용할 수 있다.

- Control + Action 노드로 구성된다.

구성

- Master 1대 + Slave 3대 인 Hadoop

- Master Node에 설치

- Hadoop 2.9.2 / Oozie 4.3.1

설치

(1) 설치는 Build 이후 Server / Client 구축으로 나뉜다.

- 설치는 이 곳 에서 wget 으로 받아준다.

- 다운받은 파일을 적절한 위치로 옮긴다.

(2) 빌드를 위해 Maven을 설치한다. 

(3) oozie/bin/mkdistro.sh 를 실행한다. 이 때에 테스트는 스킵할 수 있도록 한다.

mkdistro.sh -DskipTests

(4) 빌드에 시간이 꽤 걸리므로 기다려준다. 에러가 날 경우 메모리를 늘려 다시 실행해본다.

(5) Oozie 가 사용할 외부 DB에 oozie DATABASE 와 USER를 추가해준다. 나의 경우 HIVE를 설치할 때 사용한 mysql이 있어서 그 곳을 사용했다. 권한도 부여해주어야 한다.

create database oozie
grant all privileges on oozie.* to oozie

(6) 빌드 수행 후 /distro/target 에서 oozie-distro.tar.gz 파일이 생성된 것을 확인한다.

(7) tar -xvf oozie-4.3.1-distro.tar.gz 로 압축 해제 이후 적당한 위치로 옮겨준다.

(8) oozie-4.3.1-distro/oozie-4.3.1/conf/hadoop-conf/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>

OOZIE_SERVER_USER : Oozie 서버 유저
OOZIE_SERVER_HOSTNAME : HOSTNAME
OOZIE_SERVER_USER.groups : 유저가 속한 그룹, 없을 시에는 공백

(9) Oozie 디렉터리 아래에 libext 디렉터리를 만든다.

(10) libext 디렉터리 아래에 /home/centos/hadoop-2.9.2/share/hadoop 폴더들 밑의 .jar 파일을 옮긴다.

 전부 옮기지 않으면 에러나니까 꼭 옮기자.

(11) libext 아래에 ext-2.2 를 다운 받는다. > http://archive.cloudera.com/gplextras/misc/ext-2.2.zip 

(12) 이후 oozie-setup.sh prepare-war 를 통해 oozie를 구성한다.

- 이 단계에서 jar 파일이 부족하거나 ext-2.2 가 없으면 war가 제대로 구성되지 않는다. 꼭 잘 확인한다.

(13) 외부 DB를 사용하므로 /home/centos/oozie-4.3.1-distro/oozie-4.3.1/conf 의 oozie-site.xml 을 작성해준다.

<configuration>
        <property>
                <name>oozie.db.schema.name</name>
                <value>oozie</value>
                <description>
                        Create Oozie DB
                </description>
        </property>
        <property>
                <name>oozie.service.JPAService.create.db.schema</name>
                <value>true</value>
                <description>
                        Create Oozie DB
                </description>
        </property>

        <property>
                <name>oozie.service.JPAService.jdbc.driver</name>
                <value>com.mysql.jdbc.Driver</value>
                <description>
                        JDBC Driver class
                </description>
        </property>
        <property>
                <name>oozie.service.JPAService.jdbc.url</name>
                <value>jdbc:mysql://master:3306/oozie</value>
                <description>
                        JDBC URL
                </description>
        </property>
        <property>
                <name>oozie.service.JPAService.jdbc.username</name>
                <value>oozie</value>
                <description>
                        DB user name
                </description>
        </property>
        <property>
                <name>oozie.service.JPAService.jdbc.password</name>
                <value>oozie</value>
                <description>
                        DB user password
                </description>
        </property>
</configuration>

(14) oozie-start.sh 로 oozie를 실행한다.

(15) oozie admin -oozie http://master:11000/oozie -status 로 status 를 확인한다.

(16) http://master:11000/oozie/ 에 접속하여 oozie가 잘 구동되고 있는지 확인한다.