SlideShare a Scribd company logo
データ集計基盤のいままでとこれから
〜HadoopからDataflowまで使い込んだ経験を徹底共有〜
db techshowcase 2018
Fringeneer 三ツ橋和宏
自己紹介
名前:三ツ橋和宏(ミッツ)
業務:広告システム開発を全般的に経験した後
データ処理基盤の改善を担当。
趣味:自転車(チャリ通)、ラン(最近始めました)
Qiita :https://qiita.com/kaz3284
データ集計基盤の役割
処理
Input
ログ
データ集計基盤=デー
タ処理
output 成果物データ
データ集計基盤の性質
Input ログ
ログデータの大小に関わらず同じアプリケーション。
100行、100億行のデータでも。
規模によって変わるのはインフラ〜ミドル部分。
大規模データをどれだけスムーズに処理できるか💪
データ処理で試行錯誤してきました。
色々な学びを得て、たどり着いたのが
Dataflowでした。
本日はその過程を徹底共有します!
本日の内容
・Dataflowについて
・データ処理の試行錯誤
・難題を解決へ
・新しい取り組み
Dataflowとは?
GCPのサービスで、
バッチ処理はもちろん、ストリーミング処理まで
守備範囲の広いデータ処理が可能。
パイプラインを定義して、フルマネージドで実行
パイプライン実行
Dataflowについて
GoogleのソースコードがOSSへ寄付され、
ApacheBeamプロジェクトで開発が進められてい
る。
Beamの由来はBatch-Streamから。
フルマネージドな実行環境として、
GCPのCloud Dataflowが提供されている。
Dataflowのユースケース
参照:https://cloud.google.com/dataflow/
GCPのBigQuery、DataStore、Pub/Sub...と連携できて
主にETL(Extract、Transform、Load)ツールとして使われる
手軽な使い方
ETLで手軽に使えるようテンプレートが用意されている。
下記のようなテンプレートを使うとコード書く必要なく使える。
•Pub/Sub to BigQuery
•Cloud Storage Text to Pub/Sub
•Datastore to Cloud Storage Text
•Storage Text to Datastore
•Bulk Compress Cloud Storage Files
コードはgithubで公開されていて、カスタマイズ可能。
Dataflowの強み
GCPの主要サービスと連携して、
シームレスに接続
フルマネージドな実行環境で、
負荷状況に応じて自動スケール
(CPUを上手に使ってくれる)
使った結果(サマリ)
Hadoop(MapReduce)を使っていたバッチ処理を移植
強みが生きて、長年抱えていた難題を解決。
・サーバ台数調整手間削減
・処理の安定性向上
・コスト削減
試行錯誤してきた
データ処理を振り返り
本日の内容
・Dataflowについて
・データ処理の試行錯誤
・難題を解決へ
・新しい取り組み
最初は単純にDBで処理
(〜2010頃)
最初はDB(オンプレ)で処理
Input ログ
データ処理:MySQLDB
output 成果物データ
間も無く
データ量増加に伴って、処理時間が大きくなり...
最終的には、
再集計(リカバリ)をひたすら繰り返す運用😱
つらみ
高価なサーバ使うも処理できない...
Hadoop導入
(2011頃)
Hadoopで分散処理(オンプレ)
Input ログ
output 成果物データ
データ処理:Hadoop
Hadoopについて
分散型データ処理の元祖。
GoogleのMapReduceに触発されて
開発されたオープンソース。
仕組み
足りなければ増やして解決!
つらみ
全タスク終わるまで時間かかり過ぎる...
処理待ちやり繰りのための、人的負荷増大...
1処理/クラスタ
Amazon EMR導入
(2012頃〜)
必要な時に並列処理
必要な時に必要なだけ
クラウドにクラスタを起動
必要なだけ並列化!
補足:Amazon EMRについて
ElasticMapReduce:伸縮可能MapReduce
必要なマシンリソースを指定、
任意数のクラスタを起動して、Hadoop実行
使った分だけの課金
物理制約から解放してくれた救世主😇
リソースがMapperとReducerに別れているため
使い切るのが難しい(Hadoopの性質)
つらみ
最適化のために個別パラメータの調整
(調整失敗すると途中で失敗してやり直し)
EMRのリソース調整
調整項目
• 各種ノード数
• Mapper/Reducer割合
• メモリ容量
最後に残った難題
サーバ利用効率悪く、
データ量に応じて個別のパラメータ調整
運用を楽に、より効率的な処理方法へ!
データ集計処理は、
日々集まるデータが増え、
機能追加も増え
根本的な問題解決が必要。
本日の内容
・Dataflowについて
・データ処理の試行錯誤
・難題を解決へ
・新しい取り組み
近年登場した分散処理ツールは使える?
Cloud
Dataflow
BigQuery
Amazon
Redshift
Amazon
Kinesis
分類してみる
SQLで処理できるタイプ
バッチ、ストリーム処理できるタイプ(Hadoopに近い)
BigQuery
Cloud
Dataflow
Amazon
Redshift
Amazon
Kinesis
SQLで処理できるタイプが多い。
SQL実行できるため、コード書く必要がない。
エンジニア以外でもデータ処理実行できる。
=エンジニアにとっても
手軽に開発でき、運用も楽に
Hadoop以降の分散型データ処理ツール
HadoopのMapReduceと同等の処理を
SQLで表現してみると
数100行のコード 15行のSQL文
試してみる
BigQuery
• 簡単に使い始められる
• サーバレス、フルマネージドで
PB級のデータも難なく処理
• 料金もリーズナブル
• ストレージ:$0.02/GB
• クエリ:$5/TB
すごい謎技術😇
早速、処理コストを試算してみると...
Hadoop(MapReduce)での処理と
同じ結果を出す処理(移植)を
実行するとして試算...
処理コスト:数倍...😭
コスト増の要因
MapReduce処理をSQLに移植すると
大量データに対して、
何回もクエリ発行する必要がある...
SQL処理が使えないのでなく、
使い方が間違っていた。
SQLでMapReduceは再現できない。
Hadoop(MapReduce)処理は、
データを1行づつ読み込みつつ
Map -> Reduceと進む基本的なデータ処理。
MapReduceでSQLを再現することはできるが、
SQLでMapReduceを再現するのは厳しい。
SQL
MapReduce
処理コスト増えないよう、移植するには
MapReduceとSQL処理の特性を生かして
適材適所で組み合わせて使えばいい
データをkey毎にまとめ上げる
SQLで実行
user_idをkeyにまとめ上げる(group by)
key毎のデータを読み込みながら個別処理
MapReduceで実行
user_id毎にデータを処理
taroの個別処理
hanakoの個別処理
jiroの個別処理
処理の流れと種類図に表すと
データをkey毎にまとめ上げる
key毎のデータを読み込みながら個別処理 key毎のデータを〜
key毎のデータを〜 key毎のデータを〜 key毎のデータを〜
ログ
今までの問題を解決しつつ
2つの特性を生かして組み合わせ処理
Dataflow
難題を解決できる
Dataflowの強み
GCPの主要サービスと連携して、
シームレスに接続
フルマネージドな実行環境で、
負荷状況に応じて自動スケール
具体的な構成(バッチモード)
ログ
Dataflow
BigQuer
y
データ処理
output
Dataflowで動かすと
SQLとMapReduceが連動して期待通り動いた。
パイプライン
オートスケール
難題は解決した?
• CP高いBigQueryを中心にMapReduceで補完する役割分
担でコスト削減
• 処理負荷に応じた自動スケールで楽になった!
難題 運用を楽に、より効率的な処理方法へ!
解決
本日の内容
Dataflowについて
データ処理に試行錯誤した過程について
難題をどう解決するか?
新しい取り組み
Dataflowの更なる活用
BigQuery Dataflow
Dataflow上に機械学習を実装
Datastore
Uniposというピアボーナスサービスでは
ユーザ投稿されたデータの中から、埋もれてしまう
有益なデータを抽出する機能を実装。
とは?
共に働く仲間と送り合う
ピアボーナスを実現するサービス
埋もれてしまう投稿の中から優れたものを抽出
機械学習モジュールと相性が良いpythonでバッチ実装
メッセージ
ポイント
拍手
まとめ
• Dataflowは様々なデータ処理を連携できる。
• 連携機能を活用して、難題だった
「処理効率改善」「運用手間改善」を解決。
• 今回紹介したのはほんの一例
(機械学習と組み合わせたり、ストリーム処理化...)
ご静聴ありがとうございました。

