tokyo webmining #12 hapyrus

14
第 12 第 第第第第第第第第 +WEB 第第 第 Hadoop 第 第第 第第第第第第第第 Hapyrus Inc. 藤藤藤@fujibee

Upload: koichi-fujikawa

Post on 11-Jun-2015

5.446 views

Category:

Technology


4 download

DESCRIPTION

第12回 データマイニング+WEB @東京 ( #TokyoWebmining 12th)-機械学習MapReduce・大規模R解析 祭り- 「HapyrusでHadoopによる機械学習を簡単に」

TRANSCRIPT

Page 1: Tokyo Webmining #12 Hapyrus

第 12 回 データマイニング+WEB @東京

で Hadoop による機械学習を簡単に

Hapyrus Inc.藤川幸一 @fujibee

Page 2: Tokyo Webmining #12 Hapyrus

自己紹介藤川幸一 Hapyrus Inc. 代表

◦ Twitter: @fujibee学生時代から IT ベンチャーに参加電脳隊・ PIM → Yahoo! JAPAN → テクノロ

ジックアート → シンプレクス・テクノロジー → シリウステクノロジーズ → (Yahoo!?) → 独立

IPA 未踏人材育成事業クリエータ◦ Hadoop Papyrus = Hadoop middleware for

scripting Ruby DSLNII 本位田研究室詳しい経歴は LinkedIn にて

Page 3: Tokyo Webmining #12 Hapyrus

package org.apache.hadoop.examples;

import java.io.IOException;import java.util.StringTokenizer;

import org.apache.hadoop.conf.Configuration;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;import org.apache.hadoop.mapreduce.Reducer;import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;import org.apache.hadoop.util.GenericOptionsParser;

public class WordCount {

public static class TokenizerMapper extendsMapper<Object, Text, Text, IntWritable> {

private final static IntWritable one = new IntWritable(1);private Text word = new Text();

public void map(Object key, Text value, Context context)throws IOException, InterruptedException {StringTokenizer itr = new StringTokenizer(value.toString());while (itr.hasMoreTokens()) {word.set(itr.nextToken());context.write(word, one);}}}

public static class IntSumReducer extendsReducer<Text, IntWritable, Text, IntWritable> {private IntWritable result = new IntWritable();

public void reduce(Text key, Iterable<IntWritable> values,Context context) throws IOException, InterruptedException {int sum = 0;for (IntWritable val : values) {sum += val.get();}result.set(sum);context.write(key, result);}}

public static void main(String[] args) throws Exception {Configuration conf = new Configuration();String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();if (otherArgs.length != 2) {System.err.println("Usage: wordcount <in> <out>");System.exit(2);}Job job = new Job(conf, "word count");job.setJarByClass(WordCount.class);job.setMapperClass(TokenizerMapper.class);job.setCombinerClass(IntSumReducer.class);job.setReducerClass(IntSumReducer.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class);FileInputFormat.addInputPath(job, new Path(otherArgs[0]));FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));System.exit(job.waitForCompletion(true) ? 0 : 1);}}

同様な処理が Java では 70 行必要だが、HadoopPapyrus だと 10 行に!

dsl 'LogAnalysis‘

from ‘test/in‘to ‘test/out’

pattern /\[\[([^|\]:]+)[^\]:]*\]\]/column_name :link

topic "link num", :label => 'n' do count_uniq column[:link]end

Java

Hadoop Papyrus

Page 4: Tokyo Webmining #12 Hapyrus

Hadoop の何が

うれしいのか

Page 5: Tokyo Webmining #12 Hapyrus

Hadoop 開発の

問題点

Page 6: Tokyo Webmining #12 Hapyrus

最初の敷居が高い!

Page 7: Tokyo Webmining #12 Hapyrus

1. サーバやサービスの大量セットアップ

2. MapReduce???

3. クラスタの運用

Page 8: Tokyo Webmining #12 Hapyrus

Hadoop PaaS&

マーケットプレイス!

Page 9: Tokyo Webmining #12 Hapyrus

Hapyrus とは大量分散データ処理 (Hadoop 利用 ) の

ための Web サービスHadoop アプリケーションのための

◦PaaS =開発・実行◦ディストリビューション=マーケットプレ

イスクラウド環境上で動作 (EC2 ・ S3

etc.)基本利用は無料・アプリケーション購

入や大量データ処理のみ課金

Page 10: Tokyo Webmining #12 Hapyrus

Demo

Page 11: Tokyo Webmining #12 Hapyrus

http://hapyrus.com/

現在一般登録可能!フィードバック募集中

Page 12: Tokyo Webmining #12 Hapyrus

将来への課題Hadoop Streaming のみ

◦Ruby, Phthon, Perl外部ライブラリ依存は難しい多段実行は手動S3 書き出し(近々実装予定)アプリ公開(近々実装予定)無料アプリのみまだまだアプリケーション不足・・

Page 13: Tokyo Webmining #12 Hapyrus

まとめHapyrus は Hadoop PaaS & マー

ケットプレイスウェブサービス大規模機械学習に必要なデータの操

作を行ったりスクリプトを公開することで Knowledge も共有できる

現在ベータ公開中。どんどんバージョンアップします!

Page 14: Tokyo Webmining #12 Hapyrus

ありがとうございました!

Twitter: @hapyrus_ja