Developers.IO 2017セッション「AWSで始めるビッグデータ分析」で話しました #cmdevio2017
クラスメソッドが運営するIT系技術ブログDevelopers.IOのカンファレンスイベントDevelopers.IO 2017にて、セッション「AWSで始めるビッグデータ分析」を発表しました。そのレポートです。
発表スライド
セッションの概要
セッションの対象者
AWS初級者向けの位置付けで、以下のような方を対象としました。
- AWSでデータ分析を始めたい(…何から始めたらよいかわからない)
- AWSでデータ分析基盤を構築するためのベストプラクティスを知りたい
- AWSの利用経験がある(VPC, EC2, RDS, S3, etc.)
アジェンダ
- パイプラインで考えるデータ分析基盤
- AWSでデータ分析基盤を構築する際の、AWSサービス選択の考え方
- データ分析に効くAWSサービス
- データ分析向けのAWSサービスの紹介
- データ分析リファレンスアーキテクチャ
- セッションで触れたAWSサービスを使ったデータ分析アーキテクチャパターンの紹介
パイプラインで考えるデータ分析基盤
AWSにはデータ分析で利用できるサービスが豊富にあります。これらを利用すれば安く、早く、スケーラブルなデータ分析基盤を構築することができます。一方で、実現したい分析要件に対してどのサービスを選択すればよいか?を迷われる方も多いかと思います。
本セッションではデータ分析基盤を構築時のAWSサービスの選択のポイントとして以下を挙げました。
- データ分析をパイプラインで考える
- 収集、前処理、保存、分析、可視化
- AWSの各サービスが何に最適化されているか?また最適化された結果のトレードオフは何か?を理解する
- スループット、レイテンシー、スケーラビリティ、扱えるデータタイプ/データ構造、カスタマイズ性、上限値、コスト
- 各サービスの特徴を理解した上で、パイプライン上のそれぞれのジョブに最適なサービスを選択する
またパイプラインのそれぞれの工程ごとに、サービス選択の着眼点をご紹介しました。
収集
データタイプに着目
- ファイル:Amazon S3へアップロード
- ストリームデータ:Amazon Kinesis Streams、Amazon Kinesis Firehose、AWS IoTで収集
- 収集したデータはS3に集約する
- ストリームデータについてもリアルタイムに処理すると同時にS3にアーカイブしておく
前処理(データ変換)
ワークロードに着目
- バッチ:スループット重視
- Amazon EMR、Amazon EC2で処理
- リアルタイム:レイテンシー重視
- AWS Lambda、Amazon Kinesis Analyticsで処理
分析・保存
ここでの「保存」は、前処理したデータの保存先、という観点でお話ししました。
データ構造、アクセスパターンに着目
- 固定されたスキーマ
- 多数のユーザーからの同時アクセス:Amazon RDS
- 大規模データの集計・抽出:Amazon Redshift
- Amazon RDSとAmazon Redshiftとも分析のためにデータをそれぞれのストレージにロードする必要がある(腹持ちする必要がある)
- Amazon Redshift Spectrumを使うとデータをロードせず、Amazon S3上のファイルに直接クエリができる
- スキーマレス
- シンプルなクエリ、低レイテンシーを求めて:Amazon DynamoDB
- 大規模データの集計・抽出:Amzon S3 + Amazon EMR、 Amazon S3 + Amazon Athena
- 全文検索:Amazon ElasticSearch Service、Amazon CloudSearch
可視化
データの提供方法に着目
- セルフBI:Amazon QuickSight
- 定型レポート:カスタムWebアプリケーションを開発
- サーバーレス構成:Amazon DynamoDB + AWS Lambda + Amazon API Gateway + Amazon S3
- オーソドックスなWeb + DB構成:Amazon RDS + Amazon EC2
- ログ分析のダッシュボード:Amazon ElasticSearch Service(Kibana)
データ分析に効くAWSサービス
データ分析で利用する主要サービス(独断と偏見)として以下の6サービスの概要、利用上の注意点などをご紹介しました。
- Amazon Redshift(Spectrum含む)
- Amazon EMR
- Amazon Athena
- Amazon Kinesis Streams
- Amazon Kinesis Firehose
- Amazon Kinesis Analytics
- Amazon QuickSight
Amazon Redshift(Spectrum含む)
- DWH特化の高速RDB
- 分散処理
- PostgreSQL互換のSQLが使える
- 性能を引き出すためにはテーブル設計(分散キー、ソートキー、圧縮タイプ)が重要
- Amazon Redshift Spectrumを使うとS3上のデータに直接クエリが投げられる
Amazon EMR
- マネージドHadoopクラスター
- 分散処理
- S3をデータストアとして使える
- DynamoDBやKinesis Streamsのデータにも直接アクセスできる
- Amazon RedshiftとAmazon EMRの比較
- どちらも分散処理ができる
- 構造化データ:Redshift、非構造化、半構造化データ:Amazon EMR
- よくあるパターン:EMR(Hadoop)で非構造化/半構造化データを構造化データへ変換しRedshiftへロード
Amazon Athena
- マネージドPresto。S3に対してクエリを投げられる
- Amazon RedshiftやAmazon EMRを利用するにはクラスターを起動する必要があるが、
- Amazon Athenaはサーバーレス
- 主にはアドホッククエリ向けのサービス
Amazon Kinesis Streams
- ストリームデータの収集と保存。保存期間は24時間〜最大7日間
- データの入力から取得までの遅延は通常1秒未満
- スループットやデータ量に応じてスケールイン/アウト可能(シャードの分割、統合)
Amazon Kinesis Firehose
- ストリームデータの収集と配信
- プログラム開発不要、設定のみでAmazon S3、Amazon Redshift、Amazon ElasticSearch Serviceにデータを配信できる
- 遅延は最短で60秒〜最大900秒
- スループットに応じて自動スケール
Amazon Kinesis StreamsとAmazon Kinesis Firehoseの比較
- まずはAmazon Kinesis Firehoseを検討
- 60秒のレイテンシーが許容できない、Amazon S3、Amazon Redshift、Amazon ElasticSearch Serviceに配信する以外のことをやりたい場合はAmazon Kinesis Streamsを選択
- Amazon Kinesis Firehoseの東京リージョン上陸を期待して待ちましょう
Amazon Kinesis Analytics
- ストリームデータに対してSQLクエリを実行できる
- Kinesis Streams/FirehoseからInput → Kinesis Streams/FirehoseにOutput
- スループットに応じて自動スケール
Amazon QuickSight
- マネージドBIサービス
- AWS内外のデータソースに接続できる
- "SPICE"にデータを取り込むことで高速な分析ができる
データ分析リファレンスアーキテクチャ
最後にリファレンスアーキテクチャとして、以下の分析シナリオでのアーキテクチャパターンをご紹介しました。 アーキテクチャ図はスライドをご参照ください。
売上分析
- オンプレミスのDBにある売上データ
- 以下の分析環境を提供
- 生データに対するアドホック分析
- セルフBI
- 定型レポート
- 利用するサービス
- Amazon S3
- Amazon EMR
- Amazon Athena
- Amazon Redshift
- Amazon QuickSight
- Amazon RDS
- Amazon EC2
ログ分析
- Webアプリケーションの行動ログとアクセスログ
- 行動ログはBIツールで分析
- アクセスログは、
- リアルタイムダッシュボードで可視化
- 特定のしきい値を超えたものをチャットに通知
- 利用するサービス
- Amazon Kinesis Streams
- Amazon Kinesis Firehose
- Amazon Kinesis Analytics
- Amazon Athena
- Amazon Redshift
- Amazon QuickSight
- Amazon ElasticSearch Service
- AWS Lambda
まとめ
AWSはAmazon S3、Amazon Athena、Amazon Kinesis、AWS Lambda、Amazon QuickSightなど、サーバーレスですぐに&安価に使えるサービスが揃っています。皆さんもぜひAWSでデータ分析を始めましょう!
本セッションが、これからAWSでデータ分析を始める方々の一助となれば幸いです。