You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

개요

MapReduce Job을 실행하는 Driver가 많은 경우 실행시 Package 명 + Class 명을 모두 넣어야 하는 불편함을 해결하기 위해서 간단하게 Alias 만으로 Driver를 지정할 수 있도록 하는 Hadoop 에서 제공하는 Driver입니다.

import com.yourcompany.hadoop.mapreduce.aggregate.UnionDriver;
import io.datadynamics.bigdata.mapreduce.core.Constants;
import org.apache.hadoop.util.ProgramDriver;

/**
 * 모든 MapReduce를 실행하기 위한 Alias를 제공하는 Program Driver.
 *
 * @author Data Dynamics
 * @since 0.1
 */
public class MapReduceDriver {

    public static void main(String argv[]) {
        ProgramDriver programDriver = new ProgramDriver();
        try {
            programDriver.addClass("union", UnionDriver.class, "작은 파일들을 HDFS Block 단위로 묶는 MapReduce Job");
            programDriver.driver(argv);
            System.exit(0);
        } catch (Throwable e) {
            e.printStackTrace();
            System.exit(-1);
        }
    }
}

이 Program Driver를 제대로 사용하려면 JAR 파일 패키징시 Manifest 파일의 Main Class로 지정해야 하며 Maven에서 다음과 같이 JAR 플러그인을 설정하여 기본 실행 클래스로 지정할 수 있습니다.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
        <archive>
            <manifest>
                <mainClass>com.yourcompany.hadoop.mapreduce.MapReduceDriver</mainClass>
            </manifest>
        </archive>
    </configuration>
</plugin>

이제 Maven으로 빌드후 다음과 같이 실행합니다.

# mvn package
...
# cd target
# hadoop jar mapreduce.jar
... 설명이 나옴
# hadoop jar mapreduce.jar union -input hdfs://192.1.1.1:8020/input -output hdfs://192.1.1.1./output

예제

본 예제의 코드는 https://github.com/DataDynamics/template-mapreduce/blob/master/src/main/java/com/yourcompany/hadoop/mapreduce/MapReduceDriver.java 에서 확인할 수 있습니다.

평가

  • Program Driver의 개념이 이해되었는지 확인하기
  • 기존에 작성했던 MapReduce Driver를 Program Driver에 등록하기
  • Maven Build시 JAR 플러그인에 Program Driver 지정하기
  • Program Driver를 이용하여 MapReduce Job 실행하기
  • No labels