Slide 1

Slide 1 text

2019-03-14 Data Engineer, SmartNews Inc 廣瀬 智史 Cloud-Nativeなデータ分析基盤 におけるPrestoの活用 Hadoop / Spark Conference Japan 2019

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

データの活用(データ分析、機械学習) 例: ニュース(記事+動画)配信 ● 記事+動画のカテゴライズ ● フィードにおけるレコメンド 例: 広告配信 ● 様々な配信最適化 例: データサイエンス ● 経営指標の計算や予測

Slide 6

Slide 6 text

● 当時の構成 ○ MapReduce(mrjob) + MongoDB ● 課題 ○ 集計処理が必要になるたびに MapReduce処理を追加する必要が あった ○ 見たいデータを追加するたびに可視 化のためのウェブアプリを修正する必 要があった ○ データを気軽に分析できる環境では なかった 2014年当時のSmartNewsデータ基盤の構成と課題 in-house visualization web application

Slide 7

Slide 7 text

Hadoop Conference in Japan 2014 ● Facebookが公開したSQL Query Engine ● 大規模データセットに対してもイ ンタラクティブなレスポンスを返 す ● Presto自身はデータストレージ を持っていない ● 複数のデータソース(Hive, Cassandra, MySQL, etc…)に 対して一度に集計を実行するこ とができる https://tug.red/entry/2014/07/10/150250/

Slide 8

Slide 8 text

Presto/Hiveの導入 ● 変更後の構成 ○ S3 + Presto + Hive ● コンセプト ○ ETLバッチ処理はHive, リアルタイム データ集計はPresto ○ ストレージとコンピューテーションリソー スを分離 ○ SQLを書ければ誰でもデータ分析がで きるようにする BI Tools, CLI, Data Application

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

EMR+S3によるCloud-Nativeなデータ分析基盤 [デメリット] ● マルチクラスター化によって複数のHive MetaStore Databaseにデータが分散してし まい、それらを跨いだ集計処理が難しくなる 広告配信 チーム Hive MetaStore multi EMR clusters S3 Buckets ニュース配信 チーム multi EMR clusters S3 Buckets Hive MetaStore

Slide 11

Slide 11 text

● データが分散して存在しまう状況への 対応 ○ Prestoをインターフェイスにするこ とで複数のデータソースにまた がった集計が可能に other Applications CLI Hive(Ads) Hive(News) other databases PrestoによるData Aggregation BI Tool

Slide 12

Slide 12 text

● EMRを使うのではなく、EC2上にクラス ターを構築している ● 負荷状況によりworkerをオートスケール させ、利用状況の増減に対応している ● 利用用途により、複数のクラスターが存 在する ○ 一部では今年2月にリリースされた version 302を使い始めている Prestoの活用(1)

Slide 13

Slide 13 text

● defaultのPrestoには存在しないコネクターの追加や、独自のファンクション の追加を行なっている ○ 例: Kinesis connector ○ 例: fast JSON extraction function ○ 例: AWS function ■ ddb_get() Prestoの活用(2) Table Name

Slide 14

Slide 14 text

● PrestoやHiveのバージョンアップに追従する仕組みの整備 ○ 検証環境の整備など ● 監視の強化 ○ 問題のあるクエリの実行検知 ○ ETL処理結果のvalidation ○ SLI/SLOの設定 ● データフォーマットや設定の最適化 ○ RCFile から ORC への移行など ● Streaming Processingの拡充 SmartNewsデータ分析基盤の課題と今後

Slide 15

Slide 15 text

Presto Software Foundationの設立 ● 2019年1月にPrestoの開発コミュニ ティをサポートするためStarburst Data, Arm Treasure Data, Qubole などのengineerにより設立 ● 今後はこれまでのprestodb/presto (2019/3時点最新バージョンが 0.217)がprestosql/presto(2019/3時 点最新バージョンが305)に分岐し、開 発が進んでいく

Slide 16

Slide 16 text

まとめ ● SmartNewsでは、EMRとS3を使用したCloud-Nativeなデータ処理基盤を、 Hive/Prestoを活用することで実現している ● Hiveを中心としたETL処理により、エンジニア以外もロジックの実装に参加で きるようになった ● Prestoを活用することで、社内の様々なデータをSQLによって集計し、分析 できるようになった ● transientなクラスターを活用するなど、メンテナンスコストを下げることを意識 し、それぞれのチームごとのOwnershipを持って開発を進めることができる

Slide 17

Slide 17 text

Thank you!