Weitere ähnliche Inhalte
Ähnlich wie Cloud computing competition by Hapyrus (20)
Cloud computing competition by Hapyrus
- 1. INTEROP
クラウドコンピューティング
コンペティション2010
「HadoopクラスタをZERO-CONFで
100+台まで拡張チャレンジ」
チーム ハピルス
藤川幸一 @fujibee
平野智也 @tomoya55
株式会社シリウステクノロジーズ
- 5. 構成図
同ノード
同ノード
Hudson
Hudson スレーブ
Hudson
マスタ スレーブ
Hudson
スレーブ
起動
起動 起動 起動
Hadoop
スレーブ
ジョブ実行 Hadoop
Hadoop スレーブ
マスタ Hadoop
スレーブ
×100
- 7. package org.apache.hadoop.examples; Javaの場合
import java.io.IOException;
import java.util.StringTokenizer;
同様な処理がJavaでは70行必要だが、
import org.apache.hadoop.conf.Configuration;
Hadoop Papyrusだと10行に!
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper; IntSumReducer extends
public static class
import org.apache.hadoop.mapreduce.Reducer;
Reducer<Text, IntWritable, Text, IntWritable> {
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
private IntWritable result = new IntWritable();
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.GenericOptionsParser;
public void reduce(Text key, Iterable<IntWritable> values,
Context context) throws IOException, InterruptedException {
public class WordCount { int sum = 0;
for (IntWritable val : values) {
sum += val.get();
public static class TokenizerMapper extends
}
Mapper<Object, Text, Text, IntWritable> {
result.set(sum);
Hadoop Papyrus
context.write(key, result);
} dsl 'LogAnalysis‘
private final static IntWritable one = new IntWritable(1);
}
private Text word = new Text();
public static void main(String[] args) throws Exception {
public void map(Object key, Text value, Context context) Configuration();
Configuration conf = new
from ‘test/in‘
throws IOException, InterruptedException {
String[] otherArgs = new GenericOptionsParser(conf, args)
StringTokenizer itr = new StringTokenizer(value.toString());
.getRemainingArgs();
to ‘test/out’
while (itr.hasMoreTokens()) { if (otherArgs.length != 2) {
word.set(itr.nextToken()); System.err.println("Usage: wordcount <in> <out>");
context.write(word, one); System.exit(2);
}
}
} pattern /¥[¥[([^|¥]:]+)[^¥]:]*¥]¥]/
Job job = new Job(conf, "word count");
} job.setJarByClass(WordCount.class);
job.setMapperClass(TokenizerMapper.class);
column_name :link
job.setCombinerClass(IntSumReducer.class);
job.setReducerClass(IntSumReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class); topic "link num", :label => 'n' do
FileInputFormat.addInputPath(job, new Path(otherArgs[0]));
FileOutputFormat.setOutputPath(job, new Path(otherArgs[1])); count_uniq column[:link]
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
}
end
- 8. 今回のチャレンジ
1. Hudsonのスレーブを自動起動するスクリプト
を準備
2. Hudsonのスレーブを起動するだけでHadoop
クラスタに自動追加されるデモ
3. 100台Hadoopクラスタ ZERO-CONF起動!
4. そのクラスタでHadoop Papyrusにて
Wikipedia全データのリンクをカウントする
ジョブ実行
5. 100台以上何台いけるかチャレンジ!