SlideShare a Scribd company logo
1 of 64
Google の基盤クローン Hadoop について  太田 一樹 <kazuki.ohta@gmail.com>
自己紹介 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
とは? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Google 関連 参考論文  &  スライド ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Hadoop 参考文献 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Hadoop の開発状況
性能 ,[object Object],[object Object],[object Object],[object Object],[object Object],物量作戦
性能  ( 僕が測ってみた )
関連プロジェクト ,[object Object],[object Object],[object Object],[object Object],clean = FILTER raw BY org.apache.pig.tutorial.NonURLDetector(query);
MapReduce Motivation
問題 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
解決方法 ,[object Object],[object Object],[object Object],[object Object]
お金だけでは解決しない ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],うはー めんどくせー!
既存の分散 / 並列プログラミング環境 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
MPI の問題点 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
そこで MapReduce ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
MapReduce 型の処理 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Google での使用率
MapReduce Model
MapReduce の実行フロー Data Map Data Map Data Map Reduce Reduce Data Data Shuffle
MapReduce の実行フロー ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
MapReduce の実行フロー Data Map Data Map Data Map Reduce Reduce Data Data Shuffle <k, v>* <k, v>* <k, v>* <k, v>* ⇒ <k’, v’>* <k’, <v’>*>* ⇒ <k’’, v’’>* <k, v>* ⇒ <k’, v’>* <k, v>* ⇒ <k’, v’>* <k’, <v’>*>* ⇒ <k’’, v’’>*
例 :  ワードカウント Data Map Data Map Data Map Reduce Reduce Data Data Shuffle foo foo foo bar bar buzz 入力文書 : doc1
例 :  ワードカウント Data Map Data Map Data Map Reduce Reduce Data Data Shuffle foo foo foo bar bar buz 入力文書 : doc1 doc1: foo doc1: foo doc1: foo doc1: bar doc1: bar doc1: buz
例 :  ワードカウント Data Map Data Map Data Map Reduce Reduce Data Data Shuffle foo foo foo bar bar buz 入力文書 : doc1 doc1: foo doc1: bar doc1: bar doc1: buz doc1: foo doc1: foo
例 :  ワードカウント Data Map Data Map Data Map Reduce Reduce Data Data foo foo foo bar bar buz 入力文書 : doc1 doc1: foo doc1: bar doc1: bar doc1: buz doc1: foo doc1: foo foo: 1 foo: 1 bar: 1 foo: 1 bar: 1 buz: 1
例 :  ワードカウント Data Map Data Map Data Map Reduce Reduce Data Data foo foo foo bar bar buz 入力文書 : doc1 foo: 1 foo: 1 bar: 1 foo: 1 bar: 1 buz: 1 bar: <1, 1> buz: <1> foo: <1, 1, 1>
例 :  ワードカウント Data Map Data Map Data Map Reduce Reduce Data Data foo foo foo bar bar buz 入力文書 : doc1 bar: <1, 1> buz: <1> foo: <1, 1, 1>
例 :  ワードカウント Data Map Data Map Data Map Reduce Reduce Data Data foo foo foo bar bar buz 入力文書 : doc1 foo: <1, 1, 1> bar: <1, 1> buz: <1> foo: 3 bar: 2 buz: 1
例 :  ワードカウント Data Map Data Map Data Map Reduce Reduce Data Data foo foo foo bar bar buz 入力文書 : doc1 bar: 2 buz: 1 foo: 3
例 :  ワードカウント ,[object Object],map(string key, string value) { foreach word in value: emit(word, 1); } reduce(string key, vector<int> values) { int result = 0; for (int i = 0; I < values.size(); i++) result += values[i]; emit(key, result); }
MapReduce の特徴 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
論文に書かれていない、僕が思う MapReduce の短所 ,[object Object],[object Object],[object Object],[object Object],Map Map Map Reduce Reduce Shuffle
Hadoop Architecture
Hadoop の中身 ,[object Object],[object Object],[object Object],[object Object],[object Object]
Hadoop Distributed File System ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
From: http://hadoop.apache.org/core/docs/current/hdfs_design.html
データ配置のアルゴリズム (1) ,[object Object],[object Object],[object Object]
レプリケーションのアルゴリズム (2) ,[object Object],[object Object],[object Object],[object Object],[object Object],意外とこういう適当なのが 上手く行くの かもしれない
GFS に有って HDFS に無いもの ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Hadoop MapReduce ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
MapReduce Architecture JobTracker TaskTracker
Map フェーズ ,[object Object],[object Object],[object Object],[object Object],(k, v) Reducer1 宛て Reducer2 宛て
Reduce フェーズ ,[object Object],[object Object],[object Object],[object Object],[object Object]
Hadoop HDFS Manual
HDFS の操作方法 # ls alias dfsls='~/hadoop/bin/hadoop dfs -ls‘ # ls -r alias dfslsr='~/hadoop/bin/hadoop dfs -lsr‘ # rm alias dfsrm='~/hadoop/bin/hadoop dfs -rm‘ # rm -r alias dfsrmr='~/hadoop/bin/hadoop dfs -rmr' # cat alias dfscat='~/hadoop/bin/hadoop dfs -cat‘ # mkdir alias dfsmkdir='~/hadoop/bin/hadoop dfs -mkdir‘
HDFS の操作方法 hadoop@pficore:~$ dfsls Found 5 items /user/hadoop/access-log <r 3>  3003  2008-04-30 00:21 /user/hadoop/hoge  <r 3>  2183  2008-04-30 00:32 /user/hadoop/reported  <dir>  2008-04-30 00:28 /user/hadoop/wcinput  <r 3>  29  2008-05-08 10:17 /user/hadoop/wcoutput  <dir>  2008-05-08 11:48
HDFS の操作方法 ,[object Object],[object Object],alias dfsput='~/hadoop/bin/hadoop dfs -put‘ dfsput  <local-path>  <hdfs-path> alias dfsget='~/hadoop/bin/hadoop dfs -get‘ dfsget  <hdfs-path>  <local-path>
HDFS の使用方法 hadoop@pficore:~$ dfsls Found 0 items hadoop@pficore:~$ dfsput hoge.txt hoge.txt hadoop@pficore:~$ dfsls Found 1 items /user/hadoop/hoge.txt  <r 3>  31  2008-05-08 12:00
HDFS の特徴 ,[object Object],[object Object],[object Object],[object Object]
Hadoop Programming on Hadoop with “Java”
Skipped for Kernel Hackers   who never want to write Java :-P
Hadoop Programming on Hadoop with “ Hadoop Streaming ” (sh, C, C++, Ruby, Python, etc.)
HadoopStreaming ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
使い方 ,[object Object],./bin/hadoop jar contrib/hadoop-0.15.3-streaming.jar -input   inputdir  [HDFS のパス ] -output  outputdir  [HDFS のパス ] -mapper  map  [map プログラムのパス ] -reduce  reduce  [reduce プログラムのパス ] -inputformat  [TextInputFormat | SequenceFileAsTextInputFormat] -outputformat  [TextOutputFormat]
InputFormat ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],Hoge fu ga fafa fdsaf dasfd sak fjadsj fdsaf dsafdsa fdsafdsafdsa fadsfdsa fdsa fsafds <offset, Hoge fu ga fafa fdsaf dasfd sak fjadsj fdsaf > <offset, fdsafdsafdsa fadsfdsa fdsa fsafds> k1 v1 k2 v2 k3 v3 <k1, v1> <k2, v2> <k3, v3> mapper mapper
OutputFormat ,[object Object],[object Object],[object Object],[object Object]
Map ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Reduce ,[object Object],[object Object],[object Object],[object Object],[object Object]
例 : Ruby によるワードカウント map.rb #!/usr/bin/env ruby while !STDIN.eof? line = STDIN.readline.strip ws = line.split ws.each { |w| puts &quot;#{w}1“ } end reduce.rb #!/usr/bin/env ruby h = {} while !STDIN.eof? line = STDIN.readline.strip word = line.split(&quot;&quot;)[0] unless h.has_key? word h[word] = 1 else h[word] += 1 end end h.each { |w, c| puts &quot;#{w}#{c}“ } $ ./bin/hadoop jar contrib/hadoop-0.15.3-streaming.jar -input wcinput -output wcoutput -mapper /home/hadoop/kzk/map.rb -reducer /home/hadoop/kzk/reduce.rb -inputformat TextInputFormat -outputformat TextOutputFormat
例 :  出力を圧縮する ,[object Object],[object Object],[object Object],$ ./bin/hadoop jar contrib/hadoop-0.15.3-streaming.jar -input wcinput -output wcoutput -mapper /home/hadoop/kzk/map.rb -reducer /home/hadoop/kzk/reduce.rb -inputformat TextInputFormat -outputformat TextOutputFormat -jobconf  mapred.output.compress=true
ためしに書いてみたもの ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Enjoy Playing Around Hadoop   Thank you! kzk

