Share
Embed
Amazon Athena for Apache Sparkを使ってデータ分析をしよう!
DevelopersIO 2023 大阪にて発表した資料になります。
https://dev.classmethod.jp/news/devio-2023-osaka/
Nayuta S.
July 20, 2023
Transcript
45 slides
-
⽬次 2 • はじめに(セッション背景など) • データ分析における課題 • Amazon Athena for
Apache Sparkの紹介 • Amazon Athena for Apache Sparkの利⽤イメージ • ほかのサービスとの⽐較 • 想定するユースケース例 • 使ってみるために ※ ご感想は #devio2023 を⼊れてツイートしてください︕ -
3 ⾃⼰紹介 名前︓鈴⽊ 那由太(スズキ ナユタ) 所属︓データアナリティクス事業本部 インテグレーション部 機械学習チーム 担当︓システムエンジニア 現在の業務︓データ分析基盤構築
機械学習を使⽤したソリューション開発 受賞歴︓2023 Japan AWS Top Engineers (Analytics) 2022 APN AWS Top Engineers (Analytics) Osaka -
⽬次 4 • はじめに(セッション背景など) • データ分析における課題 • Amazon Athena for
Apache Sparkの紹介 • Amazon Athena for Apache Sparkの利⽤イメージ • ほかのサービスとの⽐較 • 想定するユースケース例 • 使ってみるために -
このセッションの背景 5 • re:Invent2022でAmazon Athena for Apache Sparkが登場した。 Apache Sparkを実⾏できるサービスの使い分けに興味を持った。
• データマート作成や、機械学習の特徴量作成のための、インタラクティブな分析を ⾏う機会が多数あった。 ⼤規模なデータに対してより効率よく分析を進めるための仕組みを求めていたので、 インタラクティブな分析を強調するこのサービスについて技術検証をしている。 このサービスについて、調査・検証の中で分かった 特徴や⽴ち位置についてご共有したい。 -
このセッションで話したいこと 6 • データレイクのデータに対して⾼いアジリティで分析を進められるインタラクティブな 分析インターフェースがAWSで登場した。 • これが『Amazon Athena for Apache
Spark』 • データ分析⽤の分散処理システムや、ETL・ELTのジョブの準備なしで、 エンドユーザーが直接⼤規模なデータを分析できるようになった。 • このサービスにより、データ分析基盤構築の幅がどのように広がるか考えたい。 -
⽬次 7 • はじめに(セッション背景など) • データ分析における課題 • Amazon Athena for
Apache Sparkの紹介 • Amazon Athena for Apache Sparkの利⽤イメージ • ほかのサービスとの⽐較 • 想定するユースケース例 • 使ってみるために -
10 特徴量作成から活⽤の2ステップ どんなデータの傾向があるかを探り、機械学習モデルの学習に有⽤な特徴量を作成する。 特徴量は、データマートとして継続的に作成するためのシステムを作成し、運⽤される。 データサイエンティスト 傾向の確認 S3バケット (⽣データ) マート作成処理 S3バケット
(⽣データ) S3バケット (データマート) Amazon Athena AWS Glue データサイエンティスト 活⽤ ※必要があれば匿名化など 最低限の加⼯をしておく ①データの探索 ②データの活⽤ ▪ 特徴量作成の例 -
11 インテグレーションの例 Amazon Personalizeを活⽤したレコメンデーションの例 ETL処理 レコメンド⽣成処理 データソース ECサイト等 リアルタイムレコメンド (APIリクエスト)
バッチレコメンド (S3に結果をまとめて格納) Amazon API Gateway バッチレコメンド結果の⼀括取得 (APIリクエスト) AI/MLのコア要素以外に必要な機能をサービスインテグレーションで解決 AI/MLのコア要素 AWS Cloud レコメンデーションモデルの継続的な学習・推論のため、データソースからデータマートへの ETL処理が開発・運⽤される。 -
12 ⼤規模なデータを分析する際の難しさ ⽣データが巨⼤なために、分析⽤の分散処理システムやETLジョブが必要な場合がある。 このリソースは、データエンジニアが作成することが多い。 データサイエンティスト 傾向の確認 S3バケット (⽣データ) データエンジニア マート作成処理
S3バケット ( ⽣データ ) S3バケット (データマート) Amazon Athena AWS Glue データサイエンティスト 活⽤ ※必要があれば匿名化など 最低限の加⼯をしておく ①データの探索 ②データの活⽤ ▪ 特徴量作成の例 データが⼤きいと分析に時間が かかったり、分析⽤リソースの メモリに載らないなどの課題が ある。 データ分析基盤の データエンジニアの 協⼒が必要 -
13 分析⽤リソース開発のボトルネック データが⼤規模な場合に分析⽤の分散処理システムやETL処理システム開発は、 データ分析基盤側に依頼することが多い。 データエンジニア マート作成処理 S3バケット (データレイク) S3バケット (データマート)
Amazon Athena AWS Glue エンドユーザー1 要求1 ②データの活⽤ エンドユーザー2 ・・・ 要求2 エンドユーザー数に対して、 データエンジニアの数の⽅が 少ないことが多く、ボトルネックと なりやすい。 データエンジニアがボトルネックになるケースがある。 -
14 開発のボトルネック部分 Amazon Personalizeを活⽤したレコメンデーションの例 ETL処理 レコメンド⽣成処理 データソース ECサイト等 リアルタイムレコメンド (APIリクエスト)
バッチレコメンド (S3に結果をまとめて格納) Amazon API Gateway バッチレコメンド結果の⼀括取得 (APIリクエスト) AI/MLのコア要素以外に必要な機能をサービスインテグレーションで解決 AI/MLのコア要素 AWS Cloud この部分がボトルネックに なりやすい︕ -
15 エンドユーザーが分析したいデータ Amazon Personalizeを活⽤したレコメンデーションの例 ETL処理 レコメンド⽣成処理 データソース ECサイト等 リアルタイムレコメンド (APIリクエスト)
バッチレコメンド (S3に結果をまとめて格納) Amazon API Gateway バッチレコメンド結果の⼀括取得 (APIリクエスト) AI/MLのコア要素以外に必要な機能をサービスインテグレーションで解決 AI/MLのコア要素 AWS Cloud 分析したいデータはここなので、 とりあえずこのデータを直接⾒たい︕ -
いちおしポイントは︖ 17 Amazon Athena for Apache Spark AWS Cloud S3
バケット (データ) ⼿軽に起動できるノートブックだけで、 ⼤規模なデータに対してインタラクティブに分析ができる︕︕︕ ウォームスタンバイなしで、 セルを実⾏すると直ちに 処理が開始される︕ Athenaノートブック -
よくある分析構成の例と課題 18 • ノートブックサーバーや BIダッシュボードサーバーで処理が終わらない・ダウンしてしまう。 • Athenaで処理した結果をサーバーで取得して開くのが⾯倒。 S3 バケット (マート層)
Amazon Athena AWS Cloud S3 バケット (レイク層) User ノートブックサーバー ⾮常に効率が悪い。 BIダッシュボード サーバー User 課題 構成例 -
代替の分析構成例 19 • Amazon Athena for Apache SparkでS3のデータを分析できる。 • ユーザーごとにコンピュートが⽤意されるので、誰かが重たいクエリを実⾏して
マシンが重くなるということもない。 • サーバー保守も不要。 Amazon Athena for Apache Spark AWS Cloud S3 バケット (レイク・マート層) User User 構成例 良い点 -
⽬次 20 • はじめに(セッション背景など) • データ分析における課題 • Amazon Athena for
Apache Sparkの紹介 • Amazon Athena for Apache Sparkの利⽤イメージ • ほかのサービスとの⽐較 • 想定するユースケース例 • 使ってみるために -
Amazon Athena for Apache Sparkについて 21 • re:Invent2022にて発表されたAthenaの新機能 • ⼤規模なデータに対するインタラクティブな分析を⽬的としている
• AthenaノートブックからPySparkが利⽤できる -
Amazon Athena for Apache Sparkのここがすごい︕ 22 • 数クリックで起動するAthenaノートブックで、⼤規模なデータでも分析可能︕ • ノートブックのシェアで、分析処理や説明・考察の共有ができる。
• インタラクティブな処理実⾏に最適化されたApache Sparkが利⽤できる。 ノートブックから、セル実⾏後数秒で処理が実⾏開始される。 (ウォームスタンバイなし) • Glueデータカタログのテーブルへの読み込み・書き込みがシームレスにできる。 -
Amazon Athenaについて 23 • AWS Glueと統合されたインタラクティブなクエリサービス。 • Athena SQLでは、Presto・Trinoの⼀部関数を利⽤してSQLで分析できる。(左) •
Amazon Athena for Apache SparkではPySparkとAthenaノートブックを サポートしている。(右) -
PySparkについて 24 https://spark.apache.org/docs/latest/api/python/index.html より2023/06/10に引⽤ • Apache SparkのPython向けのAPI • Pythonを使⽤して、リアルタイムに⼤規模なデータに対して処理を実⾏できる。 •
Amazon Athena for Apache SparkではMLlibはサポートされていな い。(本発表時点) -
Apache Sparkの動作イメージ 25 https://spark.apache.org/docs/latest/cluster-overview.html より2023/06/10に引⽤ • Driver Programがデータに対する操作を最適化してタスクとし、Worker Nodeでタスクが実⾏される。 •
アプリケーションとして使う分にも、遅延評価やボトルネックに関する多少の慣れと ノウハウは必要だが、⾮常に簡単に⼤規模なデータを分散処理できる。 -
⽬次 26 • はじめに(セッション背景など) • データ分析における課題 • Amazon Athena for
Apache Sparkの紹介 • Amazon Athena for Apache Sparkの利⽤イメージ • ほかのサービスとの⽐較 • 想定するユースケース例 • 使ってみるために -
リソースの作成イメージ 27 ワークグループ ワークグループ Role Role Athena ノートブック セッション ノートブック
ノード ドライバ ノード ワークグループ Role Athena ノートブック ワークグループ Role Athena ノートブック セッション ノートブック ノード ドライバ ノード ワーカー ノード 実行 完了 セッション 開始 ノートブック 作成 セッション 終了 -
パラメータ設定 31 • 各ノードのサイズをDPU単位で変更可能です。 • 1DPU: • 4 個の vCPU
• 16 GB のメモリ • 最⼤同時実⾏数については、個⼈的には意図がない 場合は、最初は⼩さめにしておくと良いかもしません。 -
⽬次 34 • はじめに(セッション背景など) • データ分析における課題 • Amazon Athena for
Apache Sparkの紹介 • Amazon Athena for Apache Sparkの利⽤イメージ • ほかのサービスとの⽐較 • 想定するユースケース例 • 使ってみるために -
AWS上のJupyter Notebook(互換)を使うサービス⽐較 35 # 案 所感 1 Athena for Apache
Spark ⼤規模データのインタラクティブ分析に最適化されている。 2 Amazon SageMaker Studio インスタンスサイズが起動時に固定になる。 プロセッシングなどで処理は別コンテナにオフロードできるが、 単⼀インスタンスでの処理が想定されないデータ量の処理は難しい。 3 AWS Glue StudioのJupyter Notebook 基本的にはGlue Jobの開発⽤途となる。 4 Amazon EMR カスタマイズ性が⾼いが設定も難しい。インタラクティブな分析のためには、 Pre-initialized workersの準備が必要になるかも。 5 Amazon EC2でJupyter Labなどをホスト 構築・運⽤の難易度が⾼い。インスタンスサイズも固定。 • アドホックな分析⽤途としては、Amazon Athena for Apache Sparkか SageMaker Studioのどちらかが選択肢に挙がる。 • Amazon Athenaはマネージドで、Glueデータカタログとの連携も想定されている。 Sparkの起動も⾮常に速く、インタラクティブな分析に最適化されている。 -
これまでのAthena SQLよりもいいの︖ 36 • 個⼈的には以下のように考えています。 • Pythonの⽅が、SQLでは簡潔に書けない処理をより簡潔に書く表現⼒がある。 特に関数を使うことで⾏数を減らし、保守性を⾼めやすい。 • PySparkを使ったアプリケーション開発をするよりも、SQLを使った開発をする⽅が
難易度は低い。 • Pythonは既存のテスト⽤ライブラリを使うことでテストしやすい⾔語ではあるが、 SQLでもdbtなどのツールを使ってテストできる。 • ノートブックで分析処理を共有できる利点は⼤きい。 SQLファイルだけで分析内容を共有することはかなり⼯夫が必要だった。 -
⽬次 37 • はじめに(セッション背景など) • データ分析における課題 • Amazon Athena for
Apache Sparkの紹介 • Amazon Athena for Apache Sparkの利⽤イメージ • ほかのサービスとの⽐較 • 想定するユースケース例 • 使ってみるために -
データマート作成のための検証 39 AWS Cloud S3バケット (レイク) Amazon Athena (Athena SQL)
Amazon Athena for Apache Spark ・マート作成のための検証 S3バケット (マート) AWS Cloud User AWS Lake Formation User Data Catalog Data Catalog • レイク層の⽣データからデータマートを作成する際の概念実証をする。 -
⽬次 41 • はじめに(セッション背景など) • データ分析における課題 • Amazon Athena for
Apache Sparkの紹介 • Amazon Athena for Apache Sparkの利⽤イメージ • ほかのサービスとの⽐較 • 想定するユースケース例 • 使ってみるために -
権限制御 42 Amazon Athena for Apache Spark AWS Glue Data
Catalog S3 Bucket Role User AWS Cloud Role • ノートブックで実⾏されるSparkアプリケーションの権限はワークグループに設定した IAMロールで制御する。 • どのユーザーがどのワークグループにアクセスしてよいかは、IAMユーザーおよび スイッチしているIAMロールのポリシーにて制御する。 -
料⾦⾯ 43 https://aws.amazon.com/jp/athena/pricing/ https://aws.amazon.com/jp/sagemaker/pricing/ ※参考︓SageMaker Studio • 1DPU/時あたり0.50USD(東京リージョン) • 別リージョンでは価格が異なり、最も安いリージョンで現状0.35USD
• ドライバは常に起動し、処理に応じてワーカーノード分も課⾦される。 • SageMaker Studioで1DPUに相当するインスタンスタイプだと0.261USD/時〜 -
まとめ 44 • 昨年12⽉に発表されたAmazon Athena for Apache Sparkについて紹介した。 • 簡単に開始でき、エンドユーザーが⼤規模なデータをインタラクティブに分析できるようになる、
新しい⽴ち位置のサービスだと考えている。 • AthenaノートブックでPySparkの処理や説明を記述でき、分析内容を簡単に 共有することができる。 • データマートの検証や、良い特徴量の探索のような、分析内容が毎回異なり、 トライ&エラーを⾼速で繰り返す分析作業を強⼒にサポートしてくれるサービスと考えられる。