데이터실무
DA, SQL, DB보안 등 실무자를 위한 위한 DB기술 바이블!
가장 단순한 예로서 우지에서 하나의 "Hello World" job을 수행하고자 한다. 우선 하둡과 우지가 설치된 상태에서 "HelloWorldTest"라는 이름의 디렉터리를 만들고 그 안에 다음 항목들이 존재하도록 한다. lib 디렉터리 안에는 문자열의 인자값을 출력하는 System.out.println()을 갖는 HelloWorld.java 파일을 작성해 저장한다. 이어서 다음 명령을 통해 HelloWorld.jar 파일을 lib 디렉터리에 저장한다. job.properties 파일에는 위의 class 파일을 다음과 같이 지정한다. workflow.xml 파일에는 다음과 같은 내용을 기록한다. 이제 다음 명령을 통해 HelloWorldTest를 hdfs로 옮겨 놓는다. 하둡의 start-all.sh 을 수행하고 우지에서 다음의 명령을 수행한다. 수행된 job의 상태코드를 웹 콘솔(브라우저)에서 체크하거나 hdfs job tracker에서 해당 job-id를 클릭해 map task가 성공적으로 완료했는지를 알아본다. 성공적으로 진행됐다면 System.out.println 문장을 통한 결과가 작업의 로그 파일에 저장된 것을 확인할 수 있다. 하둡의 WordCount 예제에 우지를 적용하는 모습이다. 다음은 이러한 word count 작업의 workflow.xml 파일 지정 내용이다. 우선 다음 명령을 통해 HDFS로 이동시킨다. 한편 하둡의 job.properties 파일 모습은 다음과 같다. 우지 클라이언트 콘솔에서 다음 명령을 통해 job을 수행(submit)한다. 두 개의 맵리듀스 처리 작업(job)이 있는 경우를 상정한다. 첫째 맵리듀스 작업에서는 데이터를 가져와서 HDFS에 입력하는 것이고, 둘째 맵리듀스 작업에서 이 파일들을 읽어서 특정 데이터 타입별로 합병(merge) 작업을 한다고 가정한다. 위 예에서는 start 노드(①)에서 datafeed 작업을 먼저 수행하도록 했다. 이것이 완료되면 fork 노드(②)에서 mergeA와 mergeB의 두 개 action이 각각 동시에(concurrently) 수행되도록 지정됐다. 우선 HDFS로 이동한 후config-default.xml 파일에 다음과 같이 반영한다. 이들 설정파일을 기초로 다음과 같은 명령을 통해 지정된 작업순서에 의거해 해당 job이 수행되도록 한다. 우지를 설치하면 oozie-examples.tar.gz라는 예제 파일이 함께 제공된다. 이것을 풀면 apps 디렉터리에 aggregator, sqoop 등 20여 개의 예제 설정파일(workflow.xml)이, java 디렉터리에 DateList.java 등 10여 개의 예제 java 프로그램이 데이터와 함께 들어 있으므로 이를 참조할 수 있다.Oozie 실습
Hello World 예제
작업 흐름의 정의
HDFS로의 이동
결과확인
WordCount 예제
작업 흐름의 정의
HDFS로의 이동과 하둡 설정
우지에서의 명령어 수행
MapReduce방식의 데이터 병합 예제
작업 흐름의 정의
이들은 모두 맵리듀스 형태로 진행된다.
HDFS로의 이동과 하둡 설정
우지 명령어 수행