Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GCP Next: Googleが描く、MapReduceを超えたビッグデータの世界

GCP Next: Googleが描く、MapReduceを超えたビッグデータの世界

GCP Next 2015のセッション「Googleが描く、MapReduceを超えたビッグデータの世界」のスライドです。

GoogleCloudPlatformJapan

June 18, 2015
Tweet

More Decks by GoogleCloudPlatformJapan

Other Decks in Programming

Transcript

  1. +Kazunori Sato @kazunori_279 佐藤 一憲 デベロッパー アドボケイト Cloud Platform, Google Inc.

    クラウド コミュニティ支援 クラウド製品ローンチ支援
  2. Dremel MapReduce 2012 2013 2002 2004 2006 2008 2010 GFS

    MillWheel Flume Cloud Dataflow MapReduceを超えた世界 BigQuery
  3. Dremel MapReduce 2012 2013 2002 2004 2006 2008 2010 GFS

    MillWheel Flume Google BigQuery BigQuery
  4. Googleでは簡単な データ解析にMapReduce は使いません 使うのはDremel = Google BigQuery SELECT top(appId, 20)

    AS app, count(*) AS count FROM installlog.2012 ORDER BY count DESC 20秒で1000億行をスキャン可能 インデックスは不使用
  5. 例: 1000億行に対するRegEx + GROUP BY SELECT language, SUM(views) as views

    FROM ( SELECT title, language, MAX(views) as views FROM [helixdata2:benchmark.Wiki100B] WHERE REGEXP_MATCH(title, "G.*o.*") GROUP EACH BY title, language ) GROUP EACH BY language ORDER BY views desc
  6. 実行時間: ~30秒* • 4 TBのデータを読み込み • 1000億の正規表現を実行 • 278 GBをシャッフル

    1台のサーバーだと (推定数値): • ディスクから4 TBを読み込むのに11.6時間 • 1000億の正規表現を実行するのに27時間 • 278 GBをシャッフルするのに37分 例: 1000億行に対するRegEx + GROUP BY *これらの数字は特定のケースにおけるGoogle BigQuery の性能の一例であり、性能を保証するものでは ありません。
  7. ミキサー0 ミキサー1 ミキサー1 シャード シャード シャード シャード ColumnIO on Colossus

    SELECT state, year COUNT(*) GROUP BY state WHERE year >= 1980 and year < 1990 ORDER BY count_babies DESC LIMIT 10 COUNT(*) GROUP BY state ツリー構造による高速アグリゲーション
  8. BigQuery Analytic Service in the Cloud BigQuery Google アナリティクス 解析

    エクスポート インポート インポート、解析、エクスポート ETLツール コネクター BIツールと可視化 Googleクラウド Googleクラウド スプレッドシート、R、 Hadoop
  9. Dremel MapReduce 2012 2013 2002 2004 2006 2008 2010 GFS

    MillWheel Flume Cloud Dataflow Cloud Dataflow BigQuery
  10. Google Cloud Platform におけるCloud Dataflow ストリーム バッチ Cloud Pub/Sub Cloud

    Logging Cloud Dataflow BigQuery Cloud Storage Cloud Dataflow Bigtable Google Cloud Storage
  11. Pipelineはデータの流れを表す有向非循 環グラフ (DAG) : MapReduce/Hadoopジョブ Apache Sparkジョブ 複数の入力と出力 Google Cloud

    Storage Google BigQuery tables Google Pub/Sub Google Cloud Bigtable … およびあらゆる外部システム Pipeline
  12. オートコンプリートの例 ツイート 予測 読み 込み #argentina scores, my #art project,

    watching #armenia vs #argentina タグの抽出 #argentina #art #armenia #argentina カウント (argentina, 5M) (art, 9M) (armenia, 2M) プレフィクス対応 a->(argentina,5M) ar->(argentina,5M) arg->(argentina,5M) ar->(art, 9M) ... 上位3件抽出 書き 出し a->[apple, art, argentina] ar->[art, argentina, armenia] .apply(TextIO.Read.from(...)) .apply(ParDo.of(new ExtractTags())) .apply(Count.create()) .apply(ParDo.of(new ExpandPrefixes()) .apply(Top.largestPerKey(3) Pipeline p = Pipeline.create(); p.begin(); .apply(TextIO.Write.to(...)); p.run()
  13. Cloud PubSubでストリーム処理 Pipeline p = Pipeline.create(new PipelineOptions()); p.begin() .apply(PubsubIO.Read.topic(“input_topic”)) .apply(Window.into(SlidingWindows.of(

    Duration.standardMinutes(60))) .apply(ParDo.of(new ExtractTags())) .apply(Count.perElement()) .apply(ParDo.of(new ExpandPrefixes()) .apply(Top.largestPerKey(3)) .apply(PubsubIO.Write.topic(“output_topic”)); p.run();
  14. 実行グラフ IN 1 IN 2 IN 3 IN 4 join

    OUT 1 OUT 2 C A D flatten F B = ParallelDo count E
  15. 最適化された実行グラフ IN 1 IN 2 IN 3 IN 4 OUT

    1 OUT 2 GBK = ParallelDo GBK = GroupByKey + = CombineValues J 2 +F + Cnt GBK + C+D+J 1 B+D+J 1 A+J 1 E+J 1
  16. 時間の最適化 プログラミング データを掘り下げる 時間の拡大 Cloud Dataflow を活用するデータ処理 通常のデータ処理 プログラミング リソース

    プロビジョニング 拡大する規模 への対応 信頼性 デプロイメント/設 定 活用の改善 パフォーマンスの 微調整 監視