インストール
以前、ソースコードからビルドした2.7.1を使います。ソースコードからのビルド手順はこちら
hadoop-dist/target配下にあるtar ballを使います。
$ mv hadoop-dist/target/hadoop-2.7.1.tar.gz /usr/loca/
# cd /usr/local
# tar zxf hadoop-2.7.1.tar.gz
# ln -s /usr/local/hadoop-2.7.1/ /usr/local/hadoop
# chown -R hadoop:hadoop /usr/local/hadoop
環境変数の設定
hadoopを動かすユーザ(今回はhadoopユーザ)の環境変数を設定します。
export JAVA_HOME=/usr/java/latest
export HADOOP_PREFIX=/usr/local/hadoop
export PATH=$HADOOP_PREFIX/bin:$HADOOP_PREFIX/sbin:$PATH
SSHの設定
自分自身(localhost)にパスワードなしでログインできるようにします。Hadoopを立ち上げる際にstart-dfs.shといったスクリプトを使えるようにするためです。
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
HDFSの設定
/usr/local/hadoop/etc/hadoop配下の設定ファイルに、擬似分散モードで動かすための設定をします。
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
NameNodeの初期化
$ hdfs namenode -format
メッセージがいっぱい出ますが、
15/08/29 11:00:41 INFO common.Storage: Storage directory /tmp/hadoop-hadoop/dfs/name has been successfully formatted.
というようにあれば成功してます。このあたり、もう少し見やすくならないかな。。。
HDFSの起動
NameNodeプロセスとDataNodeプロセスを立ち上げます。付属のstart-dfs.shスクリプトを使います。
$ start-dfs.sh
$ jps
13888 SecondaryNameNode
13553 DataNode
13331 NameNode
14084 Jps
dfsadminでちゃんとDataNodeが認識されていること、およびNameNodeがSafe modeになっていないことをチェック。
$ hdfs dfsadmin -report
Configured Capacity: 18746441728 (17.46 GB)
Present Capacity: 4078813184 (3.80 GB)
DFS Remaining: 4078809088 (3.80 GB)
DFS Used: 4096 (4 KB)
DFS Used%: 0.00%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
Missing blocks (with replication factor 1): 0
-------------------------------------------------
Live datanodes (1):
Name: 127.0.0.1:50010 (localhost)
Hostname: localhost
Decommission Status : Normal
Configured Capacity: 18746441728 (17.46 GB)
DFS Used: 4096 (4 KB)
Non DFS Used: 14667628544 (13.66 GB)
DFS Remaining: 4078809088 (3.80 GB)
DFS Used%: 0.00%
DFS Remaining%: 21.76%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Sat Aug 29 11:03:58 JST 2015
YARNの設定
/usr/local/hadoop/etc/hadoop配下のファイルにYARN上でMapReduceフレームワークを動かす設定をします。
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
</configuration>
NodeManagerが利用するメモリ量がデフォルトで最大8GBになっているので非力なノートPCで動作させる場合にはスワップを避けるために下げておいたほうがいいのですが、めんどいので省略。
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.job.ubertask.enable</name>
<value>true</value>
</property>
</configuration>
mapreduce.job.ubertask.enable
は、軽いMapReduceジョブの実行をApplicationMaster内で完結させる機能を有効化するために記載しておきます。擬似分散モードで動かすようなジョブだと、uberモードの恩恵を受けやすいはず。
YARNの起動
$ start-yarn.sh
$ jps
13888 SecondaryNameNode
13553 DataNode
13331 NameNode
15204 ResourceManager
15352 NodeManager
15465 Jps
NodeManagerがResourceManagerから認識されているかチェック。
$ yarn node -list
15/08/29 11:11:38 INFO client.RMProxy: Connecting to ResourceManager at /0.0.0.0:8032
Total Nodes:1
Node-Id Node-State Node-Http-Address Number-of-Running-Containers
localhost:40945 RUNNING localhost:8042
MapReduce用のJobHistoryServerの起動
MapReduceジョブのhistory情報をWeb UIから見るためにJobHistoryServerを起動しておきます。これを立てておかないと、ResoruceManagerのWebUIから各アプリケーションの「history」リンクを踏んでもNot Foundになっていまいます。
$ mr-jobhistory-daemon.sh start historyserver
$ jps
13888 SecondaryNameNode
13553 DataNode
13331 NameNode
15204 ResourceManager
18183 JobHistoryServer
15352 NodeManager
18217 Jps
サンプルジョブの実行
とりあえずのPI計算ジョブを。
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar pi 2 100
Number of Maps = 2
Samples per Map = 100
Wrote input for Map #0
Wrote input for Map #1
Starting Job
(略)
Job Finished in 20.804 seconds
Estimated value of Pi is 3.12000000000000000000
ちなみに、まじめに計測はしていませんが、uberモードのありとなしでは、平均40秒くらいから平均20秒くらいになるくらいの効果がありました。
WebUIを見る
Webブラウザで以下にアクセス。
- NameNode : localhost:50070
- ResourceManager : localhost:8088
- JobHistoryServer : localhost:19888
バージョンが上がるとちょいちょい見た目や表示項目が変わりますねー
以上。