More Related Content

What's hot

Open stack advent calendar 2012jp 12/17 Cloud on Cloud
Open stack advent calendar 2012jp 12/17 Cloud on CloudOpen stack advent calendar 2012jp 12/17 Cloud on Cloud
Open stack advent calendar 2012jp 12/17 Cloud on Cloudirix_jp
 
Cython intro prelerease
Cython intro prelereaseCython intro prelerease
Cython intro prelereaseShiqiao Du
 
PyCon mini Hiroshima アクセシビリティを支えるPython
PyCon mini Hiroshima アクセシビリティを支えるPythonPyCon mini Hiroshima アクセシビリティを支えるPython
PyCon mini Hiroshima アクセシビリティを支えるPythonTakuya Nishimoto
 
5社のGTFSをマージして、PostgreSQLにインポートしてみた
5社のGTFSをマージして、PostgreSQLにインポートしてみた5社のGTFSをマージして、PostgreSQLにインポートしてみた
5社のGTFSをマージして、PostgreSQLにインポートしてみたMasaki Ito
 
Python 3.6 リリースパーティー 発表資料
Python 3.6 リリースパーティー 発表資料Python 3.6 リリースパーティー 発表資料
Python 3.6 リリースパーティー 発表資料Atsuo Ishimoto
 
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2Kenichiro MATOHARA
 
