Fork me on GitHub

Hadoop Windows上での実行(0.20.2)

  • Dec 03, 2010

categoryプラグインは存在しません。

概要

Hadoop 0.20.2をWindows上で起動する方法です。0.20からはWindowsサポートも充実してきたので、パッチあてなどは不要になりました。

環境

手順

Javaのインストール

OracleからJREをダウンロードしてインストールします。インストール先を、JAVA_HOME環境変数に設定しておきます。

Cygwinのインストール

通常通り、Cygwinをインストールします。インストール先はどこでも問題ありません。/bin, /usr/binへのPathは通しておきます。

Hadoopの展開

まずはtar.gzをダウンロードしてきて、任意の場所に展開します。Program Files以外の場所のほうが扱いやすいです。

バッチファイルの修正

bin/hadoopを編集して、

JAVA_PLATFORM=`CLASSPATH=$\{CLASSPATH\} $\{JAVA\} -Xmx32m org.apache.hadoop.util.PlatformName | sed -e "s/ /_/g"`

という行を、

JAVA_PLATFORM=`CLASSPATH="$\{CLASSPATH\}" "$\{JAVA\}" -Xmx32m org.apache.hadoop.util.PlatformName | sed -e "s/ /_/g"`

と修正します。(ダブルクォートを加える)

設定ファイルの編集

  • conf/core-site.xml
<configuration>
<property>
	<name>fs.default.name</name>
	<value>hdfs://hoge:9000</value>
</property>
</configuration>

という感じに設定します。ホスト名は、必ず全てのHadoopクラスタから解決可能なマスタサーバの名前である必要があります。

  • conf/hdfs-site.xml
<configuration>
<property>
	<name>dfs.replication</name>
	<value>1</value>
</property>
<property>
	<name>dfs.support.append</name>
	<value>true</value>
</property>
</configuration>

という感じに設定します。もちろん、クラスタのDataNodeが多い場合は、3などに設定して問題ありません。

  • conf/mapred-site.xml
<configuration>
<property>
	<name>mapred.job.tracker</name>
	<value>localhost:9001</value>
</property>
</configuration>

のようにします。これもHDFS同様、他のマシンから解決可能なマスターサーバのマシン名を指定します。

サーバの起動

あとは各サーバを起動するだけです。Linuxと同じようにsshで起動しても良いですが、以下のように手動で起動するのが楽です。

  • NameNodeの起動

Hadoopのインストール先にCDした後、

bash bin/hadoop namenode -format
bash bin/hadoop-daemon.sh start namenode

と実行します。2回目からは -format は不要です。

  • DataNodeの起動
bash bin/hadoop-daemon.sh start datanode
  • JobTrackerの起動
bash bin/hadoop-daemon.sh start jobtracker
  • TaskTrackerの起動
bash bin/hadoop-daemon.sh start tasktracker

マスタサーバで必須なのはNameNodeとJobTracker、スレーブでは任意でDataNodeとTaskTrackerを起動します。各サーバの起動タイミングはある程度前後しても問題ありません。

サービスとして起動

core-site.xmlに以下の設定を追加。

<property>
 <name>hadoop.tmp.dir</name>
 <value>/tmp/hadoop</value>
 <description>ユーザによって作業ディレクトリが変わらないように</description>
</property>

hdfs-site.xmlに以下の設定を追加。

<property>
 <name>dfs.permissions</name>
 <value>false</value>
 <description>Jobをシステム以外のユーザが投入できるように</description>
</property>

通常通りformatした後、0.16.3と同様、

cygrunsrv --install HadoopNamenode --path c:\cygwin\bin\bash.exe --chdir c:\hadoop --args "bin/hadoop namenode"
cygrunsrv --install HadoopJobtracker --path c:\cygwin\bin\bash.exe --chdir c:\hadoop --args "bin/hadoop jobtracker"
cygrunsrv --install HadoopDatanode --path c:\cygwin\bin\bash.exe --chdir c:\hadoop --args "bin/hadoop datanode"
cygrunsrv --install HadoopTasktracker --path c:\cygwin\bin\bash.exe --chdir c:\hadoop --args "bin/hadoop tasktracker"

などとしてサービスを登録。

Hadoopを利用

あとは、どこかにインストールしたHadoopから

bash bin/hadoop fs -ls /

などとしてコマンドを発行すれば利用できます。

commentプラグインは存在しません。