More Related Content

PDF
40歳過ぎてもエンジニアでいるためにやっていること
PPTX
イベント・ソーシングを知る
PDF
Rustに触れて私のPythonはどう変わったか
PDF
バンディットアルゴリズム入門と実践
PPTX
WayOfNoTrouble.pptx
PDF
時系列予測にTransformerを使うのは有効か?
PDF
目grep入門 +解説
40歳過ぎてもエンジニアでいるためにやっていること
イベント・ソーシングを知る
Rustに触れて私のPythonはどう変わったか
バンディットアルゴリズム入門と実践
WayOfNoTrouble.pptx
時系列予測にTransformerを使うのは有効か?
目grep入門 +解説

What's hot (20)

PDF
開発速度が速い #とは(LayerX社内資料)
PDF
Dockerからcontainerdへの移行
PDF
ゼロから始める転移学習
PDF
マイクロサービス 4つの分割アプローチ
PDF
楽天のデータサイエンス/AIによるビッグデータ活用
PDF
ネットワーク ゲームにおけるTCPとUDPの使い分け
PDF
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
PPTX
OpenVRやOpenXRの基本的なことを調べてみた
PDF
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PDF
(修正)機械学習デザインパターン(ML Design Patterns)の解説
PDF
SSII2022 [OS3-02] Federated Learningの基礎と応用
PPTX
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
PDF
3000社の業務データ絞り込みを支える技術
PDF
マイクロにしすぎた結果がこれだよ!
PDF
BigQueryの課金、節約しませんか
PDF
エンジニアも知っておきたいAI倫理のはなし
PPTX
論文の書き方入門 2017
PDF
失敗から学ぶ機械学習応用
PDF
正しいものを正しくつくる
PDF
[Cloud OnAir] BigQuery の仕組みからベストプラクティスまでのご紹介 2018年9月6日 放送
開発速度が速い #とは(LayerX社内資料)
Dockerからcontainerdへの移行
ゼロから始める転移学習
マイクロサービス 4つの分割アプローチ
楽天のデータサイエンス/AIによるビッグデータ活用
ネットワーク ゲームにおけるTCPとUDPの使い分け
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
OpenVRやOpenXRの基本的なことを調べてみた
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
(修正)機械学習デザインパターン(ML Design Patterns)の解説
SSII2022 [OS3-02] Federated Learningの基礎と応用
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
3000社の業務データ絞り込みを支える技術
マイクロにしすぎた結果がこれだよ!
BigQueryの課金、節約しませんか
エンジニアも知っておきたいAI倫理のはなし
論文の書き方入門 2017
失敗から学ぶ機械学習応用
正しいものを正しくつくる
[Cloud OnAir] BigQuery の仕組みからベストプラクティスまでのご紹介 2018年9月6日 放送
Ad

