SlideShare a Scribd company logo
1 of 14
 第12回 データマイニング+WEB @東京でHadoopによる機械学習を簡単に Hapyrus Inc. 藤川幸一 @fujibee
自己紹介 藤川幸一Hapyrus Inc.代表 Twitter: @fujibee 学生時代からITベンチャーに参加 電脳隊・PIM -> Yahoo! JAPAN -> テクノロジックアート -> シンプレクス・テクノロジー -> シリウステクノロジーズ -> (Yahoo!?) -> 独立 IPA未踏人材育成事業クリエータ Hadoop Papyrus = Hadoop middleware for scripting Ruby DSL NII本位田研究室 詳しい経歴はLinkedInにて
Java 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; publicclassWordCount{ publicstaticclassTokenizerMapperextends Mapper<Object, Text, Text, IntWritable>{ privatefinalstatic IntWritable one =new IntWritable(1); private Text word =new Text(); publicvoidmap(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); } } } 同様な処理がJavaでは70行必要だが、 HadoopPapyrusだと10行に! publicstaticclassIntSumReducerextends Reducer<Text, IntWritable, Text, IntWritable>{ private IntWritable result =new IntWritable(); publicvoidreduce(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); } } publicstaticvoidmain(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); } } Hadoop Papyrus dsl 'LogAnalysis‘ from ‘test/in‘ to ‘test/out’ pattern /([^|:]+)[^:]*/ column_name :link topic "link num", :label => 'n' do       count_uniq column[:link] end
Hadoopの 何が うれしいのか
Hadoop開発の 問題点
最初の敷居が高い!
サーバやサービスの大量セットアップ MapReduce??? クラスタの運用
= HadoopPaaS & マーケットプレイス!
Hapyrusとは 大量分散データ処理(Hadoop利用)のためのWebサービス Hadoopアプリケーションのための PaaS=開発・実行 ディストリビューション=マーケットプレイス クラウド環境上で動作(EC2・S3 etc.) 基本利用は無料・アプリケーション購入や大量データ処理のみ課金
Demo
http://hapyrus.com/ 現在一般登録可能! フィードバック募集中
将来への課題 Hadoop Streamingのみ Ruby, Phthon, Perl 外部ライブラリ依存は難しい 多段実行は手動 S3書き出し(近々実装予定) アプリ公開(近々実装予定) 無料アプリのみ まだまだアプリケーション不足・・
まとめ HapyrusはHadoop PaaS & マーケットプレイスウェブサービス 大規模機械学習に必要なデータの操作を行ったりスクリプトを公開することでKnowledgeも共有できる 現在ベータ公開中。どんどんバージョンアップします!
ありがとうございました! Twitter: @hapyrus_ja

More Related Content

What's hot

パッケージングの今と未来
パッケージングの今と未来パッケージングの今と未来
パッケージングの今と未来
Atsushi Odagiri
 
pythonでオフィス快適化計画
pythonでオフィス快適化計画pythonでオフィス快適化計画
pythonでオフィス快適化計画
Kazufumi Ohkawa
 
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回
Naoyuki Yamada
 

What's hot (20)

ハンズオン勉強会 はじめてのJavaScriptとSPARQL
ハンズオン勉強会 はじめてのJavaScriptとSPARQLハンズオン勉強会 はじめてのJavaScriptとSPARQL
ハンズオン勉強会 はじめてのJavaScriptとSPARQL
 
使ってみませんか?pg hint_plan
使ってみませんか?pg hint_plan使ってみませんか?pg hint_plan
使ってみませんか?pg hint_plan
 
MapReduce入門
MapReduce入門MapReduce入門
MapReduce入門
 
Fess/Elasticsearchを使った業務で使える?全文検索への道
Fess/Elasticsearchを使った業務で使える?全文検索への道Fess/Elasticsearchを使った業務で使える?全文検索への道
Fess/Elasticsearchを使った業務で使える?全文検索への道
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
 
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 SpringGoでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring
 
Shizupptx
ShizupptxShizupptx
Shizupptx
 
pandasによるデータ加工時の注意点やライブラリの話
pandasによるデータ加工時の注意点やライブラリの話pandasによるデータ加工時の注意点やライブラリの話
pandasによるデータ加工時の注意点やライブラリの話
 
pg_trgmと全文検索
pg_trgmと全文検索pg_trgmと全文検索
pg_trgmと全文検索
 
