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インターフェースでの確認などを行いたいと思います。