CppCon2016 report and Boost.SML
CppCon2016 report and Boost.SMLCppCon2016 report and Boost.SML
CppCon2016 report and Boost.SMLTakatoshi Kondo
 
いまさら聞けないRake入門
いまさら聞けないRake入門いまさら聞けないRake入門
いまさら聞けないRake入門Tomoya Kawanishi
 
JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2
JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2
JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2azumakuniyuki 🐈
 
ラボユース最終成果報告会(Web公開版)
ラボユース最終成果報告会(Web公開版)ラボユース最終成果報告会(Web公開版)
ラボユース最終成果報告会(Web公開版)Shinichi Awamoto
 
NetBSD/evbarm on Raspberry Pi
NetBSD/evbarm on Raspberry PiNetBSD/evbarm on Raspberry Pi
NetBSD/evbarm on Raspberry Pitokudahiroshi
 
Pd Kai#3 Startup Process
Pd Kai#3 Startup ProcessPd Kai#3 Startup Process
Pd Kai#3 Startup Processnagachika t
 
"Programming Hive" Reading #1
"Programming Hive" Reading #1"Programming Hive" Reading #1
"Programming Hive" Reading #1moai kids
 
GPU-FPGA 協調計算を記述するためのプログラミング環境に関する研究(HPC169 No.10)
GPU-FPGA 協調計算を記述するためのプログラミング環境に関する研究(HPC169 No.10)GPU-FPGA 協調計算を記述するためのプログラミング環境に関する研究(HPC169 No.10)
GPU-FPGA 協調計算を記述するためのプログラミング環境に関する研究(HPC169 No.10)Ryuuta Tsunashima
 
Programming Hive Reading #3
Programming Hive Reading #3Programming Hive Reading #3
Programming Hive Reading #3moai kids
 
GPU-FPGA協調プログラミングを実現するコンパイラの開発
GPU-FPGA協調プログラミングを実現するコンパイラの開発GPU-FPGA協調プログラミングを実現するコンパイラの開発
GPU-FPGA協調プログラミングを実現するコンパイラの開発Ryuuta Tsunashima
 

