S-JIS[2011-11-16] 変更履歴

Hadoop CDH3 試行錯誤

CDH3のインストール方法の試行錯誤の記録。


Windowsへのインストール

CDH3はUNIXが対象なのでWindowsは正式にはサポートされていない…だからWindowsへインストールできない…と思って色々試したので、その記録を一応とっておく。

CDH3はHadoop0.20がベースなので、Hadoop0.20を改造すればWindowsでも動作する環境が作れる。
jarファイルの依存関係やxmlファイルの定義が怪しいと思うが、単独環境でWordCountは実行できた。

実際はCDH3のアーカイブをダウンロードすればインストールできるので、ここまで変な事はやらなくていい(苦笑)


Hadoop0.20を改造する方法

AsakusaFWではEclipseとCDH3を使うので、AsakusaFWのインストール時にCDH3のjarファイルもインストールされる。
これを元にHadoop0.20のjarファイルを置き換えて環境を作ることが出来た。[2011-07-31]
(試しにAsakusaFWで使っているHadoopのjarファイルをHadoop0.20.2にコピーしてやったらとりあえず動いた^^;)

  1. Windows上にインストールしてあるHadoop0.20.2(単独環境用)をコピーして新しいディレクトリーを作る(CDH3用のディレクトリーを用意する)。
    例: C:\cygwin\usr\local\hadoop-0.20.2 → C:\cygwin\usr\local\hadoop-0.20.2-cdh3
  2. AsakusaFWインストール時にMavenのリポジトリーにCDH3のjarファイル(hadoop-core-0.20.2-cdh3u0.jar)がダウンロードされているので、hadoop-0.20.2-cdh3直下にコピーする。
    なお、実行するときにhadoopシェルは「hadoop-*-core.jar」というファイルを探すので、CDH3のjarファイルはそのままでは対象にならない。この条件にマッチするようファイル名を変えておく。
  3. 本来の「hadoop-0.20.2-core.jar」を削除しておく。
  4. 他に依存しているライブラリーが色々あるので、それをhadoop-0.20.2-cdh3/libの下にコピーする。
    EclipseのワークスペースのAsakusaFWプロジェクトの下に.classpathというファイルがあり、依存するjarファイルが書かれている。
    「M2_REPO」で始まっているjarファイルを全てMavenのリポジトリー(C:\Documents and Settings\ユーザー\.m2\repository)の下から探して、hadoop-0.20.2-cdh3/libにコピーする。
    (たぶん本当は不要なjarファイルもあるんだろうけど、どれがそうなのか分からないので、とりあえず全部コピーした^^;)
    (同じライブラリーの異なるバージョンが混在してしまうが、自分が試した範囲では動作する)
  5. 環境変数HADOOP_HOMEを設定する。
    HADOOP_HOME C:/cygwin/usr/local/hadoop-0.20.2-cdh3
  6. 一応動くかどうかCygwinから確認してみる。
    $ cd /usr/local/hadoop-20.2-cdh3
    $ bin/hadoop fs -ls

これを手動でやるのは面倒なので、自動的に実行するプログラムを作った。[2011-07-24]
AsakusaFWのプロジェクトに環境構築用プログラムを入れ、それを実行する。

  1. CDH3環境構築用プログラム(AsakusaFWのWindows環境構築用プログラム)をダウンロード・展開する。
    1. init.zip(8.19kB)をダウンロードする。
    2. 解凍して出来るinitディレクトリーを、afw-init/src/main/java/の下にコピー(上書き)する。
  2. CDH3環境構築用プログラムを実行する。
    1. Windows上にインストールしてあるHadoop0.20.2(単独環境用)をコピーして新しいディレクトリーを作る(CDH3用のディレクトリーを用意する)。
      例: C:\cygwin\usr\local\hadoop-0.20.2 → C:\cygwin\usr\local\hadoop-0.20.2-cdh3
    2. afw-init/src/main/java/init/HadoopCDH3.java内のCDH3のディレクトリー名を自分の環境に合わせて変更する。
    3. afw-init/src/main/java/init/HadoopCDH3.javaをEclipse上から実行する。(ここでjarファイルをコピーする)
  3. 環境変数HADOOP_HOMEを設定する。
    HADOOP_HOME C:/cygwin/usr/local/hadoop-0.20.2-cdh3

