hadoop環境の構築 事前準備
前回ご紹介したhadoopですが、
環境 |
---|
OS : CentOS 5. |
構成 |
hadoop1:masterサーバ…NameNode/ hadoop2, hadoop3:slaveサーバ…DataNode/ |
- NameNode, DataNodeはHDFSのための機能→masterサーバ
- JobTracker, TaskTrackerはMapReduceのための機能→slaveサーバ
NFSはhadoopの設定やプログラムを共通で使用するために導入します
![図1 システム構成図 図1 システム構成図](/assets/images/admin/serial/01/rd_trend/0008/thumb/TH800_001.jpg)
それでは構築作業を進めていきます。
NFSディレクトリの作成
hadoop1に/usr/
hadoop1でディレクトリを作成します。
# mkdir /usr/local/apache_proj
Javaのインストール
hadoopはJavaプラットフォームで動作しますので、
# yum install java-1.6.0-openjdk-devel
とし、
java-1.
host名の設定
hadoop1, hadoop2, hadoop3がお互いがホスト名で通信できるように設定します。ここではそれぞれのサーバの/etc/
私の環境では以下の情報をそれぞれのサーバの/etc/
192.168.47.101 hadoop1
192.168.47.102 hadoop2
192.168.47.103 hadoop3
192.168.47.103 hadoop3
接続確認は、
今回の構成ではLANの中にある安全な環境という前提で、
# /etc/init.d/iptables stop
で停止させておきましょう。また、
hadoopのダウンロード
hadoopのパッケージはHadoop Distributed File System Releasesのページからからダウンロードが可能です。
hadoop1でダウンロードします。
# wget http://www.meisei-u.ac.jp/mirror/apache/dist//hadoop/core/hadoop-0.21.0/hadoop-0.21.0.tar.gz
このパッケージにはhadoopのHDFS、
ダウンロードしたファイルをapache_
# mv hadoop-0.21.0.tar.gz /usr/local/apache_proj # cd /usr/local/apache_proj # tar zxvf hadoop-0.21.0.tar.gz
hadoop-0.
# ln -s hadoop-0.21.0 hadoop
これで、
今後、
hadoop起動ユーザの追加
hadoopのプロセス起動用にユーザを追加します。このユーザがhadoopのプロセスを立ち上げることになります。私の環境では、
hadoop1, hadoop2, hadoop3で以下のコマンドを実行します。
# useradd h
パスなしでのsshができるよう設定する
hadoop起動ユーザはパスワードなしでのsshログインが必要となります。hユーザをパスなしでsshさせるために、
hadoop1で下記を実行します。
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa $ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
ここで作成したauthorized_
コピー後、
環境変数の設定
hユーザの.bashrcを編集し、
export HADOOP_HOME=/usr/local/apache_proj/hadoop
export PATH="$PATH:$HADOOP_HOME/bin"
追記後、
$ scp .bashrc h@hadoop2:~ $ scp .bashrc h@hadoop3:~
これでhadoopコマンドへのpathが通り、
パーミッションの設定
/usr/
# chown -R h:h /usr/local/apache_proj
ディレクトリの設定
hadoopで必要なデータ保存ディレクトリやpidファイルの場所の設定をします。全てのサーバで以下のコマンドを実行します。
# mkdir /usr/loal/hdfs # chwon -R h:h /usr/local/hdfs
hadoopの設定
さてここからがhadoopの設定になります。
以下の作業はh@hadoop1で行います。基本的に設定ファイルは$HADOOP_
Javaへのパスの設定
$HADOOOP_
master, slaveの設定
master
hadoop1
slave
hadoop2
hadoop3
データディレクトリ、PIDファイルの設定
HDFSでのデータ保存用ディレクトリを設定します。デフォルトでは/tmpになっているため、
事前作業で作成したディレクトリを設定します。$HADOOP_
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hdfs/${user.name}</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://hadoop1:9000</value>
</property>
</configuration>
また、
export HADOOP_PID_DIR=/usr/local/hdfs/pids
レプリケーションの設定
HDFSで管理されるデータのレプリケーション数を定義します。設定ファイルは$HADOOP_
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
JobTrackerの設定
MapReduceでのタスク管理サーバの情報を記述します。設定ファイルは$HADOOP_
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>hadoop1:9001</value>
</property>
</configuration>
以上で、
次に、
NFSの設定
ここでは各種設定ファイルの内容を記述しておきます。
hadoop2, 3で以下のディレクトリを作成します。
# mkdir /usr/local/apache_proj
hadoop1の/etc/
/usr/local/apache_proj 192.168.0.0/255.255.0.0(rw,no_root_squash)
hadoop2, hadoop3の/etc/
hadoop1:/usr/local/apache_proj /usr/local/apache_proj nfs defaults 0 0
hadoop1を起動後、
hadoopの起動
それではいよいよhadoopの起動ですが、
$ hadoop namenode -format
画面上にメッセージが流れますが、
10/10/04 08:49:51 INFO namenode.NameNode: SHUTDOWN_MSG: /************************************************************ SHUTDOWN_MSG: Shutting down NameNode at hadoop1/192.168.47.101 ************************************************************/
次にhadoopの起動です。hadoop1でhユーザになって以下のコマンドを実行します。
$ start-all.sh
こちらも画面上にメッセージが流れますが、
RSA key fingerprint is 30:85:64:a1:37:d6:43:25:4c:2e:b4:82:cb:f7:04:76. Are you sure you want to continue connecting (yes/no)? 《中略》 hadoop2: starting tasktracker, logging to /usr/local/apache_proj/hadoop/bin/../logs/hadoop-h-tasktracker-hadoop2.out hadoop3: starting tasktracker, logging to /usr/local/apache_proj/hadoop/bin/../logs/hadoop-h-tasktracker-hadoop3.out
起動の確認
hadoopには管理用のWebページが用意されており、
![図2 HDFSの管理ページ(http://hadoop1:50070/) 図2 HDFSの管理ページ(http://hadoop1:50070/)](/assets/images/admin/serial/01/rd_trend/0008/thumb/TH800_002.jpg)
画面上ではわかりにくいかもしれませんが、
![図3 MapReduceの管理ページ(http://hadoop1:50030/) 図3 MapReduceの管理ページ(http://hadoop1:50030/)](/assets/images/admin/serial/01/rd_trend/0008/thumb/TH800_003.jpg)
こちらもNodesが2となっており、
次回はMapReduceを実際に動作させてみましょう。