HadoopのHDFS確認とサンプルプログラムの実行
前回作成したHadoop環境でHDFSの確認を行います。
その後、HDFSを使うサンプルプログラムを実行します。
参考サイト:http://archive.cloudera.com/docs/cdh3-pseudo-distributed.html
準備
inputディレクトリを作成する
$ hadoop-0.20 fs -mkdir input
作成されたか確認する
$ hadoop-0.20 fs -ls Found 1 items drwxr-xr-x - root supergroup 0 2010-06-01 22:49 /user/root/input
$ hadoop-0.20 fs -put /etc/hadoop-0.20/conf/*.xml input
コピーされたか確認
$ hadoop-0.20 fs -ls input Found 6 items -rw-r--r-- 1 root supergroup 3936 2010-06-01 22:53 /user/root/input/capacity-scheduler.xml -rw-r--r-- 1 root supergroup 338 2010-06-01 22:53 /user/root/input/core-site.xml -rw-r--r-- 1 root supergroup 3032 2010-06-01 22:53 /user/root/input/fair-scheduler.xml -rw-r--r-- 1 root supergroup 4190 2010-06-01 22:53 /user/root/input/hadoop-policy.xml -rw-r--r-- 1 root supergroup 496 2010-06-01 22:53 /user/root/input/hdfs-site.xml -rw-r--r-- 1 root supergroup 213 2010-06-01 22:53 /user/root/input/mapred-site.xml
サンプルプログラムの実行
サンプルプログラムに入っている「grep」サンプルを実行
$ hadoop-0.20 jar /usr/lib/hadoop-0.20/hadoop-*-examples.jar grep input output 'dfs[a-z.]+'
実行中は以下のように出力される
ログをよく見ると、jobが二回走っている事が分かる
これはgrepが二段のMapReduceでできているから
一段目:grep-search
二段目:grep-sort
10/06/01 22:56:49 INFO mapred.FileInputFormat: Total input paths to process : 6 10/06/01 22:56:50 INFO mapred.JobClient: Running job: job_201006012248_0001 10/06/01 22:56:51 INFO mapred.JobClient: map 0% reduce 0% 10/06/01 22:57:18 INFO mapred.JobClient: map 33% reduce 0% 10/06/01 22:57:27 INFO mapred.JobClient: map 66% reduce 0% 10/06/01 22:57:33 INFO mapred.JobClient: map 100% reduce 11% 10/06/01 22:57:39 INFO mapred.JobClient: map 100% reduce 100% 10/06/01 22:57:41 INFO mapred.JobClient: Job complete: job_201006012248_0001 10/06/01 22:57:41 INFO mapred.JobClient: Counters: 18 10/06/01 22:57:41 INFO mapred.JobClient: Job Counters 10/06/01 22:57:41 INFO mapred.JobClient: Launched reduce tasks=1 10/06/01 22:57:41 INFO mapred.JobClient: Launched map tasks=6 10/06/01 22:57:41 INFO mapred.JobClient: Data-local map tasks=6 (途中略) 10/06/01 22:58:06 INFO mapred.JobClient: Map output bytes=86 10/06/01 22:58:06 INFO mapred.JobClient: Map input bytes=118 10/06/01 22:58:06 INFO mapred.JobClient: Combine input records=0 10/06/01 22:58:06 INFO mapred.JobClient: Map output records=4 10/06/01 22:58:06 INFO mapred.JobClient: Reduce input records=4
実行はWeb画面でも確認できる
http://localhost:50030/
結果の確認
$ hadoop-0.20 fs -ls Found 2 items drwxr-xr-x - root supergroup 0 2010-06-01 22:53 /user/root/input drwxr-xr-x - root supergroup 0 2010-06-01 22:58 /user/root/output
outputディレクトリの下にpart-****ファイルが作成される
$ hadoop-0.20 fs -ls output Found 2 items drwxr-xr-x - root supergroup 0 2010-06-01 22:57 /user/root/output/_logs -rw-r--r-- 1 root supergroup 62 2010-06-01 22:57 /user/root/output/part-00000
出力された結果を見てみる
$ hadoop-0.20 fs -cat output/part-00000 | head 1 dfs.name.dir 1 dfs.permissions 1 dfs.replication 1 dfsadmin
4つ見つかった、と言う結果
これをWeb画面で確認する事もできる
http://localhost:50070/
→
→
※ このサンプル、連続で実行すると「FileAlreadyExistsException」でアベンドする
これはoutputディレクトリが既に作られてる事が原因
ディレクトリを削除して実行するとうまくいく
$ hadoop-0.20 fs -rmr output