Hadoopセットアップ > 古いバージョン(0.23.0)
DEPRECATED!: このバージョンのHadoopは古いです。ご利用は非推奨です。Hadoop2.0セットアップをご参照ください。
目次 †
シングルノード †
0.23.x系最新版をセットアップします。
ローカルモードではなく、1機で分散処理環境を起動させます。以下のインスタンスを起動します。
- プライマリNameNode
- セカンダリNameNode
- DataNode
- ResourceManager?
- NodeManager?
- (MapReduce?)HistoryServer?
0.23.1より、設定ディレクトリとしては、${HADOOP_PREFIX}/conf/ を作成せず、デフォルトと思われる ${HADOOP_PREFIX}/etc/hadoop/ を使用します。
共通 †
- 起動ユーザを追加します。
$ sudo adduser --shell /bin/sh --uid 10001 --disabled-password hadoop
$ sudo adduser --shell /bin/sh --uid 10002 --disabled-password hdfs
$ sudo usermod -G hadoop hdfs
$ sudo adduser --shell /bin/sh --uid 10003 --disabled-password mapred
$ sudo usermod -G hadoop mapred
$ sudo adduser --shell /bin/sh --uid 10004 --disabled-password yarn
$ sudo usermod -G hadoop yarn
- アーカイブを適当な場所に展開します。この説明での $HADOOP_PREFIX とは、Hadoopのインストールルートを示します。
$ ls -la /usr/local
...
lrwxrwxrwx 1 root root 14 2012-04-25 09:32 hadoop -> hadoop-0.23.1/
drwxr-xr-x 11 root root 4096 2012-04-27 14:19 hadoop-0.23.1
- 設定ファイル ${HADOOP_PREFIX}/etc/hadoop/core-site.xml を編集します。Hadoopはデフォルト設定状態でも動作するように(これは正しいことです)、hadoop.tmp.dir のデフォルト値である /tmp/hadoop-${user.name} 以下のディレクトリに、一時作業ファイルはもちろんのこと、ある程度永続化が必要なデータ(主にHDFS関連)までも格納します。文字通りテンポラリという意味での hadoop.tmp.dir 設定は必要ですので、デフォルト設定はそのままとし、以下のセットアップでは永続化が必要なデータの格納場所を適切に設定変更していきます。
- データなどを格納するディレクトリを用意します。
$ sudo mkdir /var/local/hadoop
$ sudo mkdir /var/local/hadoop/cache
$ sudo mkdir /var/local/hadoop/log
$ sudo mkdir /var/local/hadoop/run
$ sudo chown -R hadoop:hadoop /var/local/hadoop
$ sudo chmod -R 775 /var/local/hadoop
HDFS †
- 環境変数を設定します。${HADOOP_PREFIX}/etc/hadoop/hadoop-env.sh は存在しないため、新規に作成します。
- 設定ファイル(${HADOOP_PREFIX}/etc/hadoop/hdfs-site.xml)を編集します。
- パーミッション関係が修正されたようで、superusergroup に(yarnがメンバの)hadoopを追加する必要はなくなりました。
- 0.23.0にあったSLF4Jバインディングの問題は解消しています。
- HDFSをフォーマットします。
$ sudo -u hdfs ./bin/hdfs namenode -format
- 各デーモンを起動します。
$ sudo -u hdfs ./sbin/hadoop-daemon.sh start namenode
$ sudo -u hdfs ./sbin/hadoop-daemon.sh start secondarynamenode
$ sudo -u hdfs ./sbin/hadoop-daemon.sh start datanode
- HDFS上に必要なディレクトリを作成します。HDFS上のSticky bitは、0.21.0以降で使用できます。
$ sudo -u hdfs ./bin/hadoop fs -chown hdfs:hadoop /
$ sudo -u hdfs ./bin/hadoop fs -chmod 755 /
$ sudo -u hdfs ./bin/hadoop fs -mkdir /tmp
$ sudo -u hdfs ./bin/hadoop fs -chown hdfs:hadoop /tmp
$ sudo -u hdfs ./bin/hadoop fs -chmod 1777 /tmp
$ sudo -u hdfs ./bin/hadoop fs -mkdir /user
$ sudo -u hdfs ./bin/hadoop fs -chown hdfs:hadoop /user
$ sudo -u hdfs ./bin/hadoop fs -chmod 755 /user
- Web UIのアクセスURLは以下の通りです。
http://localhost:50070/
YARN †
- 環境変数を設定します(${HADOOP_PREFIX}/etc/hadoop/yarn-env.sh)。以下をファイルの先頭に追加します。将来的には、Hadoop Common、HDFS、YARNおよびHadoop MapReduce?の各プロダクトが分離(配布)される予定のようですが、現時点ではオーバーレイ状態で単一アーカイブとして配布されています。したがって、各プロダクトの $*_HOME 環境変数は等しく配布アーカイブのルートを設定します。設定の便宜上、$HADOOP_PREFIX を定義していますが、必須ではありません。この説明では、便宜上 $HADOOP_PREFIX を使用します。
- 設定ファイルを用意します(${HADOOP_PREFIX}/etc/hadoop/yarn-site.xml)。単一サーバでの検証では、あまりにもリソースが少ないとジョブが実行できない場合がありますので、メモリリソースは多めに設定しておきます。
- 0.23.0にあったSLF4Jバインディングの問題は解消しています。
- ローカルファイルシステム上に必要なディレクトリを作成します。
$ sudo mkdir -p /var/local/hadoop/log/yarn/nm # yarn.nodemanager.log-dirs
$ sudo chown yarn:hadoop /var/local/hadoop/log/yarn
$ sudo chown yarn:hadoop /var/local/hadoop/log/yarn/nm
$ sudo chmod 755 /var/local/hadoop/log/yarn/nm
$ sudo mkdir -p /var/local/hadoop/log/yarn/nm/local # yarn.nodemanager.local-dirs
$ sudo chown yarn:hadoop /var/local/hadoop/log/yarn/nm/local
$ sudo chmod 755 /var/local/hadoop/log/yarn/nm/local
- HDFS上に必要なディレクトリを作成します。
$ sudo -u hdfs ./bin/hadoop fs -mkdir /var/local/hadoop/log/yarn/nm # yarn.nodemanager.remote-app-log-dir
$ sudo -u hdfs ./bin/hadoop fs -chown yarn:hadoop /var/local/hadoop/log/yarn/nm
$ sudo -u hdfs ./bin/hadoop fs -chmod 1777 /var/local/hadoop/log/yarn/nm
- 各デーモンを起動します。0.23.0では以下の起動スクリプトは ${HADOOP_PREFIX}/bin/ にありましたが、${HADOOP_PREFIX}/sbin/ 以下に正しく修正されています。
$ sudo -u yarn ./sbin/yarn-daemon.sh start resourcemanager
$ sudo -u yarn ./sbin/yarn-daemon.sh start nodemanager
- Web UIのアクセスURLは以下の通りです。
http://localhost:8088/ # ResourceManager
http://localhost:9999/ # NodeManager
MapReduce? †
- 設定ファイルを編集します。${HADOOP_PREFIX}/etc/hadoop/mapred-site.xml は存在しないため、新規に作成します。
- 【参考】ドキュメントには説明がありませんが、mapreduce.jobtracker.staging.root.dir の設定はすでに有効ではなく、代替は yarn.app.mapreduce.am.staging-dir のようです。なお、他の関連設定のデフォルト値は以下のようです。
No. | 設定キー | デフォルト値 | 備考 |
---|
1 | yarn.app.mapreduce.am.staging-dir | /tmp/hadoop-yarn/staging | |
2 | mapreduce.jobhistory.intermediate-done-dir | ${yarn.app.mapreduce.am.staging-dir}/history/intermediate_done | mapred-default.xml に見えず |
3 | mapreduce.jobhistory.done-dir | ${yarn.app.mapreduce.am.staging-dir}/history/done | mapred-default.xml に見えず |
- HDFS上に必要なディレクトリを作成します。
$ sudo -u hdfs ./bin/hadoop fs -mkdir /var/local/hadoop/mapred/history
$ sudo -u hdfs ./bin/hadoop fs -chown -R mapred:hadoop /var/local/hadoop/mapred
$ sudo -u hdfs ./bin/hadoop fs -chmod -R 755 /var/local/hadoop/mapred
- 履歴サーバを起動します。起動スクリプト(mr-jobhistory-daemon.sh)は、以前の yarn-daemon.sh から分離されました。
$ sudo -u mapred ./sbin/mr-jobhistory-daemon.sh start historyserver
- 履歴サーバWeb UIのアクセスURLは以下の通りです。
http://localhost:19888/
テスト †
- テストユーザを追加し、サンプルジョブを実行してみます。hadoop-mapreduce-examples-0.23.1.jar も ${HADOOP_PREFIX}/share/ 以下に整理されました。
$ sudo adduser alice
$ sudo -u hdfs ./bin/hadoop fs -mkdir /user/alice
$ sudo -u hdfs ./bin/hadoop fs -chown alice:aclice /user/alice
$ sudo -u alice ./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-0.23.1.jar pi 5 10
...
起動プロセスの推移 †
- ジョブ実行前
$ sudo jps | sort
2879 NameNode
2956 SecondaryNameNode
3006 DataNode
6952 ResourceManager
7075 NodeManager
7367 JobHistoryServer
- ジョブ実行中
$ sudo jps | sort
2879 NameNode
2956 SecondaryNameNode
3006 DataNode
6952 ResourceManager
7075 NodeManager
7367 JobHistoryServer
8860 RunJar
8983 MRAppMaster
9076 YarnChild
9079 YarnChild
9081 YarnChild
9083 YarnChild
9093 YarnChild
- ジョブ終了後
$ sudo jps | sort
2879 NameNode
2956 SecondaryNameNode
3006 DataNode
6952 ResourceManager
7075 NodeManager
7367 JobHistoryServer
参考リソース †
- Apache Hadoop 0.23