What's hot (20)

Open stack advent calendar 2012jp 12/17 Cloud on Cloud
Open stack advent calendar 2012jp 12/17 Cloud on CloudOpen stack advent calendar 2012jp 12/17 Cloud on Cloud
Open stack advent calendar 2012jp 12/17 Cloud on Cloud
 
Cython intro prelerease
Cython intro prelereaseCython intro prelerease
Cython intro prelerease
 
PyCon mini Hiroshima アクセシビリティを支えるPython
PyCon mini Hiroshima アクセシビリティを支えるPythonPyCon mini Hiroshima アクセシビリティを支えるPython
PyCon mini Hiroshima アクセシビリティを支えるPython
 
5社のGTFSをマージして、PostgreSQLにインポートしてみた
5社のGTFSをマージして、PostgreSQLにインポートしてみた5社のGTFSをマージして、PostgreSQLにインポートしてみた
5社のGTFSをマージして、PostgreSQLにインポートしてみた
 
C-langage
C-langageC-langage
C-langage
 
Python 3.6 リリースパーティー 発表資料
Python 3.6 リリースパーティー 発表資料Python 3.6 リリースパーティー 発表資料
Python 3.6 リリースパーティー 発表資料
 
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい2
 
with NATS with Kubernetesの世界へ
with NATS with Kubernetesの世界へwith NATS with Kubernetesの世界へ
with NATS with Kubernetesの世界へ
 
CppCon2016 report and Boost.SML
CppCon2016 report and Boost.SMLCppCon2016 report and Boost.SML
CppCon2016 report and Boost.SML
 
Rust-DPDK
Rust-DPDKRust-DPDK
Rust-DPDK
 
いまさら聞けないRake入門
いまさら聞けないRake入門いまさら聞けないRake入門
いまさら聞けないRake入門
 
JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2
JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2
JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2
 
ラボユース最終成果報告会(Web公開版)
ラボユース最終成果報告会(Web公開版)ラボユース最終成果報告会(Web公開版)
ラボユース最終成果報告会(Web公開版)
 
Stream2の基本
Stream2の基本Stream2の基本
Stream2の基本
 
NetBSD/evbarm on Raspberry Pi
NetBSD/evbarm on Raspberry PiNetBSD/evbarm on Raspberry Pi
NetBSD/evbarm on Raspberry Pi
 
Pd Kai#3 Startup Process
Pd Kai#3 Startup ProcessPd Kai#3 Startup Process
Pd Kai#3 Startup Process
 
"Programming Hive" Reading #1
"Programming Hive" Reading #1"Programming Hive" Reading #1
"Programming Hive" Reading #1
 
GPU-FPGA 協調計算を記述するためのプログラミング環境に関する研究(HPC169 No.10)
GPU-FPGA 協調計算を記述するためのプログラミング環境に関する研究(HPC169 No.10)GPU-FPGA 協調計算を記述するためのプログラミング環境に関する研究(HPC169 No.10)
GPU-FPGA 協調計算を記述するためのプログラミング環境に関する研究(HPC169 No.10)
 
Programming Hive Reading #3
Programming Hive Reading #3Programming Hive Reading #3
Programming Hive Reading #3
 
GPU-FPGA協調プログラミングを実現するコンパイラの開発
GPU-FPGA協調プログラミングを実現するコンパイラの開発GPU-FPGA協調プログラミングを実現するコンパイラの開発
GPU-FPGA協調プログラミングを実現するコンパイラの開発
 

Similar to Googleの基盤クローン Hadoopについて

Hadoop splittable-lzo-compression
Hadoop splittable-lzo-compressionHadoop splittable-lzo-compression
Hadoop splittable-lzo-compressionDaiki Sato
 
ただいまHadoop勉強中
ただいまHadoop勉強中ただいまHadoop勉強中
ただいまHadoop勉強中Satoshi Noto
 
Data-Intensive Text Processing with MapReduce(Ch1,Ch2)
Data-Intensive Text Processing with MapReduce(Ch1,Ch2)Data-Intensive Text Processing with MapReduce(Ch1,Ch2)
Data-Intensive Text Processing with MapReduce(Ch1,Ch2)Sho Shimauchi
 
