So-net無料ブログ作成

インフラエンジニアのためのHadoop情報 DataNodeの追加 [Hadoop]

PrimaryNameNode,SecondaryNameNode,JobTracker,TaskTracker,DataNodeが一揃い出来たところ
で、スケールアウトをしてみましょう。
具体的には、DataNode及び、TaskTrackerを担当するノードを増やします。
DataNode、TaskTrackerを1台追加する手順を示します。
まずは、擬似分散用に構築した手順に従って、1台でHadoopが動く環境を準備し、クラスタ構築手順に従って、alternativeの設定までやっておきます。
これをDataNode、TaskTrackerノードとして、今現在動いているクラスタ環境に登録します。
クラスタ環境用の設定は、動いているクラスタ環境のノードからコピーします。
srv1.example.comから、追加するノードへ設定をコピーする例です。
$ mkdir /tmp/conf
$ cd /tmp/conf
$ scp srv1.example.com:/etc/hadoop-0.20/conf/* .
$ sudo chown hadoop:hadoop *
$ cp * /etc/hadoop-0.20/conf/

設定ファイルがコピーできたら、サービスを起動します。
$ sudo /sbin/service hadoop-0.20-datanode start
$ sudo /sbin/service hadoop-0.20-tasktracker start

起動を確認します。
$ sudo /usr/java/jdk1.6.0_20/bin/jps
20836 DataNode
21720 TaskTracker

起動が完了したら、NameNodeとの通信が始まり、クラスタ環境へノードが追加されたことを確認できるはずです。
PrimaryNameNodeへログインしてfsckコマンドを使って確認します。fsckコマンドはHDFS上のファイルシステムの整合性を調べて結果を表示します。そのとき登録されているDataNodeの数も表示されます。
$ hadoop fsck /
 :
 Number of data-nodes:          4
 Number of racks:               1

また、HDFS用のWebUIでも確認できます。ブラウザで以下のURLを指定して確認してみましょう。
http://[PrimaryNameNodeのアドレス]:50070
こちらの画面では、追加されたDataNode上にあるHDFSブロック数も確認できます。(追加直後は0のはず)
サービスが起動しない場合は、まず起動ログを確認してください。
$ sudo cat /var/log/hadoop-0.20/hadoop-hadoop-datanode-xxx.example.com.log

たいていの場合、dfsディレクトリが存在しないか、適切なパーミッションが設定されていません。
CDH2をインストールして、擬似分散をテストしてあれば、適切に設定されているはずですが、インストールしたままテストを実施していないと、ディレクトリが作成されません。
以下のように、ディレクトリを作成し、パーミッションを設定してください。
$ sudo mkdir /var/lib/hadoop-0.20
$ sudo chown hadoop:hadoop /var/lib/hadoop-0.20
$ sudo chmod 1777 /var/lib/hadoop-0.20/cache

1台での起動テストで、テストデータを登録した場合はdfsディレクトリ内のファイルを削除してください。
$ sudo rm -rf /var/lib/hadoop-0.20/cache/hadoop/dfs/data

Hadoopのconfディレクトリがclusterのものに切り替わっているかどうか確認してください。
$ sudo /usr/sbin/alternatives --display hadoop-0.20-conf


この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。