Mavenを使ってHadoop0.20を改造する方法

Mavenを使ってjarファイルをダウンロードして環境を作ることが出来た。[2011-09-24]

以下のコマンドはコマンドプロンプトから実行する。

  1. Hadoop0.20をインストールし、単独環境で実行できるように設定する。
  2. インストールしたHadoop0.20のディレクトリーをコピーし、CDH3用のディレクトリーを作成する。
    (例: D:\cygwin\usr\local\hadoop-0.20.204.0 → D:\cygwin\usr\local\hadoop-cdh3)
  3. lib直下のjarファイルを削除する。
    > cd/d D:\cygwin\usr\local\hadoop-cdh3
    > del lib\*.jar
  4. hadoop-cdh3直下にpom.xmlというファイルを作成する。(参考:AsakusaFWの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>
    	<name>Batch Application Template (change it.)</name>
    	<groupId>sample</groupId>
    	<artifactId>sample</artifactId>
    	<version>0.1</version>
    
    	<properties>
    		<cloudera.cdh.version>0.20.2-cdh3u0</cloudera.cdh.version>
    
    		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    	</properties>
    
    	<repositories>
    		<repository>
    			<id>repository.cloudera.com</id>
    			<name>Cloudera Maven Repository</name>
    			<url>https://repository.cloudera.com/content/repositories/releases</url>
    			<snapshots>
    				<enabled>false</enabled>
    			</snapshots>
    		</repository>
    	</repositories>
    
    	<build>
    		<plugins>
    			<plugin>
    				<groupId>org.apache.maven.plugins</groupId>
    				<artifactId>maven-dependency-plugin</artifactId>
    				<configuration>
    					<artifactItems>
    						<artifactItem>
    							<groupId>dummy</groupId>
    							<artifactId>dummy</artifactId>
    						</artifactItem>
    					</artifactItems>
    					<outputDirectory>lib</outputDirectory>
    				</configuration>
    			</plugin>
    		</plugins>
    	</build>
    
    	<dependencies>
    		<dependency>
    			<groupId>org.apache.hadoop</groupId>
    			<artifactId>hadoop-core</artifactId>
    			<version>${cloudera.cdh.version}</version>
    			<scope>provided</scope>
    		</dependency>
    	</dependencies>
    
    </project>
  5. Mavenのコマンドを実行する(上記のpom.xmlが読み込まれて実行される)。
    > mvn dependency:copy-dependencies
    これで、CDH3のhadoop-coreが依存するjarファイルがhadoop-cdh3/libの下にコピーされる。
    (ついでにhadoop-coreのjarファイルもここにコピーされる)
  6. hadoop-cdh3直下の既存のhadoop-coreのjarファイルを削除する。
    > del hadoop-core*.jar
  7. hadoop-cdh3/libの下に作られたCDH3用のhadoop-coreをhadoop-cdh3直下に移動する。
    > move lib\hadoop-core*.jar .

ソースのダウンロード

Mavenを使ってソースをダウンロードする方法

Mavenを使ってCDH3のソースをダウンロードする方法。[2011-09-24]

Maven経由でのjarファイルのダウンロードに使った(CDH3の依存関係を書いた)pom.xmlのある場所で、以下のMavenコマンドを実行する。

> mvn eclipse:eclipse -DdownloadSources=true

これはEclipse用の環境を作る命令なのだが、downloadSourcesをtrueにしておくとソースのjarファイル(*-sources.jar)がMavenのローカルリポジトリーにダウンロードされる。
(したがって.classpathや.projectといったファイルが作られるが、気にしない(爆))

ちなみに、実態はClouderaのサイトからソースのjarファイルをダウンロードしているだけなので、
https://repository.cloudera.com/content/repositories/releases/org/apache/hadoop/hadoop-core/0.20.2-cdh3u0/hadoop-core-0.20.2-cdh3u0-sources.jar
をブラウザーに指定して直接ダウンロードすることも出来る。


CDH3インストールへ戻る / Hadoop目次へ戻る / 技術メモへ戻る
メールの送信先:ひしだま