Hadoop for programmer
Hadoop for programmerHadoop for programmer
Hadoop for programmerSho Shimauchi
 
VLDB2011勉強会 Research Session 18: MapReduce and Hadoop
VLDB2011勉強会 Research Session 18: MapReduce and HadoopVLDB2011勉強会 Research Session 18: MapReduce and Hadoop
VLDB2011勉強会 Research Session 18: MapReduce and HadoopHiroaki Shiokawa
 
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料) 40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料) hamaken
 
Hadoopの紹介
Hadoopの紹介Hadoopの紹介
Hadoopの紹介bigt23
 
Asakusa Enterprise Batch Processing Framework for Hadoop
Asakusa Enterprise Batch Processing Framework for HadoopAsakusa Enterprise Batch Processing Framework for Hadoop
Asakusa Enterprise Batch Processing Framework for HadoopTakashi Kambayashi
 
【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~
【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~
【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~Developers Summit
 
Map server入門 - FOSS4G 2012 Hokkaido
Map server入門 - FOSS4G 2012 HokkaidoMap server入門 - FOSS4G 2012 Hokkaido
Map server入門 - FOSS4G 2012 HokkaidoHideo Harada
 
クラウド時代の並列分散処理技術
クラウド時代の並列分散処理技術クラウド時代の並列分散処理技術
クラウド時代の並列分散処理技術Koichi Fujikawa
 
ビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラムビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラムRecruit Technologies
 
Rubyによるお手軽分散処理
Rubyによるお手軽分散処理Rubyによるお手軽分散処理
Rubyによるお手軽分散処理maebashi
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力ThinReports
 

Similar to Googleの基盤クローン Hadoopについて (20)

MapReduce/YARNの仕組みを知る
MapReduce/YARNの仕組みを知るMapReduce/YARNの仕組みを知る
MapReduce/YARNの仕組みを知る
 
Hadoop splittable-lzo-compression
Hadoop splittable-lzo-compressionHadoop splittable-lzo-compression
Hadoop splittable-lzo-compression
 
Hadoop事始め
Hadoop事始めHadoop事始め
Hadoop事始め
 
ただいまHadoop勉強中
ただいまHadoop勉強中ただいまHadoop勉強中
ただいまHadoop勉強中
 
Data-Intensive Text Processing with MapReduce(Ch1,Ch2)
Data-Intensive Text Processing with MapReduce(Ch1,Ch2)Data-Intensive Text Processing with MapReduce(Ch1,Ch2)
Data-Intensive Text Processing with MapReduce(Ch1,Ch2)
 
Hadoop入門
Hadoop入門Hadoop入門
Hadoop入門
 
AI・HPC・ビッグデータで利用される分散ファイルシステムを知る
AI・HPC・ビッグデータで利用される分散ファイルシステムを知るAI・HPC・ビッグデータで利用される分散ファイルシステムを知る
AI・HPC・ビッグデータで利用される分散ファイルシステムを知る
 
Hadoop for programmer
Hadoop for programmerHadoop for programmer
Hadoop for programmer
 
VLDB2011勉強会 Research Session 18: MapReduce and Hadoop
VLDB2011勉強会 Research Session 18: MapReduce and HadoopVLDB2011勉強会 Research Session 18: MapReduce and Hadoop
VLDB2011勉強会 Research Session 18: MapReduce and Hadoop
 
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料) 40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
 
Hadoopの紹介
Hadoopの紹介Hadoopの紹介
Hadoopの紹介
 
Asakusa Enterprise Batch Processing Framework for Hadoop
Asakusa Enterprise Batch Processing Framework for HadoopAsakusa Enterprise Batch Processing Framework for Hadoop
Asakusa Enterprise Batch Processing Framework for Hadoop
 
【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~
【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~
【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~
 
Map server入門 - FOSS4G 2012 Hokkaido
Map server入門 - FOSS4G 2012 HokkaidoMap server入門 - FOSS4G 2012 Hokkaido
Map server入門 - FOSS4G 2012 Hokkaido
 