[db tech showcase Tokyo 2014] B22: Hadoop Rush!! HDFSからデータを自在に取得、加工するにはどうする? ...
[db tech showcase Tokyo 2014] B22: Hadoop Rush!! HDFSからデータを自在に取得、加工するにはどうする? ...[db tech showcase Tokyo 2014] B22: Hadoop Rush!! HDFSからデータを自在に取得、加工するにはどうする? ...
[db tech showcase Tokyo 2014] B22: Hadoop Rush!! HDFSからデータを自在に取得、加工するにはどうする? ...
 
パッケージングの今と未来
パッケージングの今と未来パッケージングの今と未来
パッケージングの今と未来
 
pysqldf
pysqldfpysqldf
pysqldf
 
pythonでオフィス快適化計画
pythonでオフィス快適化計画pythonでオフィス快適化計画
pythonでオフィス快適化計画
 
Elasticsearch at CrowdWorks
Elasticsearch at CrowdWorksElasticsearch at CrowdWorks
Elasticsearch at CrowdWorks
 
20120317 IT系勉強会 in 神戸
20120317 IT系勉強会 in 神戸20120317 IT系勉強会 in 神戸
20120317 IT系勉強会 in 神戸
 
R超入門機械学習をはじめよう
R超入門機械学習をはじめようR超入門機械学習をはじめよう
R超入門機械学習をはじめよう
 
20150209 甲府-web新世紀2
20150209 甲府-web新世紀220150209 甲府-web新世紀2
20150209 甲府-web新世紀2
 
[9.5新機能]追加されたgroupbyの使い方
[9.5新機能]追加されたgroupbyの使い方[9.5新機能]追加されたgroupbyの使い方
[9.5新機能]追加されたgroupbyの使い方
 
sbtマルチプロジェクトビルドの使いどころ
sbtマルチプロジェクトビルドの使いどころsbtマルチプロジェクトビルドの使いどころ
sbtマルチプロジェクトビルドの使いどころ
 
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回
 

Viewers also liked

パターン認識 08 09 k-近傍法 lvq
パターン認識 08 09 k-近傍法 lvqパターン認識 08 09 k-近傍法 lvq
パターン認識 08 09 k-近傍法 lvq
sleipnir002
 
異常行動検出入門 – 行動データ時系列のデータマイニング –
異常行動検出入門 – 行動データ時系列のデータマイニング –異常行動検出入門 – 行動データ時系列のデータマイニング –
異常行動検出入門 – 行動データ時系列のデータマイニング –
Yohei Sato
 
時系列分析による異常検知入門
時系列分析による異常検知入門時系列分析による異常検知入門
時系列分析による異常検知入門
Yohei Sato
 
Map Reduce 〜入門編:仕組みの理解とアルゴリズムデザイン〜
Map Reduce 〜入門編:仕組みの理解とアルゴリズムデザイン〜Map Reduce 〜入門編:仕組みの理解とアルゴリズムデザイン〜
Map Reduce 〜入門編:仕組みの理解とアルゴリズムデザイン〜
Takahiro Inoue
 

Viewers also liked (8)

Tokyor16
Tokyor16Tokyor16
Tokyor16
 
Rデバッグあれこれ
RデバッグあれこれRデバッグあれこれ
Rデバッグあれこれ
 
パターン認識 08 09 k-近傍法 lvq
パターン認識 08 09 k-近傍法 lvqパターン認識 08 09 k-近傍法 lvq
パターン認識 08 09 k-近傍法 lvq
 
100614 構造方程式モデリング基本の「き」
100614 構造方程式モデリング基本の「き」100614 構造方程式モデリング基本の「き」
100614 構造方程式モデリング基本の「き」
 
異常行動検出入門 – 行動データ時系列のデータマイニング –
異常行動検出入門 – 行動データ時系列のデータマイニング –異常行動検出入門 – 行動データ時系列のデータマイニング –
異常行動検出入門 – 行動データ時系列のデータマイニング –
 
時系列分析による異常検知入門
時系列分析による異常検知入門時系列分析による異常検知入門
時系列分析による異常検知入門
 
エクセルで統計分析 統計プログラムHADについて
エクセルで統計分析 統計プログラムHADについてエクセルで統計分析 統計プログラムHADについて
エクセルで統計分析 統計プログラムHADについて
 
Map Reduce 〜入門編:仕組みの理解とアルゴリズムデザイン〜
Map Reduce 〜入門編:仕組みの理解とアルゴリズムデザイン〜Map Reduce 〜入門編:仕組みの理解とアルゴリズムデザイン〜
Map Reduce 〜入門編:仕組みの理解とアルゴリズムデザイン〜
 

Similar to Tokyo Webmining #12 Hapyrus

