O'REILLY Hadoop 第3版のサンプルコードを動かす手順


環境

  • Mac
  • IntelliJ IDEA
  • Java 1.8
  • Maven 3.5.4
  • Hadoop 2.2.0

Java インストール

  • Javaがインストールされていることを確認
$ java -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
  • まだインストールされていなければインストール
$ brew cask install java
  • JAVA_HOMEを設定
$ vi ~/.bash_profile
# 以下の行を末尾などに追加
export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
$ source ~/.bash_profile
$ echo $JAVA_HOME

Maven インストール

  • Mavenがインストールされていることを確認
$ brew list maven
  • まだインストールしていなければインストール
$ brew install maven
  • Mavenがインストールされたことを確認
$ mvn --version
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T03:33:14+09:00)
...
  • MAVEN_HOMEを設定
$ vi ~/.bash_profile
# 以下の行を末尾などに追加
export MAVEN_HOME=/usr/local/Cellar/maven/3.5.4

$ source ~/.bash_profile
$ echo $MAVEN_HOME

Hadoop インストール

第3版のサンプルソースは Hadoop 1.2.1/0.22.0/0.23.x/2.2.0 のバージョンでテストしているとのこと。

ここではver2.2.0のインストールを行う。

  • hadoop-2.2.0.tar.gz をダウンロード、解凍
$ cd ~
$ wget https://archive.apache.org/dist/hadoop/core/hadoop-2.2.0/hadoop-2.2.0.tar.gz
$ tar xvzf hadoop-2.2.0.tar.gz
$ ln -s hadoop-2.2.0 hadoop

(任意) /usr/local に移動して、エイリアスを作成
(※)Macのデフォルトの/usr/localのパーミッションだと、HDFSの起動できないと報告があったので、この手順はやらないでください。

  • HADOOP_HOMEを設定&HadoopのbinをPATHに追加
$ vi ~/.bash_profile
# 以下の行を末尾などに追加
export HADOOP_HOME=$HOME/hadoop
export PATH=$PATH:$HADOOP_HOME/bin

$ source ~/.bash_profile
$ echo $HADOOP_HOME
$ hadoop version
Hadoop 2.2.0
...

O'REILLY Hadoop 本のサンプルコードプロジェクトをチェックアウト

  • 著者のGithubからチェックアウト(第3版のサンプルコードブランチは3e)
$ cd path/to/workdir
$ git clone https://github.com/tomwhite/hadoop-book
$ cd hadoop-book
$ git checkout 3e
  • IntelliJを起動して Import Project を選択

  • Maven を選択後、ひたすら Next ボタンを連打して、最後に Finish ボタンを押す

  • Hadoop ver2.2.0 のjarを使用してサンプルコードをパッケージング

$ mvn package -DskipTests -Dhadoop.distro=apache-2

hadoop-examples.jar がプロジェクト直下に作られた事を確認

$ ll hadoop-examples.jar

サンプル実行

  • 2章のMaxTemparatureクラスを実行
$ cd path/to/workdir/hadoop-book
$ export HADOOP_CLASSPATH=hadoop-examples.jar
$ hadoop MaxTemperature input/ncdc/sample.txt output
  • 実行結果が本に書いてある結果と一致していることを確認
$ cat output/part-r-00000
1949    111
1950    22