2011/08/19

EclipseでMapReduceプログラミング

この記事でとりあえず開発環境ができたので、
MapReduceのベーシックなサンプルでもあるWordCountをEclipseで書いてみる。
  1. 新規プロジェクトの作成
  2. WordCountの作成
  3. プログラムの実行
----------------------------------------------------------------
1.新規プロジェクトの作成
Eclipseにhadoopのプラグインを入れているので、
「新規プロジェクト」ダイアログから「Map/Reduce Project」を選択できるようになっている。
なので、「Map/Reduce Project」を使って新規プロジェクトを作成。

はじめて作成するので、「Configure Hadoop install directory ...」
からWindowsにインストールしておいたHadoopのインストールディレクトリを設定。

2. WordCountの作成
Hadoop徹底入門を参考に、WordCountのプログラムを書き書き...
こちらのサイトも参考に...
Hadoop WordCountメモ(Hishidama's Hadoop tutorial WordCount Memo)

3. プログラムの実行
[実行]-[Run on Hadoop]を使いこなせなかったので、
2で参考にしたサイトの「Eclipseからデバッグ実行」をお手本にJavaアプリケーションとして実行してみた。

MapReduceはうまく動いたけど、Run on Hadoopで実行してみたかったな...
Run on Hadoopって分散モードで実行するときに使うのかな?だとしたら、分散モードで使えるように設定を変更しなきゃなのかな?
この件は引き続きがんばる。

=====
今日の環境
OS:WindowsXP sp3
Hadoop 0.20.2

2011/08/17

WindowsXP で Hadoop の開発環境をつくる

手持ちのマシン(XPさん)でHadoopをアレコレするための準備。

前提は、Win の Eclipse でコードを書き、ローカルモードで動作確認。
分散環境での動作確認は別途VMを作成して、そこで行う。

やることはとりあえず、大きく2つ。
  1. Hadoop(0.20系)をWindowsXP上で起動(ローカルモード)できるようにする
  2. EclipseでHadoopの開発ができるようにする
    →Eclipse(3.7)は既にインストール済み

 ----------------------------------------------------------------
1. Hadoop(0.20系)をWindowsXP上で起動できるようにする

参考にしたサイト
Hadoop/Windows上での実行(0.20.2) - Yoshimopedia

大まかな手順
  1. JAVA_HOMEの設定
  2. Cygwinのインストール
  3. Hadoopの導入
  4. bin/hadoopを編集
  5. 設定ファイルを編集

1. JAVA_HOMEの設定
ユーザー環境変数「JAVA_HOME」にJREのインストール先を設定する
2. Cygwinのインストール
インストール先の指定特にないようなので、C:\直下にインストール。
システム環境変数「Path」に C:\cygwin\bin;C:\cygwin\usr\bin を追加。

3. Hadoopの導入
hadoop-0.20.2.tar.gz をダウンロードして、任意(※)の場所に展開。
※:Program Filesは避けたほうがいいみたい。

なので、C:\直下に展開。
4. bin/hadoopを編集
JAVA_PLATFORM=`CLASSPATH=${CLASSPATH} ${JAVA} -Xmx32m org.apache.hadoop.util.PlatformName sed -e "s/ /_/g"`
の${CLASSPATH}、${JAVA}にダブルクォートを追加し、
JAVA_PLATFORM=`CLASSPATH="${CLASSPATH}" "${JAVA}" -Xmx32m org.apache.hadoop.util.PlatformName sed -e "s/ /_/g"`
と修正。

5. 設定ファイルを編集
conf/core-site.xml
<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>C:\tmp\hadoop</value>
    </property>
</configuration>
※ value の値は作業環境に合わせる。
conf/mapred-site.xml
<configuration>
    <property>
        <name>mapred.job.tracker</name>
        <value>local</value>
    </property>
</configuration>
これで、ローカルモードで MapReduce アプリケーションを動作させることができる。

2. EclipseでHadoopの開発ができるようにする

参考にしたサイト
2009-01-20 - きしだのはてな
Hadoop開発準備のためのEclipseインストール - osacaz4の日記

hadoop にプラグインを追加。

${HADOOP_HOME}/contrib/eclipse-plugin/hadoop-0.20.2-eclipse-plugin.jar

を Eclipse の pluginsフォルダにコピーするだけ。
※:「0.20.2」の部分は先に導入したHadoopのバージョンによって異なる。

=====
今日の環境
OS:WindowsXP sp3
Hadoop 0.20.2

2011/08/16

いまさらだけど、シェバング(shebang)について

「おまじない」として無意識のうちに書いてきたシェバングについて、
いろんなソースを見ていくうちに色々な書き方が出てきたので、改めて整理してみた。

基本的なことについては↓このサイトから。
UNIXの部屋 コマンド検索:shebang (*BSD/Linux)
Kawamura's ChangeLog - シェバング shebang -

#!/bin/sh
って書き方はわかるけど、今回は

#!/usr/bin/env hogehoge
って何!?

って事で、↓このサイトに行き着いた。
どさにっき

スクリプトを実行する環境で、どこにインタープリンタがインストールされているかに依存せずに実行できるようにするために「#!/usr/bin/env」にするって考えだけど、env自体がそもそも環境依存で矛盾が...

なるほどなるほど(゚ー゚)(。_。)(゚-゚)(。_。)
とりあえず、納得はできた。