連載
» 2017年02月21日 05時00分 UPDATE

きょうから試せる Hadoop“スモールスタート”ガイド(4):Hadoopの疑似分散モードと完全分散モードを試す (1/4)

実際にHadoopで処理を実装していきながら「Hadoopは、誰にだって扱える」を体感しましょう。今回は「Hadoopの疑似分散モード」「完全分散モードでHadoopクラスタを構築する手順」を解説します。

[佐々木達也,著]

連載目次

Hadoopファーストガイド

書籍の中から有用な技術情報をピックアップして紹介する本シリーズ。今回は、秀和システム発行の書籍『Hadoopファーストガイド(2012年9月20日発行)』からの抜粋です。

ご注意:本稿は、著者及び出版社の許可を得て、そのまま転載したものです。このため用字用語の統一ルールなどは@ITのそれとは一致しません。あらかじめご了承ください。


疑似分散モードと完全分散モードでHadoopを動かしてみる

 前回体験したHadoopのスタンドアロンモードに続き、今回はHadoopを疑似分散モードと完全分散モードで動かしてみます。Hadoopの疑似分散モードと完全分散モードではスタンドアロンモードと違い、ジョブトラッカーやタスクトラッカー、ネームノード、データノードなどがデーモンとして起動します。そのため、Hadoopを複数のノードで稼働させる場合はそれぞれのノードで適切なデーモンを稼働させる必要があります。といっても難しいことはなく、Hadoopに付属しているスクリプトをマスターノード上で実行するだけで各サーバで必要とされるデーモンを自動的に起動させることができます。

 このスクリプトは内部的に、SSH(Secure SHell)通信を使って対象マシンにリモートログインして、Hadoopのデーモンを立ち上げる、という仕組みになっています。その中ではSSHのパスフレーズなしでログインする設定になっているため、あらかじめHadoopのデーモンを起動するにはパスフレーズなしでSSHログインできるように設定しておく必要があります。

 鍵が出来たことも確認しておきましょう。.sshフォルダを見れば秘密鍵と公開鍵が作成されていることがわかります。

 続いて、生成された鍵ペアのうち、公開鍵(~/.ssh/id_dsa.pub)の内容をauthorized_keysファイル(~/.ssh/authorized_keys)に追加します。

 完全分散モードでは、SSHで別のノードにログインしてそのサーバ上にタスクトラッカーやデータノードを起動します。一方の疑似分散モードでは1台で(疑似的に)すべてを動かすために、localhostに対してSSHでログインする形でタスクトラッカーやデータノードを起動していきます。そのため、localhostに対してパスワード無しでSSHログインできるようにしておく必要があります。

 これでlocalhostに対してパスワード無しでSSHログインできるようになりました。初回のみ確認のメッセージが表示されますが、2回目以降は表示されません。

 さらに、疑似分散モードで動かすための設定を行っていきます。$HADOOP_INSTALL/confディレクトリの中にあるcore-site.xml、mapred-site.xml、hdfs-site.xmlという3つの設定ファイルにパラメータを追加してください。いずれも<configuration></configuration>内に<property>...</property>の4行を追加するだけです。

$HADOOP_INSTALL/conf/core-site.xml
$HADOOP_INSTALL/conf/mapred-site.xml
$HADOOP_INSTALL/conf/hdfs-site.xml

HDFSのフォーマット

 疑似分散モードでHadoopを起動する前に、最初に一度だけHadoopの分散ファイルシステムであるHDFSのフォーマットが必要です。以下のコマンドを実行してください。

 これで、HDFSの管理ファイルが/tmp/hadoop-hadoop/dfs/name以下に作られました※7

 ※7 /tmp/hadoop-[ユーザ名]/dfs/nameです

デーモンの起動

 では、デーモンを起動してみましょう。Hadoopのパッケージに付属しているシェルスクリプト「start-all.sh」を使います。

 表示されたメッセージから、ネームノード、データノード、セカンダリーネームノード、ジョブトラッカー、タスクトラッカーと、5つのデーモンが起動している様子がわかると思います。実際の運用時(完全分散モード)ではデータノード、タスクトラッカーは通常別ノードで起動しますが、今回は疑似分散モードなのでネームノードやジョブトラッカーも含めてすべてlocalhost上で(1台で)起動しました。

 起動中のJavaアプリケーションのプロセスIDだけを表示する「jps」コマンドを使うとプロセスがきちんと起動しているかが簡単に確認できます。

 ここからも、すべてのプロセスが存在していることがわかります。なお、ネームノードとジョブトラッカーに対してはWebインタフェースも提供されていますので、それぞれ以下のURLでアクセスできます。

  • http://localhost:50070/
  • http://localhost:50030/
図3-3 ネームノード(http://localhost:50070/) ネームノード(http://localhost:50070/)
図3-4 ジョブトラッカー(http://localhost:50030/) ジョブトラッカー(http://localhost:50030/)
       1|2|3|4 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。