Hadoop Streaming の使い方 5分でできる Perl による Mapper と Reducer
スポンサーリンク
このドキュメントの内容は、以下の通りです。
この例では、Hadoop Streaming を利用し、 Map と Reducer を perl で作成し、 Map Reduce を実行します。ただし、Map 処理は、ほとんど、何もしてません。
UNIX のコマンドを pipe で繋いで、簡単にできる内容です。
sort して、 uniq して、カウントするだけ、といった処理内容です。
入力ファイル
事前に入力用のファイルを用意します。
input/a
c a d d a d
input/a
b c a
実行スクリプト
mapred.sh
Hadoop の処理を実行するためのスクリプトです。
#!/bin/sh HADOOP_HOME=/home/kaworu/Hadoop/hadoop-1.0.3 HADOOP=$HADOOP_HOME/bin/hadoop STREAMING=$HADOOP_HOME/contrib/streaming/hadoop-streaming-1.0.3.jar $HADOOP jar $STREAMING \ -input input -output output \ -mapper $PWD/map.pl -reducer $PWD/reduce.pl
map.pl
Mapper のスクリプトです。
#!/usr/bin/perl -w use strict; sub main { while (<STDIN>) { chomp; #print $_; print $_ . "\t1\n"; #print STDERR $_; } exit (0); } & main;
reduce.pl
Reducer のスクリプトです。
#!/usr/bin/perl -w use strict; my $lastid = ''; my $count = 0; my $id = ''; my $c; while (<STDIN>) { chomp; ($id, $c) = split /\t/; if ($lastid ne $id) { if ($lastid ne '') { print "$lastid\t$count\n"; } $lastid = $id; $count = 1; next; } ++$count; } if ($lastid ne '') { print "$lastid\t$count\n"; }
事前準備
ローカルのファイルの確認をします。
% ls input a b
ローカルのファイルを HDFS に入れます。
% ./bin/hadoop dfs -copyFromLocal /home/kaworu/hadoop/input . % ./bin/hadoop dfs -ls input -rw-r--r-- 1 kaworu supergroup 12 2012-07-04 11:24 /user/kaworu/input/a -rw-r--r-- 1 kaworu supergroup 6 2012-07-04 11:24 /user/kaworu/input/b
コマンドによる確認
Map Reduce の結果は、以下の uniq の処理の出力と同じ内容になることを期待します。
ただし、出力のフォーマットは、異なります。
% ls input a b % cat input/* | sort | uniq -c 3 a 1 b 2 c 3 d
Hadoop の起動
Hadoop は、ダウンロードするか、インストールして下さい。
参考
- http://hadoop.apache.org/releases.html#Download
- [2012-07-01-1] Hadoop を FreeBSD にインストールする
- [2011-12-21-1] FreeBSD で Hadoop 0.22.0 を動かしてみる
./bin/start-all.sh
実行と確認
MapReduce を実行します。
% sh mapred.sh
output を確認しましょう。
% ./bin/hadoop dfs -ls output/ Found 3 items -rw-r--r-- 1 kaworu supergroup 0 2012-07-04 11:32 /user/kaworu/output/_SUCCESS drwxr-xr-x - kaworu supergroup 0 2012-07-04 11:31 /user/kaworu/output/_logs -rw-r--r-- 1 kaworu supergroup 16 2012-07-04 11:32 /user/kaworu/output/part-00000 % ./bin/hadoop dfs -cat output/part-00000 a 3 b 1 c 2 d 3
HDFS の output ディレクトリの削除の仕方。
./bin/hadoop dfs -rmr output
スポンサーリンク
スポンサーリンク
いつもシェア、ありがとうございます!
もっと情報を探しませんか?
関連記事
最近の記事
- パナソニック ジェットウォッシャードルツ EW-DJ61-Wのホースの修理
- LinuxセキュリティモジュールIntegrity Policy Enforcement
- アマゾンのEcho Show 5を買ったのでレビューします
- アマゾンのサイバーマンデーはAlexa Echo Show 5が安い
- Android スマートフォン OnePlus 7T と OnePlus 7の違い
- Android スマートフォン OnePlus 7 をAndroid10にアップデートしてみた
- クレジットカードのバーチャルカードの比較のまとめ
- 活動量計 Xiaomi Mi Band 4を買ってみたのでレビュー
- Android スマートフォン OnePlus 7 のレビュー
- AliExpressでスマートフォンを買い物してみた
- パソコンのホコリ対策 レンジフードフィルターと養生テープ
- 80PLUS GOLDのPC電源ユニットAntec NeoEco 750 Goldのレビュー
- イギリスの付加価値税 VAT は払い戻しを受けられる
- イギリスのロンドンでスーツケースなど荷物を預けられる場所は
- イギリスのロンドンで地下鉄やバスに乗るならオイスターカードを使おう
- イギリスのヒースロー空港からロンドン市内への行き方
- 航空便でほかの航空会社に乗り継ぎがある場合のオンラインチェックイン
- SFC会員がANA便ではなくベトナム航空のコードシェアを試して解ったこと
- ベトナムの入国審査でeチケットの掲示が必要だった話
- シアトルの交通ICカードはオルカカード(Orca)です
人気のページ
- Windows7 IME 辞書ツールで単語の登録に失敗しました
- C言語 popen()でコマンドを実行して出力を読み込む
- Windows7で休止状態にする方法
- CentOS MySQLの起動、停止、再起動
- loggerコマンドでsyslogにエラーを出力する方法
- パソコンパーツの買取をしてくれる店のまとめ
- Java Mapの使い方 get(),put(),remove(),size(),clear()
- 楽天のRポイントカードを作ってみた
- iPhone 5 から iPhone 6 に乗り換えたのでレビュー
- netstatコマンドのステータスの意味
スポンサーリンク
過去ログ
2020 : 01 02 03 04 05 06 07 08 09 10 11 122019 : 01 02 03 04 05 06 07 08 09 10 11 12
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12