LoginSignup
1
1

More than 5 years have passed since last update.

Windows上でHadoop 2.4.1をビルドする

Last updated at Posted at 2014-07-28

Windows上でHadoopを実行する方法はいくつかあるのですが、色々興味本位に試していたら、うっかりWindows上でHaoopをビルドしてしまったので、その備忘録です。

何故ビルドしてしまったかというと、Windows上で実行するのに必要なバイナリ(EXE)がtarball に同梱されていなかったためです。たとえば、Windows上でHadoopが必要とするUNIX系コマンドは、winutils.exe という名前のユーティリティ経由で実行されるのですが、これがなかったためで半ばビルドすること自体が目的になった感じです。

以前は、そのためCygwinが必須でしたが、現在のHadoop 2.2以降では、CygwinなしでHadoopが実行出来るようになってます(ただしビルド時に、chmod/rm などのgnuwin32系のコマンドが必要だったりします)。また、Hadoop 1.1系もWindowsで動く(HDInsight Emulatorとか)で、そちらもきちんとビルドできると思われます。

元となる情報は、

を参照すれば無問題かと思います。

ビルド環境

初めにザックリと、必要な環境を列挙しますが、具体的にどうしたかは順次述べます。

  • Windows System
  • JDK 1.6+
  • Maven 3.0 or later
  • Findbugs 1.3.9 (if running findbugs)
  • ProtocolBuffer 2.5.0
  • Windows SDK or Visual Studio 2010 Professional
  • Unix command-line tools from GnuWin32 or Cygwin: sh, mkdir, rm, cp, tar, gzip
  • zlib headers (if building native code bindings for zlib)
  • Internet connection for first build (to fetch all Maven and Hadoop dependencies)

findbugsは、実行してないので入れませんでした。

OS

ビルド環境として、以下のOSがサポートされてます。

  • Windows Server 2008 / 2008 R2
  • Windows Vista / 7

推奨はServer系です。最新のWindows 8 / Server 2012 / 2012R2系は Windows SDKのバージョンからかムリみたいな感じです。冒険するのも時間の無駄なので、さくっとAzureの仮想マシンに2008 R2 を起動して環境を作るのが楽かと思います。

今回は、Azure上のWindows 2008 R2 64bit 英語版 の仮想マシンで試しました。

Windows SDK

Windows バイナリのビルドには、Windows SDKもしくは、Visual Studioが必要です。ただし、Visual Studioの場合、2010 のみサポート、Expressはサポート外ですので注意しましょう。今回は、Windows SDK 7.1 を入れました。Windows SDKは以下からダウンロードして、インストールします。

JDK

JDK8ではなく、JDK7 64bit版の最新を入れました。(この時点で、jdk1.7.0_65)以下からダウンロードして普通にインストールします。

JAVA_HOME 環境変数の設定を忘れずに。

Maven

Maven をインストールします。最新は、3.3系ですが、これで試してみたらビルドに失敗したので、3.0系の最新である、3.0.5 をインストールしました。

インストール方法は、以下のブログに解説しててあるので、問題ないでしょう。

mvnコマンドが実行できるように、PATHを通しておいてください。

Image-2014-07-28-172527-001.png

Unix コマンド系

実行には、Cygwin等いらないのですが、ビルドには何故かUnixコマンド的な何かが必要です。Cygwin or GnuWin32 とのことでしたで、ここではGnuWin32ベースのものをインストールしました。 結局後々、sh.exeが必要だったり、cygdrive に依存していたりする部分があったので、cygwin64 を入れました。

上記から、以下の3つをインストールすればOKでした。

  • CoreUtil ( ファイル操作系のコマンド一式が入っている)
  • gzip
  • tar

なので、上記はヤメで、以下からcygwin64をインストールして、PATHの最後の方に追加します。cygwinのterminalからビルドはできません。

ZLIB

Zlibのバイナリとインクルードヘッダが必要です。テストされたバージョンは、1.2.7で、配布されている最新は1.2.8です。念のため1.2.7 と指定されたバージョンにしました。以下から、zlib-1.2.7-dll.zip をダウンロードして展開しましょう。

例えば、c:\zlib-1.2.7 に展開したとすると、そこをPATHに通しておきます。またZLIB_HOME環境変数に、展開したパスを設定しておきます。

あと、コンパイルにZlibのインクルード(*.h)が必要となります。Makefileとか修正するのとか面倒くさいので、

C:\Program Files\Microsoft SDKs\Windows\v7.1\Include

に、zlib.h / zconf.h を コピーしておけば大丈夫です。

ProtocolBuffer

Googleの提供しているProtocolBuffer2.5が必要となる。以下からダウンロード可能となるので、適宜展開しPATHにprotoc.exe が起動できるようにしておく。

これでツール類の事前準備は完了。

Platform環境変数

Platform環境変数に、x64 or Win32 のどちらかを定義します。x64 でビルドしているので、x64 を設定します。

set Platform = x64

このとき、"Platform" の文字列は、ケースセンシティブですと、BUILD.txtに書かれているので、注意してください。

Environment variables on Windows are usually case-insensitive, but Maven treats
220 them as case-sensitive.

Hadoop ソースの展開

Hadoopは、ApacheのWebページから2.4.1をダウンロードして展開します。Windowsだとパス長の問題があるので、比較的浅い位置(c:\hdc)とかに展開してください。

ビルド

Windows コマンドプロンプトではなく、Windows SDKのコマンドプロンプトを開きます。多分文字が黄色です。そこで、以下のように入力すれば、とりあえずビルド完了するでしょう。

mvn compile -Pnative-win

エラーが出たら、メッセージの指示にしたがって、-e パラメータを付けたりしてデバッグしながら、やればうまく行くはずです。私も何回か、Try & Errorでした。

で、以下ビルドした結果画像です。

Image-2014-07-25-175945-001.png

これ以降はまた別の機会に。

で、最終的にバイナリ入りのtarballを作るには、

mvn package -Pdist,native-win -DskipTests -Dtar

を実行する必要があります。ビルドには、ちょっと時間がかかりますが、成功すると、

hadoop-dist\target\hadoop-2.4.1.tar.gz

が出来るはずです。Windows向けのバイナリも同梱されているでしょう。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1