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.shstart-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 まで。