某所で書いた記事の使い回しです:
「疑似分散環境では、HDFSはいつフォーマットするの?」
Hadoopをインストールした後、正しくインストールされているかどうかを確認するために、HDFSにアクセスすることが多いでしょう。
通常 HDFSのフォーマットは hadoop namenode -format コマンドを実行して行いますが、CDH3のパッケージを使用した疑似分散環境ではコマンドを実行する必要はありません。
例えばRedHat系のRPMパッケージ、hadoop-0.20-conf-pseudo RPMを使ってインストールすると、疑似分散環境用の設定ファイルを提供するのと同時に、HDFSのフォーマットも行います。
インストールされるファイル
[root@localhost ~]# rpm -ql hadoop-0.20-conf-pseudo /etc/hadoop-0.20/conf.pseudo /etc/hadoop-0.20/conf.pseudo/README /etc/hadoop-0.20/conf.pseudo/capacity-scheduler.xml /etc/hadoop-0.20/conf.pseudo/configuration.xsl /etc/hadoop-0.20/conf.pseudo/core-site.xml /etc/hadoop-0.20/conf.pseudo/fair-scheduler.xml /etc/hadoop-0.20/conf.pseudo/hadoop-env.sh /etc/hadoop-0.20/conf.pseudo/hadoop-metrics.properties /etc/hadoop-0.20/conf.pseudo/hadoop-policy.xml /etc/hadoop-0.20/conf.pseudo/hdfs-site.xml /etc/hadoop-0.20/conf.pseudo/log4j.properties /etc/hadoop-0.20/conf.pseudo/mapred-queue-acls.xml /etc/hadoop-0.20/conf.pseudo/mapred-site.xml /etc/hadoop-0.20/conf.pseudo/masters /etc/hadoop-0.20/conf.pseudo/slaves /etc/hadoop-0.20/conf.pseudo/ssl-client.xml.example /etc/hadoop-0.20/conf.pseudo/ssl-server.xml.example /etc/hadoop-0.20/conf.pseudo/taskcontroller.cfg /var/lib/hadoop-0.20 /var/lib/hadoop-0.20/cache
フォーマットを行うスクリプト部分
[root@localhost ~]# rpm -q --scripts hadoop-0.20-conf-pseudo postinstall scriptlet (using /bin/sh): alternatives --install /etc/hadoop-0.20/conf hadoop-0.20-conf /etc/hadoop-0.20/conf.pseudo 30 if [ ! -e /etc/hadoop-0.20/conf ]; then ln -s /etc/hadoop-0.20/conf.pseudo /etc/hadoop-0.20/conf fi nn_dfs_dir="/var/lib/hadoop-0.20/cache/hadoop/dfs" if [ -z "$(ls -A $nn_dfs_dir 2>/dev/null)" ]; then HADOOP_NAMENODE_USER=hdfs hadoop-0.20 --config /etc/hadoop-0.20/conf.pseudo namenode -format 2>/dev/null 1>/dev/null || : fi preuninstall scriptlet (using /bin/sh): if [ "$1" = 0 ]; then alternatives --remove hadoop-0.20-conf /etc/hadoop-0.20/conf.pseudo rm -f /etc/hadoop-0.20/conf fi # non-noarch files (aka architectural specific files)
従って、少々わかりにくいですが、CDH3のパッケージを使用した疑似分散環境の構築では、明示的にHDFSのフォーマットを行う必要はありません。同様に、CDH3のパッケージを利用した場合には、インストール時にhdfsユーザーやmapredユーザー等の作成等、hadoop環境の構築に必要な作業を行っています。tarballからのインストールやコミュニティ版のhadoopを利用する場合、これらの作業はユーザ自身が行う必要がありますので注意してください。
ほとんどのユーザーにとって、パッケージを利用したインストールやKickstartなどの自動インストール、PuppetやChefを使った設定ファイルの管理、Cloudera Enterpriseなどのような大規模構成管理ツールの利用はヒューマンエラーを防ぐために望ましい方法ですが、その内部で何が行われているのかを知っておくと、きっと役立つことがあるでしょう。