クラウド時代の並列分散処理技術
クラウド時代の並列分散処理技術クラウド時代の並列分散処理技術
クラウド時代の並列分散処理技術
 
ビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラムビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラム
 
Rubyによるお手軽分散処理
Rubyによるお手軽分散処理Rubyによるお手軽分散処理
Rubyによるお手軽分散処理
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
 
Hadoop, NoSQL, GlusterFSの概要
Hadoop, NoSQL, GlusterFSの概要Hadoop, NoSQL, GlusterFSの概要
Hadoop, NoSQL, GlusterFSの概要
 
Scala on Hadoop
Scala on HadoopScala on Hadoop
Scala on Hadoop
 

More from Kazuki Ohta

Optimization Techniques at the I/O Forwarding Layer
Optimization Techniques at the I/O Forwarding LayerOptimization Techniques at the I/O Forwarding Layer
Optimization Techniques at the I/O Forwarding LayerKazuki Ohta
 
修士中間発表
修士中間発表修士中間発表
修士中間発表Kazuki Ohta
 
Hadoop @ Java CCC 2008 Spring
Hadoop @ Java CCC 2008 SpringHadoop @ Java CCC 2008 Spring
Hadoop @ Java CCC 2008 SpringKazuki Ohta
 
Sedue at Hatena::Bookmark
Sedue at Hatena::BookmarkSedue at Hatena::Bookmark
Sedue at Hatena::BookmarkKazuki Ohta
 
Google Perf Tools (tcmalloc) の使い方
Google Perf Tools (tcmalloc) の使い方Google Perf Tools (tcmalloc) の使い方
Google Perf Tools (tcmalloc) の使い方Kazuki Ohta
 

More from Kazuki Ohta (6)

Optimization Techniques at the I/O Forwarding Layer
Optimization Techniques at the I/O Forwarding LayerOptimization Techniques at the I/O Forwarding Layer
Optimization Techniques at the I/O Forwarding Layer
 
Using MPI
Using MPIUsing MPI
Using MPI
 
修士中間発表
修士中間発表修士中間発表
修士中間発表
 
Hadoop @ Java CCC 2008 Spring
Hadoop @ Java CCC 2008 SpringHadoop @ Java CCC 2008 Spring
Hadoop @ Java CCC 2008 Spring
 
Sedue at Hatena::Bookmark
Sedue at Hatena::BookmarkSedue at Hatena::Bookmark
Sedue at Hatena::Bookmark
 
Google Perf Tools (tcmalloc) の使い方
Google Perf Tools (tcmalloc) の使い方Google Perf Tools (tcmalloc) の使い方
Google Perf Tools (tcmalloc) の使い方
 

Recently uploaded

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 

Recently uploaded (8)

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 

