17
Google BigQuery Analytics 読書会#2 2014/08/26(Tue) tagomoris

BigQuery読書会#2資料

Embed Size (px)

DESCRIPTION

Chapter9 #8

Citation preview

Page 1: BigQuery読書会#2資料

Google BigQuery Analytics 読書会#2

2014/08/26(Tue)tagomoris

Page 2: BigQuery読書会#2資料

MapReduce

ここ10年くらいのびっぐでーたなアレ

データ処理の抽象化がキモ

Map: データ変換

Reduce: データ集約

data.map(&:convert).reduce(&:aggregate)

Page 3: BigQuery読書会#2資料

キモ(い)

Page 4: BigQuery読書会#2資料

かわいい

Page 5: BigQuery読書会#2資料

Hadoop

Doug CuttingがYahoo!でつくった

Page 6: BigQuery読書会#2資料

MapReduce Design実はMapとReduceだけじゃない

Map, Combine, Shuffle, Reduce + 分散FS

FS

Map

Map

Map

Map

Map

Combine

Combine

Combine

Combine

Combine

Reduce

FSReduce

Reduce

Reduce

shuffle

Page 7: BigQuery読書会#2資料

Map phase

Map: 副作用なしで作りましょう

これにより順序や並列度を好きにできる

Mapper in MapReduce

input -> [ (key, value), (key, value), ... ]

Page 8: BigQuery読書会#2資料

Combine phase

Combiner in MapReduce

Mapperの出力をまとめてI/Oを最適化

Shufflerにわたす

Page 9: BigQuery読書会#2資料

Shuffle phase

Shuffler in MapReduce: 要は並列分散sort

sort keyはMapperの出力key

同一keyのvalueは同一Reducerに送る

[(k,v1),(k,v2),...] -> (k, [v1,v2,v3,...])たいてい最も重い

hash partitioningだけでよい場合も多い

がHadoopは完全なmerge sortを行う

Page 10: BigQuery読書会#2資料

Reduce phase

Reduce: 結果セットをまとめる

Reducer in MapReduce

(k,[v1,v2,...]) -> (k,V)

Page 11: BigQuery読書会#2資料

MapReduce example

みんな大好きword count

省略!

Page 12: BigQuery読書会#2資料

Storage system

MapReduce自体はストレージ非依存だが実際には分散ストレージが必要大量の並列DiskI/Oを高スループットで処理する必要がある

書かれていないが並列度以外にスループット確保のためのbig chunk sizeが必要なはずでも書かれてないってことはGoogleは……?

Page 13: BigQuery読書会#2資料

Worker management

Worker managerが必要Controller in Google MapReduceName Node in Hadoop: 間違い!正: JobTracker (MRv1) or AppMaster(MRv2)

大量のノード管理、failed worker管理、failed job管理アクシデントで死んだworkerと、バグや入力データがおかしくて死んだworkerの区別

Page 14: BigQuery読書会#2資料

Comparative analysis(1)

フツーのHWを買い足せばリニアにスケール

Mapper/Reducerを書けばなんでもできる

ノードのspinupが遅い、shuffle待ちが長い

手を動かしながらの解析には向かない

MapとReduceに処理を分解するのはダルい

あれこれやると多段MRになりダルさ倍増

Page 15: BigQuery読書会#2資料

Comparative analysis(2)

ダルいんでみんなあれこれ作っている

Cascading: Java+FluentAPI -> MR

Hive,Pig: SQL or SQL-style queries -> MR

PigはSQLじゃないだろ……手続き型なDSL

Page 16: BigQuery読書会#2資料

Comparative analysis(3)MapReduce: 低レベルフレームワーク

いろいろ考えないといけない

Googleではもう普通は直接使わない

FlumeJava経由でMapReduce使う

デカいデータ変換とかで使われてる

データ調査についてはDremel

Page 17: BigQuery読書会#2資料

Summary

BigQueryがどう動くか見たよ

Dremel query engine + Colossus FS次になんか起きたらどうにかできるかもね

HadoopやMySQLと較べたよ

何にでも向くものはないよね、選ぼう

次章はいろんなクエリを見ていくよ