自分用メモ

質問・意見はこちらのスレッドで承ります。

ディレクトリHADOOP_HOMEで作業を行う場合。
  • ディレクトリ構成
{HADOOP_HOME}/workspace/
        ┗━ Test.java

方法1:classファイルを用いる場合

1.コンパイル
javac -classpath hadoop-0.20.2-core.jar workspace/Test.java
{HADOOP_HOME}/workspace/
        ┣━Test.java
        ┗━Test.class
2.クラスファイルのある場所をHADOOP_CLASSPATHに追加
export HADOOP_CLASSPATH=workspace
3.Hadoopを起動
4.実行
bin/hadoop Test

方法2:jarファイルを用いる場合

1.プログラム作成
クラスファイルのある場所を明確にするため、先頭に以下の一行を加える。
これを怠るとコンパイルは通るが、実行できない。
package workspace;
2.コンパイル
javac -classpath hadoop-0.20.2-core.jar workspace/Test.java
3.jarアーカイブファイルに統合
jar -cvf workspace/test.jar workspace
{HADOOP_HOME}/workspace/
         ┣━Test.java
         ┣━Test.class
         ┗━test.jar
4.hadoop起動
5.アプリケーション実行
bin/hadoop jar workspace/test.jar workspace.Test

サンプルプログラム実行

WordCount.java

1.HADOOP_HOMEに作業用ディレクトリを作成
mkdir {HADOOP_HOME}/workspace/wordcount
2.wordcount内にWordCount.javaを作成
WordCount.java
3.コンパイル
javac -classpath hadoop-${HADOOP_VERSION}-core.jar -d workspace/wordcount workspace/wordcount/WordCount.java
jar -cvf workspace/wordcount/wordcount.jar -C workspace/wordcount/ .
警告が出るがスルー
4.wordcount内に入力として使用するサンプルテキストファイル作成
  • file01
Hello World Bye World 
  • file02
Hello Hadoop Goodbye Hadoop
準備完了。
5.Hadoop起動
6.入力用ディレクトリ作成
bin/hadoop fs -mkdir wordcount/input
7.ローカルからファイルコピー
bin/hadoop fs -copyFromLocal workspace/wordcount/file01 wordcount/input
bin/hadoop fs -copyFromLocal workspace/wordcount/file02 wordcount/input
8.アプリケーション実行
bin/hadoop jar workspace/wordcount/wordcount.jar org.myorg.WordCount wordcount/input wordcount/output 
9.出力を確認
bin/hadoop fs -cat wordcount/output/part-00000  
10.こんな感じで出力されれば成功
Bye 1
Goodbye 1
Hadoop 2
Hello 2
World 2
エラーに注意

管理人/副管理人のみ編集できます