MapReduceプログラム開発準備

| # Comments | 1 Trackback
以前GFS(Google File System)とMapReduceのオープンソース版であるHadoopを紹介しましたが、引き続きHadoop MapReduceプログラムの開発を行うため、HadoopMaven2の準備を行います。

以下の手順では、JavaTM 1.5.x以上をインストールの上、環境変数 JAVA_HOME が適切に設定されているものとします。
また、Windowsを利用している場合はあらかじめCygwinをインストールしておいてください。

Hadoopインストール

開発用ということで、ローカルでMapReduceが試せる環境を作ります。

ダウンロードページから最新のHadoopをダウンロードし、適当なディレクトリに展開します。
以下、展開したディレクトリを[HADOOP_HOME]と表記します。
2008/10/01時点での最新版は0.18.1です。

[HADOOP_HOME]$ bin/hadoop

として、Usageが表示されればインストール完了です。

付属しているサンプルプログラムgrepを起動してみます。

[HADOOP_HOME]$ mkdir input
[HADOOP_HOME]$ cp conf/*.xml input 
[HADOOP_HOME]$ bin/hadoop jar hadoop-*-examples.jar grep input output 'dfs[a-z.]+' 
[HADOOP_HOME]$ cat output/*

conf/hadoop-site.xml

Hadoopに関する設定をするには、hadoop-site.xmlファイルに追加設定をしていきます。

例えばHadoopが利用する一時ファイルを格納するディレクトリの位置を変更したい場合には、

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>

<property>
  <name>hadoop.tmp.dir</name>
  <value>/Users/${user.name}/hadoop/tmp</value>
  <description>A base for other temporary directories.</description>
</property>

</configuration>

という感じで記述します。
分散環境を利用するための設定もこのファイルで行います。
(デフォルトではローカル環境で動作するようになっています。)

詳しい設定値についてはhadoop-default.htmlをご覧ください。

Maven2プロジェクト作成

HadoopライブラリはMaven2レポジトリにデプロイされていないので、Maven2プロジェクトから扱えるように、あらかじめローカル環境にインストール、もしくはレポジトリにデプロイしておきます。

$ mvn install:install-file \
    -DgroupId=org.apache.hadoop \
    -DartifactId=hadoop-core \
    -Dversion=0.18.1 \
    -Dpackaging=jar \
    -Dfile=[HADOOP_HOME]/hadoop-0.18.1-core.jar

プロジェクトの作成

hadoop-examplesプロジェクトを作成し、dependencyの設定をします。
またMapReduceではJavaTM 1.5.x以上が必要ですので、コンパイラの設定も行います。

<project>
	<modelVersion>4.0.0</modelVersion>
	<groupId>st.happy_camper.hadoop</groupId>
	<artifactId>hadoop-examples</artifactId>
	<packaging>jar</packaging>
	<version>0.0.1-SNAPSHOT</version>

	・・・・

	<build>
		<plugins>
			<plugin>
				<groupid>org.apache.maven.plugins</groupid>
				<artifactid>maven-compiler-plugin</artifactid>
				<configuration>
					<source>1.6</source>
					<target>1.6</target>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>
		</plugins>

	・・・・

	</build>

	<dependencies>
		<dependency>
			<groupId>org.apache.hadoop</groupId>
			<artifactId>hadoop-core</artifactId>
			<version>0.18.1</version>
			<scope>provided</scope>
		</dependency>

	・・・・

	</dependencies>

	・・・・

</project>

hadoop-coreは実行時にはHadoop実行環境が提供していますので、スコープをprovidedにしてあります。

パッケージング

[HADOOP_HOME]/src/examplesにあるサンプルのうち、org/apache/hadoop/examples/WordCount.javaをプロジェクトにコピーし、コンパイル、実行してみます。

なお、パッケージはgroupId/artifactIdに合わせて変更して、テスト用のデータをsrc/test/resourcesに置いています。

+ hadoop-examples
    + src
        + main
            + java
                + st
                    + happy_camper
                        + hadoop
                            + examples
                                - WordCount.java
        + test
            + resources
                + input
                    - hadoop-default.xml
                    - hadoop-site.xml
    - pom.xml

パッケージングします。

$ mvn clean package

実行

src/test/resourcesに配置した入力データを使ってHadoopを起動してみます。

$ [HADOOP_HOME]/bin/hadoop jar target/hadoop-examples-0.0.1-SNAPSHOT.jar \
    st.happy_camper.hadoop.examples.WordCount \
    src/test/resources/input/ \
    target/output
$ cat target/output/*

これでMapReduceプログラムの開発を行うための準備ができました。
これからいろいろなサンプルを動かしたり、実験プログラムを作ったりしてHadoopへの理解を深めていきます。

トラックバック(1)

オリジナルのHadoop MapReduceアプリケーション第一弾、hadoop... 続きを読む

comments powered by Disqus

Twitter Icon

AdSense

Creative Commons License
このブログはクリエイティブ・コモンズでライセンスされています。
Powered by Movable Type 5.14-ja

Google検索

カスタム検索

2013年10月

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31