Hadoop > Hadoopを、シングルノード上で分散処理させる方法

更新日 2012-02-12
広告
Hadoopを、単一のマシン上で分散処理させる方法を紹介します。 ちなみに、インストール手順はこちら

設定ファイルの編集

まず、conf/core-site.xmlにて、ネームノードのアドレスを設定します。ネームノードは、Hadoop全体を管理するプロセスです。
<configuration>
  <property>
    <name>fs.default.name</name>
    <value>hdfs://localhost:9000</value>
  </property>
</configuration>
conf/hdfs-site.xmlでは、データの複製数を設定します。今回は単一のマシン上でHadoopを動作させるので、複製数は1とします。
<configuration>
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
</configuration>
conf/mapred-site.xmlでは、JobTrackerのアドレスを設定します。JobTrackerは、MapReduceの処理を管理するプロセスです。 これも、localhostとします。
<configuration>
  <property>
    <name>mapred.job.tracker</name>
    <value>localhost:9001</value>
  </property>
</configuration>

SSH自動ログインの設定

ローカルホストに対して、SSHで自動ログインできるように設定します。

HDFSの初期化

HDFS (Hadoop Distributed File System)を初期化します。
[hadoop-0.21.0]$ ./bin/hadoop namenode -format
DEPRECATED: Use of this script to execute hdfs command is deprecated.
Instead use the hdfs command for it.

10/10/07 15:49:45 INFO namenode.NameNode: STARTUP_MSG: 
/************************************************************
STARTUP_MSG: Starting NameNode
10/10/07 15:49:46 INFO common.Storage: Storage directory /tmp/hadoop-hoge/dfs/name has been successfully formatted.
10/10/07 15:49:46 INFO namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at local/192.168.0.5
************************************************************/
いきなりDEPRECATEDと出てるけど、'successfully formatted'らしいので、よしとします。/tmp以下にhadoop用のディレクトリが生成されます。

Hadoopの起動

Hadoopの実行は ./bin/start-all.sh スクリプトを実行すればよいです。 ただ、 バージョン0.21では、以下のメッセージが表示されます。
This script is Deprecated. Instead use start-dfs.sh and start-mapred.sh
start-all.shを実行したあと、psコマンドでプロセスを表示してみると、Hadoop関連の5つのプロセスが起動していることを確認できるはずです。
org.apache.hadoop.hdfs.server.datanode.DataNode
org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode
org.apache.hadoop.mapred.TaskTracker
org.apache.hadoop.hdfs.server.namenode.NameNode
org.apache.hadoop.mapred.JobTracker
このとき、ブラウザから localhost:50070 にアクセスすると、ネームノードの情報を見れます。また、localhost:50030 にアクセスすると、JobTrackerの情報を見れます。

動作確認

Hadoop上で、ファイルに対するgrep処理を実行してみます。まず、HDFS上に、grepの対象となるデータ(今回はconfディレクトリ)を用意します。
$ bin/hadoop fs -put conf hoge
'hoge'は、追加するデータに紐づけるキーです。別に何でもよいです。この状態でブラウザからNameNodeの情報を見ると、DFS Used(ディスク消費量)の値が増えているはずです。
confディレクトリに対して、grep処理を実施してみます。
$ ./bin/hadoop jar hadoop-0.20.2-examples.jar grep hoge output 'dfs[a-z.]+'
検索対象はconfディレクトリなので、先ほど指定したキー'hoge'を引数として渡してやります。'output'は、検索結果のデータに紐づけるキーです。これも、別の文字列でも大丈夫です。
処理結果は、次のコマンドで、hadoopから取得できます。
$ ./bin/hadoop fs -get output result
先ほど指定した'output'というキーにより、検索結果を指定しています。 また、'result'は、hadoopから取得した検索結果の保存先です。 ディレクトリresult内に、検索結果が保存されているはずです。
広告
お問い合わせは sweng.tips@gmail.com まで。
inserted by FC2 system