Similar to データ集計基盤のいままでとこれから 〜Hadoopからdataflowまで使い込んだ経験を徹底共有〜 (20)

PDF
開発中の新機能 Spark Declarative Pipeline に飛びついてみたが難しかった(JEDAI DAIS Recap#2 講演資料)
PDF
Azure データサービスデザイン検討 (2015/10)
PDF
基本から学ぶ ビッグデータ / データ分析 / 機械学習 サービス群
PDF
20130612 ibm big_dataseminar_streams
PDF
マイニング探検会#10
PDF
Google Cloud Dataflow を理解する - #bq_sushi
PDF
初めてのデータ分析基盤構築をまかされた、その時何を考えておくと良いのか
PDF
[Oracle Innovation Summit Tokyo 2018] 水環境の持続を支えるクラウド型ICTプラットフォーム「Water Busine...
PDF
IoT時代におけるストリームデータ処理と急成長の Apache Flink
PDF
Open Cloud Innovation2016 day1(これからのデータ分析者とエンジニアに必要なdatascienceexperienceツールと...
PDF
変わる!? リクルートグループのデータ解析基盤
PPTX
Spark+AI Summit Europe 2019 セッションハイライト(Spark Meetup Tokyo #2 講演資料)
PDF
Spark + AI Summit 2020セッションのハイライト(Spark Meetup Tokyo #3 Online発表資料)
PPTX
データ収集の基本と「JapanTaxi」アプリにおける実践例
PDF
DeNA のデータ活用を支える BigQuery データの民主化とガバナンス強化の軌跡 | Google Cloud INSIDE Games & App...
PPTX
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
PDF
Facebookのリアルタイム Big Data 処理
PPTX
データドリブン企業におけるHadoop基盤とETL -niconicoでの実践例-
PDF
Dataflow(python)を触った所感
PDF
S01 t3 data_engineer
開発中の新機能 Spark Declarative Pipeline に飛びついてみたが難しかった(JEDAI DAIS Recap#2 講演資料)
Azure データサービスデザイン検討 (2015/10)
基本から学ぶ ビッグデータ / データ分析 / 機械学習 サービス群
20130612 ibm big_dataseminar_streams
マイニング探検会#10
Google Cloud Dataflow を理解する - #bq_sushi
初めてのデータ分析基盤構築をまかされた、その時何を考えておくと良いのか
[Oracle Innovation Summit Tokyo 2018] 水環境の持続を支えるクラウド型ICTプラットフォーム「Water Busine...
IoT時代におけるストリームデータ処理と急成長の Apache Flink
Open Cloud Innovation2016 day1(これからのデータ分析者とエンジニアに必要なdatascienceexperienceツールと...
変わる!? リクルートグループのデータ解析基盤
Spark+AI Summit Europe 2019 セッションハイライト(Spark Meetup Tokyo #2 講演資料)
Spark + AI Summit 2020セッションのハイライト(Spark Meetup Tokyo #3 Online発表資料)
データ収集の基本と「JapanTaxi」アプリにおける実践例
DeNA のデータ活用を支える BigQuery データの民主化とガバナンス強化の軌跡 | Google Cloud INSIDE Games & App...
NTTデータが考えるデータ基盤の次の一手 ~AI活用のために知っておくべき新潮流とは?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
Facebookのリアルタイム Big Data 処理
データドリブン企業におけるHadoop基盤とETL -niconicoでの実践例-
Dataflow(python)を触った所感
S01 t3 data_engineer
Ad

データ集計基盤のいままでとこれから 〜Hadoopからdataflowまで使い込んだ経験を徹底共有〜

Editor's Notes

  • #2: 資料は後ほど公開する予定です〜
  • #3: スライドは後ほど公開。写真は撮るひつないです。
  • #5: Inputとなるログデータを規模の大小に関わらず同じアプリケーションで処理する仕組み。 ログデータの規模によって変わるのはインフラ〜ミドル部分。 「大規模データをどれだけスムーズに処理できるか」にやりがい。
  • #8: Googleではビックデータ=データという。
  • #9: 裏ではComputeEngineが起動されてパイプライン処理が動きだす。 上から下へ流れていくイメージ
  • #10: ちなみに、ビックデータ処理の先駆けとして有名になったHadoopは 当時Googleが社内で使っていたMapReduceが元になったが、 論文を元にOSS化されたためGoogle初感なく悔しい思いがあった。 Dataflow
  • #12: githubのURLを入れる。 様々なサービスとの組みあわせができる。
  • #18: DBにデータを入れさえすれば
  • #19: これはヤヴァイ。 心身ともに消耗する... (データ量:数千万行)
  • #20: オンプレなので、注文したサーバが届く日を心待ち(2ヶ月くらい) にしつつ置き換え...思ったより性能でない... スケールアップで重いデータ処理は解決できない。
  • #22: 全ページに年代入れる...
  • #25: しばらく運用してたら、 当時の規模では、オンプレで1クラスタを運用するのが精一杯だった。 (データ量:〜1億行) excelで実行管理表作ってタスク運用。
  • #28: 一言でいうと「オンプレの物理的制約から解放してくれた救世主」
  • #29: データ処理をオンプレからクラウドに移行して、 物理的な問題からは解放され、ダイブ助かるようになったが... 個別の処理リソースの調整をしなければ処理が終わらないなのど、運用面での難題が残った。 待ちサーバ:Hadoopの マシン使用率低下問題 MapperとReducerでサーバが別れる
  • #30: EMRのWebUI画面のキャプチャ。 ここにでているマスターノード、コアノード、タスクノード数の他にもMapper/Reducer割合やメモリ調整 を個別のデータセットに合わせて調整していく必要がある。 個別のデータセットは十数個あって1日一回データ処理が動く。
  • #38: 検討した結果。SQL型で難題の解決に一番近いのはBigQueryと結論して試して見ました。 1ページじゃまとめ切れないほどのネタがありますが、一言で表すと
  • #49: 全体を俯瞰するUIで見るとこんな感じ。 ポイントポイント絞って見ていきます。
  • #50: 上から下へ流れるイメージです。 BigQueryからデータを読み出し、 マスターデータと結合。 統合処理を実行した後outputをBigQueryに書き出す処理です。 途中で失敗した場合は赤色になってログが出力される。
  • #51: オートスケール
  • #52: サーバ利用効率悪く、 データ量に応じて個別のパラメータ調整
  • #53: 最後に新しい取り組みについて紹介したいと思います。
  • #54: 機会学習をやってて、こういう目的でやってるんです。
  • #55: メッセージにポイントをつけてピアボーナスを送りたい人に向けて投稿します。 投稿された内容は誰もが見れるタイムラインに表示される。
  • #56: ピアボーナスの要素は メッセージ ポイント 拍手 メッセージとポイントは投稿者から付与されるもの。 拍手はそれを見て共感したら送るもの。 良い投稿があってもタイムラインで流れてしまうのがもったいないところ 機会学習onDataflowで、メッセージ、ポイント、拍手数からよい投稿を再度ピックアップする機能を開発中 データ処理の制約少なくサクッと実装できるのがよいところ。