プロジェクト管理ツールである Apache Maven で Hadoop MapReduce プログラムを管理する方法について。今回作成したプロジェクトは github で公開している。
手順
1. プロジェクトの作成
まずはじめにプロジェクトを作成する。
$ mvn archetype:create -DgroupId=org.holidayworking -DartifactId=hadoop-maven-sample
引数で指定している group-id
にはプロジェクトのルートパッケージ名、artifactId
にはプロジェクト名を指定する。今回はルートパッケージ名を org.holidayworking
、プロジェクト名を hadoo-maven-sample
としている。
2. pom.xml の編集
ライブラリとして hadoop-core.jar が必要となる。今回は Cloudera から公開しているレポジトリから入手するようにする。
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.holidayworking</groupId>
<artifactId>hadoop-maven-sample</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>hadoop-maven-sample</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<repositories>
<repository>
<id>cloudera</id>
<url>https://repository.cloudera.com/content/repositories/releases/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-core</artifactId>
<version>0.20.2-cdh3u2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
3. プログラミング
適当な処理をするプログラムを作成する。
4. プログラムの実行
jar を作成してから、hadoop コマンドで実行する。
$ mvn clean package
$ hadoop jar target/hadoop-maven-sample-1.0-SNAPSHOT.jar org.holidayworking.WordCount CHANGES.txt output
補足
Eclipse にインポートするには?
Eclipse に下記のパッケージをインストールしておく。
- m2e - Maven Integration for Eclipse
- m2e - slf4j over logback loggin (Optional)
そして、プロジェクトのディレクトリで下記のコマンドを実行する。
$ mvn eclipse:eclipse
すると、Eclipse で管理するのに必要なファイルが作成されるので、あとはインポートしてやればいい。