スポンサーリンク

このドキュメントの内容は、以下の通りです。

この例では、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 は、ダウンロードするか、インストールして下さい。

参考
./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



スポンサーリンク
スポンサーリンク
 
いつもシェア、ありがとうございます!


もっと情報を探しませんか?

関連記事

最近の記事

人気のページ

スポンサーリンク
 

過去ログ

2020 : 01 02 03 04 05 06 07 08 09 10 11 12
2019 : 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

サイト

Vim入門

C言語入門

C++入門

JavaScript/Node.js入門

Python入門

FreeBSD入門

Ubuntu入門

セキュリティ入門

パソコン自作入門

ブログ

トップ


プライバシーポリシー