基幹業務もHadoopで!! -ローソンにおける店舗発注業務への Hadoop + Hive導入と その取り組みについて-
基幹業務もHadoopで!! -ローソンにおける店舗発注業務へのHadoop + Hive導入と その取り組みについて-基幹業務もHadoopで!! -ローソンにおける店舗発注業務へのHadoop + Hive導入と その取り組みについて-
基幹業務もHadoopで!! -ローソンにおける店舗発注業務への Hadoop + Hive導入と その取り組みについて-
Keigo Suda
 
第2回 Jenkins勉強会 LT 藤川
第2回 Jenkins勉強会 LT 藤川第2回 Jenkins勉強会 LT 藤川
第2回 Jenkins勉強会 LT 藤川
Koichi Fujikawa
 

Similar to Tokyo Webmining #12 Hapyrus (20)

デブサミ2013 【15-A-1】「爆速」を支えるテクノロジー
デブサミ2013 【15-A-1】「爆速」を支えるテクノロジーデブサミ2013 【15-A-1】「爆速」を支えるテクノロジー
デブサミ2013 【15-A-1】「爆速」を支えるテクノロジー
 
リクルート式Hadoopの使い方
リクルート式Hadoopの使い方リクルート式Hadoopの使い方
リクルート式Hadoopの使い方
 
Hack/HHVMの最新事情とメイン言語に採用した理由
Hack/HHVMの最新事情とメイン言語に採用した理由Hack/HHVMの最新事情とメイン言語に採用した理由
Hack/HHVMの最新事情とメイン言語に採用した理由
 
Hadoop Conference Japan 2009 #2
Hadoop Conference Japan 2009 #2Hadoop Conference Japan 2009 #2
Hadoop Conference Japan 2009 #2
 
Pythonインタラクティブ・データビジュアライゼーション入門という本を共著で書きました
Pythonインタラクティブ・データビジュアライゼーション入門という本を共著で書きましたPythonインタラクティブ・データビジュアライゼーション入門という本を共著で書きました
Pythonインタラクティブ・データビジュアライゼーション入門という本を共著で書きました
 
Python charity talk in japan fastAPI introduction
Python charity talk in japan fastAPI introductionPython charity talk in japan fastAPI introduction
Python charity talk in japan fastAPI introduction
 
IoT ChatOps #IoTLT
IoT ChatOps #IoTLTIoT ChatOps #IoTLT
IoT ChatOps #IoTLT
 
俺とシビックテックとDiy
俺とシビックテックとDiy俺とシビックテックとDiy
俺とシビックテックとDiy
 
基幹業務もHadoopで!! -ローソンにおける店舗発注業務への Hadoop + Hive導入と その取り組みについて-
基幹業務もHadoopで!! -ローソンにおける店舗発注業務へのHadoop + Hive導入と その取り組みについて-基幹業務もHadoopで!! -ローソンにおける店舗発注業務へのHadoop + Hive導入と その取り組みについて-
基幹業務もHadoopで!! -ローソンにおける店舗発注業務への Hadoop + Hive導入と その取り組みについて-
 
Go + Pulsar WebSocket APIの利用事例 #pulsarjp
Go + Pulsar WebSocket APIの利用事例 #pulsarjpGo + Pulsar WebSocket APIの利用事例 #pulsarjp
Go + Pulsar WebSocket APIの利用事例 #pulsarjp
 
Hadoop~Yahoo! JAPANの活用について~
Hadoop~Yahoo! JAPANの活用について~Hadoop~Yahoo! JAPANの活用について~
Hadoop~Yahoo! JAPANの活用について~
 
Flex入門
Flex入門Flex入門
Flex入門
 
Hadoop ~Yahoo! JAPANの活用について~
Hadoop ~Yahoo! JAPANの活用について~Hadoop ~Yahoo! JAPANの活用について~
Hadoop ~Yahoo! JAPANの活用について~
 
匠Methodを使った製品開発の現場
匠Methodを使った製品開発の現場匠Methodを使った製品開発の現場
匠Methodを使った製品開発の現場
 
退職PDFメーカーの作り方
退職PDFメーカーの作り方退職PDFメーカーの作り方
退職PDFメーカーの作り方
 
鹿駆動勉強会 青江発表資料
鹿駆動勉強会 青江発表資料鹿駆動勉強会 青江発表資料
鹿駆動勉強会 青江発表資料
 
Yahoo! JAPANが考えるテクノロジーとITエンジニアの未来 #devsumi
Yahoo! JAPANが考えるテクノロジーとITエンジニアの未来 #devsumiYahoo! JAPANが考えるテクノロジーとITエンジニアの未来 #devsumi
Yahoo! JAPANが考えるテクノロジーとITエンジニアの未来 #devsumi
 
