Hadoop / Spark Conference Japan 2019で話した資料です。 http://hadoop.apache.jp/hcj2019-program/
2019-03-14Data Engineer, SmartNews Inc廣瀬 智史Cloud-Nativeなデータ分析基盤におけるPrestoの活用Hadoop / Spark Conference Japan 2019
View Slide
データの活用(データ分析、機械学習)例: ニュース(記事+動画)配信● 記事+動画のカテゴライズ● フィードにおけるレコメンド例: 広告配信● 様々な配信最適化例: データサイエンス● 経営指標の計算や予測
● 当時の構成○ MapReduce(mrjob) + MongoDB● 課題○ 集計処理が必要になるたびにMapReduce処理を追加する必要があった○ 見たいデータを追加するたびに可視化のためのウェブアプリを修正する必要があった○ データを気軽に分析できる環境ではなかった2014年当時のSmartNewsデータ基盤の構成と課題in-house visualizationweb application
Hadoop Conference in Japan 2014● Facebookが公開したSQLQuery 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を持てる広告配信チームHiveMetaStoremulti EMR clustersS3 Bucketsニュース配信チームmulti EMR clustersS3 BucketsHiveMetaStore
EMR+S3によるCloud-Nativeなデータ分析基盤[デメリット]● マルチクラスター化によって複数のHiveMetaStore Databaseにデータが分散してしまい、それらを跨いだ集計処理が難しくなる広告配信チームHiveMetaStoremulti EMR clustersS3 Bucketsニュース配信チームmulti EMR clustersS3 BucketsHiveMetaStore
● データが分散して存在しまう状況への対応○ Prestoをインターフェイスにすることで複数のデータソースにまたがった集計が可能にother ApplicationsCLIHive(Ads) Hive(News) other databasesPrestoによるData AggregationBI 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の開発コミュニティをサポートするためStarburstData, 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!