LoginSignup
7
5

More than 5 years have passed since last update.

Hadoop 2.7.1を擬似分散モードで動かす

Last updated at Posted at 2015-08-29

インストール

以前、ソースコードからビルドした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配下の設定ファイルに、擬似分散モードで動かすための設定をします。

core-site.xml
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>
hdfs-site.xml
<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フレームワークを動かす設定をします。

yarn-site.xml
<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で動作させる場合にはスワップを避けるために下げておいたほうがいいのですが、めんどいので省略。

mapred-site.xml
<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

バージョンが上がるとちょいちょい見た目や表示項目が変わりますねー

以上。

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5