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. Google が描く、MapReduce を
    超えたビッグデータの世界

    View Slide

  2. +Kazunori Sato
    @kazunori_279
    佐藤 一憲
    デベロッパー アドボケイト
    Cloud Platform, Google Inc.
    クラウド コミュニティ支援
    クラウド製品ローンチ支援

    View Slide

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

    View Slide

  4. Google BigQuery

    View Slide

  5. Dremel
    MapReduce
    2012 2013
    2002 2004 2006 2008 2010
    GFS
    MillWheel
    Flume
    Google BigQuery
    BigQuery

    View Slide

  6. BigQuery: 超並列クエリ サービス

    View Slide

  7. Googleでは簡単な
    データ解析にMapReduce
    は使いません
    使うのはDremel
    = Google BigQuery
    SELECT
    top(appId, 20) AS app,
    count(*) AS count
    FROM installlog.2012
    ORDER BY
    count DESC
    20秒で1000億行をスキャン可能
    インデックスは不使用

    View Slide

  8. BigQueryのデモ

    View Slide

  9. 例: 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

    View Slide

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

    View Slide

  11. カラム指向ストレージ
    レコード指向ストレージ カラム指向ストレージ
    低帯域、高圧縮

    View Slide

  12. 超並列処理
    select top(title), count(*)
    from publicdata:samples.wikipedia
    1 TBを1秒でスキャンするには
    5,000台のディスクが必要
    個々のクエリを数千のサーバー上で実行

    View Slide

  13. ミキサー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
    ツリー構造による高速アグリゲーション

    View Slide

  14. BigQuery Analytic Service in the Cloud
    BigQuery
    Google
    アナリティクス
    解析 エクスポート
    インポート
    インポート、解析、エクスポート
    ETLツール
    コネクター
    BIツールと可視化
    Googleクラウド Googleクラウド
    スプレッドシート、R、
    Hadoop

    View Slide

  15. 驚くほど高速
    20秒で1000億行のスキャンが可能
    SQL
    シンプルかつ直感的なSQL
    低コスト
    ストレージ: 1カ月 $0.020/GB
    クエリ: $5/TB
    フルマネージド
    運用コストなしで数千のサーバーを利用
    BigQueryのメリット

    View Slide

  16. Google Cloud Dataflow

    View Slide

  17. Dremel
    MapReduce
    2012 2013
    2002 2004 2006 2008 2010
    GFS
    MillWheel
    Flume
    Cloud Dataflow
    Cloud Dataflow
    BigQuery

    View Slide

  18. 2014年6月24日: Google I/Oで発表
    2014年12月17日: アルファ
    2015年4月15日: ベータ
    次のマイルストーン: 一般向け提供開始
    Cloud Dataflowのリリーススケジュール

    View Slide

  19. ETL
    フィルタリング
    データ付加
    データ変換
    バッチ
    ストリーム処理
    コンポジション
    オーケストレーション
    Cloud Dataflowの用途

    View Slide

  20. Google Cloud Platform
    におけるCloud Dataflow
    ストリーム
    バッチ
    Cloud
    Pub/Sub
    Cloud
    Logging
    Cloud
    Dataflow
    BigQuery
    Cloud
    Storage
    Cloud
    Dataflow
    Bigtable
    Google
    Cloud
    Storage

    View Slide

  21. 関数型プログラミング モデル
    バッチ処理とストリーム処理を統一
    オープンソースのSDK
    フルマネージドの実行環境を提供
    Cloud Dataflowの特長

    View Slide

  22. Cloud Dataflow SDK for Java and Python

    View Slide

  23. Cloud Dataflowのコンセプト

    View Slide

  24. Pipelineはデータの流れを表す有向非循
    環グラフ (DAG) :
    MapReduce/Hadoopジョブ
    Apache Sparkジョブ
    複数の入力と出力
    Google Cloud Storage
    Google BigQuery tables
    Google Pub/Sub
    Google Cloud Bigtable
    … およびあらゆる外部システム
    Pipeline

    View Slide

  25. Pipeline内のデータの集まり
    任意のサイズのデータを扱える
    BoundedとUnbounded (Stream)
    Key-Valueペアも扱える
    {Seahawks, NFC,
    Champions,
    Seattle, ...}
    {KVKVKVPCollection

    View Slide

  26. Transforms
    M M M
    R R
    GroupByKey
    ParDo
    Combine.GroupedValues

    View Slide

  27. オートコンプリートの例
    ツイート
    予測
    読み
    込み
    #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()

    View Slide

  28. 時間
    #ar*
    順位
    試合開始 アルメニアの
    勝利!
    #argyle
    #armeniarocks
    古いデータをエージアウト
    #argentinagoal
    バッチ処理からストリーム処理へ

    View Slide

  29. 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();

    View Slide

  30. Windowとは:
    Pcollectionのタイムスライス
    Fixed: 毎時間、毎日…
    Sliding: 最後の1分...
    Session: 各セッション
    夜間 日中 夜間
    Window

    View Slide

  31. Cloud Dataflow:
    フルマネージドの実行環境

    View Slide

  32. Google Cloud Dataflow
    最適化
    スケジューリ
    ング
    GCS GCS
    ユーザーコード & SDK モニタリング UI
    パイプラインの
    流れ

    View Slide

  33. 実行グラフ
    IN
    1
    IN
    2
    IN
    3
    IN
    4
    join
    OUT
    1
    OUT
    2
    C
    A
    D
    flatten F
    B
    = ParallelDo
    count E

    View Slide

  34. 最適化された実行グラフ
    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

    View Slide

  35. リアルタイム監視用UI

    View Slide

  36. 800 RPS 1,200 RPS 5,000 RPS 50 RPS
    ワーカーのスケーリング

    View Slide

  37. フルマネージド
    何百というノードに対して運用コストゼロ
    スケーラビリティ、フォールトトレランス、最適化
    バッチ + ストリーム処理
    単一論理で2つのパラダイムを統合
    容易なパイプライン設計
    Java/Pythonを使用してパイプラインを定義
    Cloud Dataflowのメリット

    View Slide

  38. 時間の最適化
    プログラミング
    データを掘り下げる
    時間の拡大
    Cloud Dataflow を活用するデータ処理
    通常のデータ処理
    プログラミング
    リソース
    プロビジョニング
    拡大する規模
    への対応
    信頼性
    デプロイメント/設

    活用の改善
    パフォーマンスの
    微調整
    監視

    View Slide

  39. cloud.google.com/bigquery
    cloud.google.com/dataflow
    始めてみよう

    View Slide

  40. ありがとうございました

    View Slide