Googleの基盤クローン Hadoopについて

  • 1. Google の基盤クローン Hadoop について 太田 一樹 <kazuki.ohta@gmail.com>
  • 2.
  • 3.
  • 4.
  • 5.
  • 7.
  • 8. 性能 ( 僕が測ってみた )
  • 9.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 20. MapReduce の実行フロー Data Map Data Map Data Map Reduce Reduce Data Data Shuffle
  • 21.
  • 22. MapReduce の実行フロー Data Map Data Map Data Map Reduce Reduce Data Data Shuffle <k, v>* <k, v>* <k, v>* <k, v>* ⇒ <k’, v’>* <k’, <v’>*>* ⇒ <k’’, v’’>* <k, v>* ⇒ <k’, v’>* <k, v>* ⇒ <k’, v’>* <k’, <v’>*>* ⇒ <k’’, v’’>*
  • 23. 例 : ワードカウント Data Map Data Map Data Map Reduce Reduce Data Data Shuffle foo foo foo bar bar buzz 入力文書 : doc1
  • 24. 例 : ワードカウント Data Map Data Map Data Map Reduce Reduce Data Data Shuffle foo foo foo bar bar buz 入力文書 : doc1 doc1: foo doc1: foo doc1: foo doc1: bar doc1: bar doc1: buz
  • 25. 例 : ワードカウント Data Map Data Map Data Map Reduce Reduce Data Data Shuffle foo foo foo bar bar buz 入力文書 : doc1 doc1: foo doc1: bar doc1: bar doc1: buz doc1: foo doc1: foo
  • 26. 例 : ワードカウント Data Map Data Map Data Map Reduce Reduce Data Data foo foo foo bar bar buz 入力文書 : doc1 doc1: foo doc1: bar doc1: bar doc1: buz doc1: foo doc1: foo foo: 1 foo: 1 bar: 1 foo: 1 bar: 1 buz: 1
  • 27. 例 : ワードカウント Data Map Data Map Data Map Reduce Reduce Data Data foo foo foo bar bar buz 入力文書 : doc1 foo: 1 foo: 1 bar: 1 foo: 1 bar: 1 buz: 1 bar: <1, 1> buz: <1> foo: <1, 1, 1>
  • 28. 例 : ワードカウント Data Map Data Map Data Map Reduce Reduce Data Data foo foo foo bar bar buz 入力文書 : doc1 bar: <1, 1> buz: <1> foo: <1, 1, 1>
  • 29. 例 : ワードカウント Data Map Data Map Data Map Reduce Reduce Data Data foo foo foo bar bar buz 入力文書 : doc1 foo: <1, 1, 1> bar: <1, 1> buz: <1> foo: 3 bar: 2 buz: 1
  • 30. 例 : ワードカウント Data Map Data Map Data Map Reduce Reduce Data Data foo foo foo bar bar buz 入力文書 : doc1 bar: 2 buz: 1 foo: 3
  • 31.
  • 32.
  • 33.
  • 35.
  • 36.
  • 38.
  • 39.
  • 40.
  • 41.
  • 43.
  • 44.
  • 46. HDFS の操作方法 # ls alias dfsls='~/hadoop/bin/hadoop dfs -ls‘ # ls -r alias dfslsr='~/hadoop/bin/hadoop dfs -lsr‘ # rm alias dfsrm='~/hadoop/bin/hadoop dfs -rm‘ # rm -r alias dfsrmr='~/hadoop/bin/hadoop dfs -rmr' # cat alias dfscat='~/hadoop/bin/hadoop dfs -cat‘ # mkdir alias dfsmkdir='~/hadoop/bin/hadoop dfs -mkdir‘
  • 47. HDFS の操作方法 hadoop@pficore:~$ dfsls Found 5 items /user/hadoop/access-log <r 3> 3003 2008-04-30 00:21 /user/hadoop/hoge <r 3> 2183 2008-04-30 00:32 /user/hadoop/reported <dir> 2008-04-30 00:28 /user/hadoop/wcinput <r 3> 29 2008-05-08 10:17 /user/hadoop/wcoutput <dir> 2008-05-08 11:48
  • 48.
  • 49. HDFS の使用方法 hadoop@pficore:~$ dfsls Found 0 items hadoop@pficore:~$ dfsput hoge.txt hoge.txt hadoop@pficore:~$ dfsls Found 1 items /user/hadoop/hoge.txt <r 3> 31 2008-05-08 12:00
  • 50.
  • 51. Hadoop Programming on Hadoop with “Java”
  • 52. Skipped for Kernel Hackers  who never want to write Java :-P
  • 53. Hadoop Programming on Hadoop with “ Hadoop Streaming ” (sh, C, C++, Ruby, Python, etc.)
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61. 例 : Ruby によるワードカウント map.rb #!/usr/bin/env ruby while !STDIN.eof? line = STDIN.readline.strip ws = line.split ws.each { |w| puts &quot;#{w}1“ } end reduce.rb #!/usr/bin/env ruby h = {} while !STDIN.eof? line = STDIN.readline.strip word = line.split(&quot;&quot;)[0] unless h.has_key? word h[word] = 1 else h[word] += 1 end end h.each { |w, c| puts &quot;#{w}#{c}“ } $ ./bin/hadoop jar contrib/hadoop-0.15.3-streaming.jar -input wcinput -output wcoutput -mapper /home/hadoop/kzk/map.rb -reducer /home/hadoop/kzk/reduce.rb -inputformat TextInputFormat -outputformat TextOutputFormat
  • 62.
  • 63.
  • 64. Enjoy Playing Around Hadoop  Thank you! kzk