• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Cloud computing competition by Hapyrus
 

Cloud computing competition by Hapyrus

on

  • 2,882 views

Presentation for cloud competition in INTEROP 2010

Presentation for cloud competition in INTEROP 2010

Statistics

Views

Total Views
2,882
Views on SlideShare
2,851
Embed Views
31

Actions

Likes
1
Downloads
9
Comments
0

4 Embeds 31

http://www.slideshare.net 28
http://www.health.medicbd.com 1
http://www.slashdocs.com 1
http://www.linkedin.com 1

Accessibility

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Cloud computing competition by Hapyrus Cloud computing competition by Hapyrus Presentation Transcript

    • INTEROP クラウドコンピューティング コンペティション2010 「HadoopクラスタをZERO-CONFで 100+台まで拡張チャレンジ」 チーム ハピルス 藤川幸一 @fujibee 平野智也 @tomoya55 株式会社シリウステクノロジーズ
    • Hadoopとは? • 大規模データ並列分散処理フレームワーク • Google MapReduceのオープンソースクローン • テラバイトレベルのデータ処理に必要 – 標準的なHDDがRead 50MB/sとして400TB(Webス ケール)のReadだけで2000時間 – 分散ファイルシステムと分散処理フレームワーク が必要
    • Hadoopクラスタ拡張の現状 • マスタの設定ファイルにスレーブの場所を記 述 • すべてのスレーブにHadoopパッケージをイン ストール • それぞれのスレーブにタスク用の設定ファイ ルを配置 などなど ⇒ スレーブが大量にあると手間がかかる!
    • HudsonでZERO-CONF Hadoopクラスタ拡張 • Hadoopスレーブ配布フレームワークとして Hudsonを利用する • Hudsonはビルドツールとして知られているが実 は分散フレームワークとして利用できる – HudsonはZERO-CONFでスレーブを簡単にアタッチす ることが可能 – さらにHudsonのマスタとスレーブはそれぞれ、 Hadoopのマスタとスレーブを立ち上げることが可能 よってHudsonのスレーブ追加ツールを開発すれ ば、HadoopのZERO-CONFクラスタ拡張が可能!
    • 構成図 同ノード 同ノード Hudson Hudson スレーブ Hudson マスタ スレーブ Hudson スレーブ 起動 起動 起動 起動 Hadoop スレーブ ジョブ実行 Hadoop Hadoop スレーブ マスタ Hadoop スレーブ ×100
    • Hadoop Papyrus • HadoopジョブをRubyのDSLで実行できるオー プンソースフレームワーク – 本来HadoopジョブはJavaで記述する – Javaだと複雑な記述がほんの数行で書ける! • IPA未踏本体2009年上期のサポートを受け 藤川によって開発されている • Hudson上でジョブを記述/実行が可能
    • 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
    • 今回のチャレンジ 1. Hudsonのスレーブを自動起動するスクリプト を準備 2. Hudsonのスレーブを起動するだけでHadoop クラスタに自動追加されるデモ 3. 100台Hadoopクラスタ ZERO-CONF起動! 4. そのクラスタでHadoop Papyrusにて Wikipedia全データのリンクをカウントする ジョブ実行 5. 100台以上何台いけるかチャレンジ!
    • ありがとうございました Twitter ID: @fujibee / @tomoya55 / @hapyrus