Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Cloud-Nativeなデータ分析基盤におけるPrestoの活用 / Cloud-Native Data Infrastructure with Presto
Search
satoshihirose
March 14, 2019
Programming
1
8k
Cloud-Nativeなデータ分析基盤におけるPrestoの活用 / Cloud-Native Data Infrastructure with Presto
Hadoop / Spark Conference Japan 2019で話した資料です。
http://hadoop.apache.jp/hcj2019-program/
satoshihirose
March 14, 2019
Tweet
Share
More Decks by satoshihirose
See All by satoshihirose
顧客に価値を届け続けられる プロダクトであるために ~B2B SaaSにおいてプロダクトビジョン・戦略を改めて 策定するまでの道のり~
satoshihirose
2
340
Data Product Manager? / データプロダクトマネージャーとは?
satoshihirose
3
23k
Overview of The Modern Data Stack / モダンデータスタック概論
satoshihirose
11
6.9k
Data Engineering at SmartNews
satoshihirose
4
3k
Other Decks in Programming
See All in Programming
脱・初心者!脱・マネコン!AWS CDKを使ってみませんか!?
har1101
0
160
Crafting a Own PHP - ウキウキ手作りミニマリストPHP
uzulla
4
1.1k
Laravel標準バリデーションでできること
hmb_ok
2
360
もうすぐ新年度、Babylon.jsがお勧めな3個の理由
hideg
0
170
9年開発を牽引して見えてきた、共通化すべきものと個別でつくるもの ~プログラム言語~
shinout
1
130
プロンプトエンジニアリング入門
tomokusaba
2
980
Learning PHP and Static Analysis with PHP Parser
inouehi
1
250
htmx is fun!
codehex
2
190
object-oriented-conference-2024
fuwasegu
6
1.9k
決断するための勇気、そのためのBacklog / Courage to make decisions, Backlog for that.
seike460
PRO
4
1.9k
今の SmartHR にエンジニアで入社するとどうなるの?
daisukeshinoku
3
1.3k
Creating Retro-Style Photos Using Swift
ski
1
360
Featured
See All Featured
Happy Clients
brianwarren
91
6.3k
A designer walks into a library…
pauljervisheath
199
23k
Build your cross-platform service in a week with App Engine
jlugia
223
17k
The Power of CSS Pseudo Elements
geoffreycrofte
58
4.9k
Optimizing for Happiness
mojombo
369
69k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
19
1.9k
Building a Modern Day E-commerce SEO Strategy
aleyda
15
6.3k
No one is an island. Learnings from fostering a developers community.
thoeni
14
2k
Typedesign – Prime Four
hannesfritz
36
2k
What's in a price? How to price your products and services
michaelherold
236
11k
Learning to Love Humans: Emotional Interface Design
aarron
266
39k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
501
140k
Transcript
2019-03-14 Data Engineer, SmartNews Inc 廣瀬 智史 Cloud-Nativeなデータ分析基盤 におけるPrestoの活用 Hadoop
/ Spark Conference Japan 2019
None
None
None
データの活用(データ分析、機械学習) 例: ニュース(記事+動画)配信 • 記事+動画のカテゴライズ • フィードにおけるレコメンド 例: 広告配信 •
様々な配信最適化 例: データサイエンス • 経営指標の計算や予測
• 当時の構成 ◦ MapReduce(mrjob) + MongoDB • 課題 ◦ 集計処理が必要になるたびに
MapReduce処理を追加する必要が あった ◦ 見たいデータを追加するたびに可視 化のためのウェブアプリを修正する必 要があった ◦ データを気軽に分析できる環境では なかった 2014年当時のSmartNewsデータ基盤の構成と課題 in-house visualization web application
Hadoop Conference in Japan 2014 • Facebookが公開したSQL Query Engine •
大規模データセットに対してもイ ンタラクティブなレスポンスを返 す • Presto自身はデータストレージ を持っていない • 複数のデータソース(Hive, Cassandra, MySQL, etc…)に 対して一度に集計を実行するこ とができる https://tug.red/entry/2014/07/10/150250/
Presto/Hiveの導入 • 変更後の構成 ◦ S3 + Presto + Hive •
コンセプト ◦ ETLバッチ処理はHive, リアルタイム データ集計はPresto ◦ ストレージとコンピューテーションリソー スを分離 ◦ SQLを書ければ誰でもデータ分析がで きるようにする BI Tools, CLI, Data Application
EMR+S3によるCloud-Nativeなデータ分析基盤 [メリット] • Less Maintenance: マネージドサービスを 活用することで運用を少なく • Elasticity: long
runningなHadoopクラスタ の他にも、必要に応じてtransientなHadoop クラスタを活用できる。ワークロードに応じて クラスターの規模を増減できる • DevOps: 用途やチームに応じてクラスター を使い分けることで、依存性が局所化され、 チームがownershipを持てる 広告配信 チーム Hive MetaStore multi EMR clusters S3 Buckets ニュース配信 チーム multi EMR clusters S3 Buckets Hive MetaStore
EMR+S3によるCloud-Nativeなデータ分析基盤 [デメリット] • マルチクラスター化によって複数のHive MetaStore Databaseにデータが分散してし まい、それらを跨いだ集計処理が難しくなる 広告配信 チーム Hive
MetaStore multi EMR clusters S3 Buckets ニュース配信 チーム multi EMR clusters S3 Buckets Hive MetaStore
• データが分散して存在しまう状況への 対応 ◦ Prestoをインターフェイスにするこ とで複数のデータソースにまた がった集計が可能に other Applications CLI
Hive(Ads) Hive(News) other databases PrestoによるData Aggregation BI Tool
• EMRを使うのではなく、EC2上にクラス ターを構築している • 負荷状況によりworkerをオートスケール させ、利用状況の増減に対応している • 利用用途により、複数のクラスターが存 在する ◦
一部では今年2月にリリースされた version 302を使い始めている Prestoの活用(1)
• defaultのPrestoには存在しないコネクターの追加や、独自のファンクション の追加を行なっている ◦ 例: Kinesis connector ◦ 例: fast
JSON extraction function ◦ 例: AWS function ▪ ddb_get() Prestoの活用(2) Table Name
• PrestoやHiveのバージョンアップに追従する仕組みの整備 ◦ 検証環境の整備など • 監視の強化 ◦ 問題のあるクエリの実行検知 ◦ ETL処理結果のvalidation
◦ SLI/SLOの設定 • データフォーマットや設定の最適化 ◦ RCFile から ORC への移行など • Streaming Processingの拡充 SmartNewsデータ分析基盤の課題と今後
Presto Software Foundationの設立 • 2019年1月にPrestoの開発コミュニ ティをサポートするためStarburst Data, Arm Treasure Data,
Qubole などのengineerにより設立 • 今後はこれまでのprestodb/presto (2019/3時点最新バージョンが 0.217)がprestosql/presto(2019/3時 点最新バージョンが305)に分岐し、開 発が進んでいく
まとめ • SmartNewsでは、EMRとS3を使用したCloud-Nativeなデータ処理基盤を、 Hive/Prestoを活用することで実現している • Hiveを中心としたETL処理により、エンジニア以外もロジックの実装に参加で きるようになった • Prestoを活用することで、社内の様々なデータをSQLによって集計し、分析 できるようになった
• transientなクラスターを活用するなど、メンテナンスコストを下げることを意識 し、それぞれのチームごとのOwnershipを持って開発を進めることができる
Thank you!