■各バージョン

  • CentOS 7 x86_64 (2014_09_29) EBS HVM
  • hadoop-2.6.0

■準備

EC2

AMIは今回、CentOS 7 を選択しました。

Instance Type は、m3.large にしましたが、大きいほうが良いです。

JDK

Hadoop を動かすにはJavaが必要、JDKはJavaに必要なソフトウェアのセットのこと。

Oracle公式サイトから、バージョンを確認して、rpmでinstallします。

今回はLinux環境なので、jdk-8u40-linux-x64.rpmを選んだとします。

1
2
3
4
5
$ rpm -ivh jdk-8u40-linux-x64.rpm
$ java -version
java version "1.8.0_40"
Java(TM) SE Runtime Environment (build 1.8.0_40-b25)
Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode)

インストール後に、Javaのバージョンを確認してみて、”1.8.***“なら成功です。

またパスを通すために/etc/profile.d/java.shに下記のファイルを作成します。

1
2
3
4
#!/bin/bash
export JAVA_HOME=/usr/java/default
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar

実行権限を与えて、読み込みさせておけば完了です。

1
2
chmod +x /etc/profile.d/java.sh
source /etc/profile.d/java.sh

maven

apacheが運営しているソフトウェアプロジェクトの管理ツールのこと。

※ mavenを動かすには、javaが必要です。 公式サイトから、bin.tar.gzをダウンロードしてきて展開します。

1
2
cd /opt/
tar xzvf apache-maven-3.2.5-bin.tar.gz

.bach_profileに下記を追記して、読み込みさせておけば完了です。

1
2
3
export M3_HOME=/opt/apache-maven-3.2.5
M3=$M3_HOME/bin
export PATH=$M3:$PATH

■hadoop

1. hadoop ユーザーを作成

1
2
# useradd hadoop
# passwd hadoop

hadoop ユーザーで、localhostに入れることを確認します。

1
2
3
4
5
6
# su - hadoop
$ ssh-keygen -t rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
$ ssh localhost
$ exit

2. hadoop をダウンロード

mirrorサイトから、hadoopのtar.gzファイルをダウンロードしてきて、展開します。

1
2
3
4
$ cd ~
$ wget http://apache.claz.org/hadoop/common/hadoop-2.6.0/hadoop-2.6.0.tar.gz
$ tar xzf hadoop-2.6.0.tar.gz
$ mv hadoop-2.6.0 hadoop

3. 環境変数

.bashrc に下記を追記して読み込ませる。

1
2
3
4
5
6
7
8
export HADOOP_HOME=/home/hadoop/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

4. hadoop single node cluster の設定ファイル

1
cd $HADOOP_HOME/etc/hadoop

下記のファイル群を編集する。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$ vim core-site.xml
<configuration>
<property>
  <name>fs.default.name</name>
    <value>hdfs://localhost:9000</value>
</property>
</configuration>
[/shell]
[shell title="hdfs-site.xml"]
<configuration>
<property>
 <name>dfs.replication</name>
 <value>1</value>
</property>

<property>
  <name>dfs.name.dir</name>
    <value>file:///home/hadoop/hadoopdata/hdfs/namenode</value>
</property>

<property>
  <name>dfs.data.dir</name>
    <value>file:///home/hadoop/hadoopdata/hdfs/datanode</value>
</property>
</configuration>
1
2
3
4
5
6
7
$ vim mapred-site.xml
<configuration>
 <property>
  <name>mapreduce.framework.name</name>
   <value>yarn</value>
 </property>
</configuration>
1
2
3
4
5
6
7
$ vim yarn-site.xml
<configuration>
 <property>
  <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
 </property>
</configuration>

4. hadoop cluster を起動

※初回起動時は、HDFSデーモンを起動する前にファイルシステムのフォーマットが必要。

1
$ hdfs namenode -format

ここから起動に入ります。

1
2
3
$ cd $HADOOP_HOME/sbin/
$ start-dfs.sh
$ start-yarn.sh

5. Browser で確認

Portを指定してアクセスすることで、Hadoopの各サービスをブラウザから見れます。

Information Port
NameNode 50070
All Applications 8088
Secondary NameNode 50090
DataNode 50075

6. Test

HDFSにディレクトリを作成。

1
2
$ bin/hdfs dfs -mkdir /user
$ bin/hdfs dfs -mkdir /user/hadoop

適当なファイルをコピーして、ブラウザから確認してみる。 http://****:50070/explorer.html#/user/hadoop

1
$ bin/hdfs dfs -put /var/log/httpd logs

π を求めるサンプルプログラムを動かしてみる。

1
2
3
4
$ hadoop jar ~/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar pi 10 10000
……
Job Finished in 48.932 seconds
Estimated value of Pi is 3.14120000000000000000

無事動いてることが確認出来ました!

7. Stop

以下のシェルスクリプトで終了させる。 jpsコマンドで確認する。

1
2
3
$ $HADOOP_HOME/sbin/stop-all.sh
$ jps
4824 Jps

■参考サイト