クイックスタート
はじめに
このドキュメントでは、Hadoop Distributed File System (HDFS のアーキテクチャを参照) や Map/Reduce フレームワークがどういうものなのかについて感触をつかんでもらうために、シングルノードの Hadoop を短時間で手軽にインストールして実行できるようにする方法を説明します。実際に Hadoop をインストールしたら、HDFS 上で簡単な操作を行い、サンプルジョブを実行します。
必要なもの
サポートされるプラットフォーム
- GNU/Linux は、開発プラットフォームおよび実用プラットフォームとしてサポートされています。Hadoop は、これまでにも 2000 ノードの GNU/Linux 上でデモンストレーションが行われています。
- Win32 は開発プラットフォームとしてサポートされています。Win32 上では分散処理が十分にテストされていないため、実用プラットフォームとしてはサポートされません。
必要なソフトウェア
Linux と Windows の両方に必要なソフトウェアは、以下のとおりです。
- JavaTM 1.6.x (Sun が配布しているものが望ましい) がインストールされている必要があります。
- リモート Hadoop デーモンを管理する Hadoop スクリプトを使えるようにするために、ssh をインストールし、sshd が実行されている必要があります。
Windows では上記のほかに、次のものも必要です。
- Cygwin - 上記のソフトウェアに加え、シェルサポートのために必要です。
ソフトウェアのインストール
必要なソフトウェアがクラスタにインストールされていない場合は、インストールする必要があります。
たとえば、Ubuntu Linux では次のようにします。
$ sudo apt-get install ssh
$ sudo apt-get install rsync
Windows の場合、cygwin のインストール時に上記の必要なソフトウェアをインストールしなかった場合は、cygwin のインストーラを起動し、次のパッケージを選択します。
- openssh - Net カテゴリ
ダウンロード
Hadoop ディストリビューションを入手するには、Apache ダウンロードミラーサイトのいずれかから最新の安定版リリースをダウンロードします。
Hadoop クラスタを起動するための準備
ダウンロードした Hadoop ディストリビューションを展開します。ディストリビューションに含まれている conf/hadoop-env.sh ファイルを編集し、少なくとも JAVA_HOME が Java のインストール先のルートを指すようにします。
次のコマンドを実行します。
$ bin/hadoop
hadoop スクリプトの使用法が表示されます。
これで、以下の 3 つのサポートされるモードのいずれかで Hadoop クラスタを起動する準備が整いました。
- ローカル (スタンドアロン) モード
- 疑似分散モード
- 完全分散モード
スタンドアロンモードでの実行
デフォルトでは、Hadoop は単一の Java プロセスとして、非分散モードで実行するよう構成されています。この構成は、デバッグ時に役立ちます。
次に示す例では、展開後の conf ディレクトリをコピーして入力として使い、指定した正規表現に一致する行を検索して出力します。出力は、コマンドで指定した output ディレクトリに書き込まれます。
$ mkdir input
$ cp conf/*.xml input
$ bin/hadoop jar hadoop-*-examples.jar grep input output 'dfs[a-z.]+'
$ cat output/*
疑似分散モード
Hadoop はシングルノード上において疑似分散モードで実行することもできます。その場合、各 Hadoop デーモンは独立した Java プロセスとして実行されます。
設定
次の設定を使ってください。
conf/core-site.xml:
| <configuration> |
| <property> |
| <name>fs.default.name</name> |
| <value>hdfs://localhost:9000</value> |
| </property> |
| </configuration> |
conf/hdfs-site.xml:
| <configuration> |
| <property> |
| <name>dfs.replication</name> |
| <value>1</value> |
| </property> |
| </configuration> |
conf/mapred-site.xml:
| <configuration> |
| <property> |
| <name>mapred.job.tracker</name> |
| <value>localhost:9001</value> |
| </property> |
| </configuration> |
パスフレーズなしの ssh のセットアップ
パスフレーズなしの ssh でローカルホストにログインできるかどうか確認します。
$ ssh localhost
パスフレーズなしの ssh でローカルホストにログインできない場合は、次のコマンドを実行します。
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
実行
新しい分散ファイルシステムをフォーマットします。
$ bin/hadoop namenode -format
Hadoop デーモンを起動します。
$ bin/start-all.sh
Hadoop デーモンのログ出力は、${HADOOP_LOG_DIR} ディレクトリ (デフォルトは ${HADOOP_HOME}/logs) に書き込まれます。
NameNode と JobTracker の Web インタフェースにアクセスします。デフォルトでは、次のようになっています。
- NameNode - http://localhost:50070/
- JobTracker - http://localhost:50030/
入力ファイルを分散ファイルシステムにコピーします。
$ bin/hadoop fs -put conf input
あらかじめ用意されているサンプルをいくつか実行してみます。
$ bin/hadoop jar hadoop-*-examples.jar grep input output 'dfs[a-z.]+'
出力ファイルの内容を確認します。
出力ファイルを分散ファイルシステムからローカルファイルシステムにコピーし、内容を確認します。
$ bin/hadoop fs -get output output
$ cat output/*
または
分散ファイルシステム上の出力ファイルの内容を確認します。
$ bin/hadoop fs -cat output/*
作業を終えたら、次のコマンドを実行して Hadoop デーモンを停止します。
$ bin/stop-all.sh
完全分散モードでの実行
完全分散の大規模クラスタをセットアップする方法の詳細については、Hadoop クラスタセットアップを参照してください。
Java および JNI は、米国およびその他の国における Sun Microsystems, Inc. の商標または登録商標です。


