SlideShare a Scribd company logo
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

More Related Content

What's hot (19)

PDF
「Grails-1.1を斬る!〜Grails-1.1からのチーム開発〜」
Tsuyoshi Yamamoto
 
PDF
PostgreSQL 10 新機能 @オープンセミナー香川 2017
Shigeru Hanada
 
PDF
Sqoopコネクタを書いてみた (Hadoopソースコードリーディング第12回 発表資料)
NTT DATA OSS Professional Services
 
PPT
クラウド時代の並列分散処理技術
Koichi Fujikawa
 
PDF
Elasticsearch入門 pyfes 201207
Jun Ohtani
 
PDF
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
Satoshi Yamada
 
PDF
Pg14_sql_standard_function_body
kasaharatt
 
PDF
Teclab3
Eikichi Yamaguchi
 
PDF
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
kasaharatt
 
PDF
ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-
uedayou
 
PPTX
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
YujiSoftware
 
PDF
PostgreSQLの関数属性を知ろう
kasaharatt
 
PDF
PostgreSQLとPythonとSQL
Satoshi Yamada
 
PPTX
Project lambda
Appresso Engineering Team
 
PDF
RailsエンジニアのためのSQLチューニング速習会
Nao Minami
 
PDF
PythonでテキストをJSONにした話(PyCon mini sapporo 2015)
Satoshi Yamada
 
PDF
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」
Nagi Teramo
 
PDF
PostgreSQL:行数推定を読み解く
Hiroya Kabata
 
PDF
PostgreSQL SQLチューニング入門 実践編(pgcon14j)
Satoshi Yamada
 
「Grails-1.1を斬る!〜Grails-1.1からのチーム開発〜」
Tsuyoshi Yamamoto
 
PostgreSQL 10 新機能 @オープンセミナー香川 2017
Shigeru Hanada
 
Sqoopコネクタを書いてみた (Hadoopソースコードリーディング第12回 発表資料)
NTT DATA OSS Professional Services
 
クラウド時代の並列分散処理技術
Koichi Fujikawa
 
Elasticsearch入門 pyfes 201207
Jun Ohtani
 
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
Satoshi Yamada
 
Pg14_sql_standard_function_body
kasaharatt
 
20140531 JPUGしくみ+アプリケーション分科会 勉強会資料
kasaharatt
 
ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-
uedayou
 
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
YujiSoftware
 
PostgreSQLの関数属性を知ろう
kasaharatt
 
PostgreSQLとPythonとSQL
Satoshi Yamada
 
RailsエンジニアのためのSQLチューニング速習会
Nao Minami
 
PythonでテキストをJSONにした話(PyCon mini sapporo 2015)
Satoshi Yamada
 
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」
Nagi Teramo
 
PostgreSQL:行数推定を読み解く
Hiroya Kabata
 
PostgreSQL SQLチューニング入門 実践編(pgcon14j)
Satoshi Yamada
 

Viewers also liked (6)

PDF
Rakuten tech conf
Koichi Fujikawa
 
DOC
Technology Plan For Stevenson Ms Table
Dana Luterman
 
PPT
GUIAS DE NADAL
boello
 
PPT
Trends WCM 2010
Martijn Hoeijmans
 
PDF
Hadoop Conf Japan 2009 After Party LT - Hadoop Ruby DSL
Koichi Fujikawa
 
PDF
Design of a_dsl_by_ruby_for_heavy_computations
Koichi Fujikawa
 
Rakuten tech conf
Koichi Fujikawa
 
Technology Plan For Stevenson Ms Table
Dana Luterman
 
GUIAS DE NADAL
boello
 
Trends WCM 2010
Martijn Hoeijmans
 
Hadoop Conf Japan 2009 After Party LT - Hadoop Ruby DSL
Koichi Fujikawa
 
Design of a_dsl_by_ruby_for_heavy_computations
Koichi Fujikawa
 
Ad

Similar to Cloud computing competition by Hapyrus (20)

PDF
ただいまHadoop勉強中
Satoshi Noto
 
PDF
MapReduce入門
Satoshi Noto
 
PDF
Hadoop jobbuilder
Taku Miyakawa
 
PDF
Oedo Ruby Conference 04: Ruby会議でSQLの話をするのは間違っているだろうか
Minero Aoki
 
PPT
Scala on Hadoop
Shinji Tanaka
 
PDF
OSC2011 Tokyo/Spring Hadoop入門
Shinichi YAMASHITA
 
PDF
Hadoop - OSC2010 Tokyo/Spring
Shinichi YAMASHITA
 
PDF
Hadoop事始め
You&I
 
PDF
OSC2012 OSC.DB Hadoop
Shinichi YAMASHITA
 
PDF
Java x Groovy: improve your java development life
Uehara Junji
 
PPTX
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
YoheiOkuyama
 
PDF
OSC2012 Tokyo/Spring - Hadoop入門
Shinichi YAMASHITA
 
PPT
Googleの基盤クローン Hadoopについて
Kazuki Ohta
 
PPT
Hadoopの紹介
bigt23
 
PPTX
今さら聞けないHadoop セントラルソフト株式会社(20120119)
Toru Takizawa
 
PDF
AspectJを用いた大規模分散システムHadoopの監視とプロファイリング
Yusuke Shimizu
 
PDF
Hadoop入門
Preferred Networks
 
PDF
MapReduce/YARNの仕組みを知る
日本ヒューレット・パッカード株式会社
 
PDF
日々進化するHadoopの 「いま」
NTT DATA OSS Professional Services
 
PDF
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
Hadoop / Spark Conference Japan
 
ただいまHadoop勉強中
Satoshi Noto
 
MapReduce入門
Satoshi Noto
 
Hadoop jobbuilder
Taku Miyakawa
 
Oedo Ruby Conference 04: Ruby会議でSQLの話をするのは間違っているだろうか
Minero Aoki
 
Scala on Hadoop
Shinji Tanaka
 
OSC2011 Tokyo/Spring Hadoop入門
Shinichi YAMASHITA
 
Hadoop - OSC2010 Tokyo/Spring
Shinichi YAMASHITA
 
Hadoop事始め
You&I
 
OSC2012 OSC.DB Hadoop
Shinichi YAMASHITA
 
Java x Groovy: improve your java development life
Uehara Junji
 
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
YoheiOkuyama
 
OSC2012 Tokyo/Spring - Hadoop入門
Shinichi YAMASHITA
 
Googleの基盤クローン Hadoopについて
Kazuki Ohta
 
Hadoopの紹介
bigt23
 
今さら聞けないHadoop セントラルソフト株式会社(20120119)
Toru Takizawa
 
AspectJを用いた大規模分散システムHadoopの監視とプロファイリング
Yusuke Shimizu
 
Hadoop入門
Preferred Networks
 
MapReduce/YARNの仕組みを知る
日本ヒューレット・パッカード株式会社
 
日々進化するHadoopの 「いま」
NTT DATA OSS Professional Services
 
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
Hadoop / Spark Conference Japan
 
Ad

Recently uploaded (9)

PDF
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
PPTX
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
PDF
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
PDF
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
PDF
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
PDF
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
PDF
LoRaWAN ウェザーステーションキット v3 -WSC3-L 日本語ユーザーマニュアル
CRI Japan, Inc.
 
PPTX
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
PDF
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
LoRaWAN ウェザーステーションキット v3 -WSC3-L 日本語ユーザーマニュアル
CRI Japan, Inc.
 
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 

Cloud computing competition by Hapyrus

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