Apache drillを業務利用してみる(までの道のり)
Apache drillを業務利用してみる(までの道のり)Apache drillを業務利用してみる(までの道のり)
Apache drillを業務利用してみる(までの道のり)
 
第2回 Jenkins勉強会 LT 藤川
第2回 Jenkins勉強会 LT 藤川第2回 Jenkins勉強会 LT 藤川
第2回 Jenkins勉強会 LT 藤川
 
Jupyterで運用やってみた
Jupyterで運用やってみたJupyterで運用やってみた
Jupyterで運用やってみた
 

More from Koichi Fujikawa (6)

Amazon Redshiftの開発者がこれだけは知っておきたい10のTIPS / 第18回 AWS User Group - Japan
Amazon Redshiftの開発者がこれだけは知っておきたい10のTIPS / 第18回 AWS User Group - Japan Amazon Redshiftの開発者がこれだけは知っておきたい10のTIPS / 第18回 AWS User Group - Japan
Amazon Redshiftの開発者がこれだけは知っておきたい10のTIPS / 第18回 AWS User Group - Japan
 
Rakuten tech conf
Rakuten tech confRakuten tech conf
Rakuten tech conf
 
JRubyKaigi2010 Hadoop Papyrus
JRubyKaigi2010 Hadoop PapyrusJRubyKaigi2010 Hadoop Papyrus
JRubyKaigi2010 Hadoop Papyrus
 
Design of a_dsl_by_ruby_for_heavy_computations
Design of a_dsl_by_ruby_for_heavy_computationsDesign of a_dsl_by_ruby_for_heavy_computations
Design of a_dsl_by_ruby_for_heavy_computations
 
Cloud computing competition by Hapyrus
Cloud computing competition by HapyrusCloud computing competition by Hapyrus
Cloud computing competition by Hapyrus
 
Hadoop Conf Japan 2009 After Party LT - Hadoop Ruby DSL
Hadoop Conf Japan 2009 After Party LT - Hadoop Ruby DSLHadoop Conf Japan 2009 After Party LT - Hadoop Ruby DSL
Hadoop Conf Japan 2009 After Party LT - Hadoop Ruby DSL
 

Tokyo Webmining #12 Hapyrus

  • 1. 第12回 データマイニング+WEB @東京でHadoopによる機械学習を簡単に Hapyrus Inc. 藤川幸一 @fujibee
  • 2. 自己紹介 藤川幸一Hapyrus Inc.代表 Twitter: @fujibee 学生時代からITベンチャーに参加 電脳隊・PIM -> Yahoo! JAPAN -> テクノロジックアート -> シンプレクス・テクノロジー -> シリウステクノロジーズ -> (Yahoo!?) -> 独立 IPA未踏人材育成事業クリエータ Hadoop Papyrus = Hadoop middleware for scripting Ruby DSL NII本位田研究室 詳しい経歴はLinkedInにて
  • 3. Java 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; publicclassWordCount{ publicstaticclassTokenizerMapperextends Mapper<Object, Text, Text, IntWritable>{ privatefinalstatic IntWritable one =new IntWritable(1); private Text word =new Text(); publicvoidmap(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); } } } 同様な処理がJavaでは70行必要だが、 HadoopPapyrusだと10行に! publicstaticclassIntSumReducerextends Reducer<Text, IntWritable, Text, IntWritable>{ private IntWritable result =new IntWritable(); publicvoidreduce(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); } } publicstaticvoidmain(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); } } Hadoop Papyrus dsl 'LogAnalysis‘ from ‘test/in‘ to ‘test/out’ pattern /([^|:]+)[^:]*/ column_name :link topic "link num", :label => 'n' do       count_uniq column[:link] end
  • 8. = HadoopPaaS & マーケットプレイス!
  • 9. Hapyrusとは 大量分散データ処理(Hadoop利用)のためのWebサービス Hadoopアプリケーションのための PaaS=開発・実行 ディストリビューション=マーケットプレイス クラウド環境上で動作(EC2・S3 etc.) 基本利用は無料・アプリケーション購入や大量データ処理のみ課金
  • 10. Demo
  • 12. 将来への課題 Hadoop Streamingのみ Ruby, Phthon, Perl 外部ライブラリ依存は難しい 多段実行は手動 S3書き出し(近々実装予定) アプリ公開(近々実装予定) 無料アプリのみ まだまだアプリケーション不足・・
  • 13. まとめ HapyrusはHadoop PaaS & マーケットプレイスウェブサービス 大規模機械学習に必要なデータの操作を行ったりスクリプトを公開することでKnowledgeも共有できる 現在ベータ公開中。どんどんバージョンアップします!