Pocket

Hadoop 疑似分散モードでの起動検証1

  • add this entry to hatena bookmark

Hadoop上で、HDFSの機能を確認する為、疑似分散モードで起動検証を行いました。

書籍「Hadoop 徹底入門」を一読しておいたのですが、検証したHadoopバージョンが書籍記載のバージョンと異なっていたので、多少戸惑いましたが、無事進める事が出来ました。

以下に、実行結果を記載しておきます。

インストール

Hadoopのダウンロードサイトを見ると、「1.0.X – current stable version, 1.0 release」との事ですので、「hadoop-1.0.3-1.x86_64.rpm」をダウンロードし、インストールする事にします。

# wget http://ftp.riken.jp/net/apache/hadoop/common/hadoop-1.0.3/hadoop-1.0.3-1.x86_64.rpm
# rpm -ivh hadoop-1.0.3-1.x86_64.rpm
Preparing... ########################################### [100%]
1:hadoop ########################################### [100%]
# rpm -qa | grep hadoop
hadoop-1.0.3-1.x86_64
#

インストールが終わった時点で、以下の通り、Hadoopアカウントとグループが作成されます。

# cat /etc/passwd | grep Hadoop
mapred:x:202:123:Hadoop MapReduce:/tmp:/bin/bash
hdfs:x:201:123:Hadoop HDFS:/tmp:/bin/bash
# cat /etc/group | grep hadoop
hadoop:x:123:
#

書籍を見ると、Hadoopの操作を「root」では行っていないので、「hadoop」アカウントを別途作成しました。

# cat /etc/passwd|grep hadoop
hadoop:x:203:123::/home/hadoop:/bin/bash
#

ディレクトリ構成

RPMでインストールすると、以下のようなディレクトリ構成になりました。

/etc/hadoop/ Hadoop関連の各種設定ファイルが配置されています。
/etc/rc.d/init.d/ Hadoop関連のスクリプトが「hadoop-***」というファイル名で計6個配置されています。
/var/log/hadoop/ Hadoop関連のログファイルが配置されます。
/var/run/hadoop/ HadoopデーモンのPIDファイルが配置されます。
/usr/bin/ hadoopコマンドが配置されています。
/usr/sbin/ hadoop関連の一括起動/停止コマンドである、start-all.sh、stop-all.sh が配置されています。

※上記載は「意識が必要かな」という内容のみ記載しています。

設定変更

以下に挙げるファイルを記載の内容で更新しました。

/etc/hadoop/core-site.xml

<configuration>
    <property>
        <name>fs.default.name</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

/etc/hadoop/hdfs-site.xml

<configuration>
    <property>
        <name>dfs.name.dir</name>
        <value>/hadoop/dfs/name</value>
    </property>
    <property>
        <name>dfs.data.dir</name>
        <value>/hadoop/dfs/data</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

/etc/hadoop/mapred-site.xml

<configuration>
    <property>
        <name>mapred.job.tracker</name>
        <value>localhost:9001</value>
    </property>
</configuration>

ディレクトリ準備

以下の通り、ディレクトリの準備作業を行いました。

# mkdir /hadoop
# chmod 777 /hadoop/
# chown -R hdfs:hadoop /hadoop/

SSH公開鍵の配布

疑似分散モードでも、マスターサーバとスレーブサーバの間で通信が発生する為、以下のコマンドでSSH公開鍵を配布します。
なお、作業は「hadoop」アカウントで実施しました。

$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
$ ssh localhost

NameNodeのフォーマット

以下のコマンドで、NameNodeをフォーマットしました。
なお、作業は「hadoop」アカウントで実施しました。

$ hadoop namenode -format
12/08/13 14:55:19 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG:   host = (省略)
STARTUP_MSG:   args = [-format]
STARTUP_MSG:   version = 1.0.3
STARTUP_MSG:   build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.0 -r 1335192; compiled by 'hortonfo' on Tue May  8 20:35:39 UTC 2012
************************************************************/
12/08/13 14:55:19 INFO util.GSet: VM type       = 64-bit
12/08/13 14:55:19 INFO util.GSet: 2% max memory = 2.475 MB
12/08/13 14:55:19 INFO util.GSet: capacity      = 2^18 = 262144 entries
12/08/13 14:55:19 INFO util.GSet: recommended=262144, actual=262144
12/08/13 14:55:20 INFO namenode.FSNamesystem: fsOwner=hadoop
12/08/13 14:55:20 INFO namenode.FSNamesystem: supergroup=supergroup
12/08/13 14:55:20 INFO namenode.FSNamesystem: isPermissionEnabled=true
12/08/13 14:55:20 INFO namenode.FSNamesystem: dfs.block.invalidate.limit=100
12/08/13 14:55:20 INFO namenode.FSNamesystem: isAccessTokenEnabled=false accessKeyUpdateInterval=0 min(s), accessTokenLifetime=0 min(s)
12/08/13 14:55:20 INFO namenode.NameNode: Caching file names occuring more than 10 times
12/08/13 14:55:20 INFO common.Storage: Image file of size 112 saved in 0 seconds.
12/08/13 14:55:20 INFO common.Storage: Storage directory /hadoop/dfs/name has been successfully formatted.
12/08/13 14:55:20 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at (省略)
************************************************************/
$

/etc/hadoop/slaves が、localhost になっている事を確認しておきます。

$ cat /etc/hadoop/slaves
localhost
$

Hadoopの起動

「start-all.sh」を「hadoop」アカウントで実行します。

$ /usr/sbin/start-all.sh
starting namenode, logging to /var/log/hadoop/hadoop/hadoop-hadoop-namenode-(省略).out
localhost: starting datanode, logging to /var/log/hadoop/hadoop/hadoop-hadoop-datanode-(省略).out
localhost: starting secondarynamenode, logging to /var/log/hadoop/hadoop/hadoop-hadoop-secondarynamenode-(省略).out
starting jobtracker, logging to /var/log/hadoop/hadoop/hadoop-hadoop-jobtracker-(省略).out
localhost: starting tasktracker, logging to /var/log/hadoop/hadoop/hadoop-hadoop-tasktracker-(省略).out
$

これで、疑似分散モードでHadoopが起動した事になります。

ログ確認

Hadoopのデーモンログは、「hadoop」アカウントで実行した場合は、/var/log/hadoop/hadoop に配置されます。

Hadoopの停止

「stop-all.sh」を「hadoop」アカウントで実行します。

$ /usr/sbin/stop-all.sh
stopping jobtracker
localhost: stopping tasktracker
stopping namenode
localhost: stopping datanode
localhost: stopping secondarynamenode
$

今回はここまでにします。

次回は、Webインターフェースでの確認などを行いたいと思います。

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*

チェックサイト RSS Feed読者登録はいかがでしょうか?RSS配信中です。