はじめに
ラスベガスでAWSの最大規模のイベント「re:Invent2018」が絶賛行われているようですね。
ビッグデータ分析基盤のセッションでAWSリソースを用いた網羅的な解説してくれたものがあったらしく内容を簡単にまとめてみました。
Big Data Analytics Architectural Patterns and Best Practices
名前は知ってるけどユースケースよくわからんという自分にとっては嬉しい情報だったので、似たような人の手助けになればと思います。
ビッグデータ基盤の網羅的な技術候補
ビッグデータのアーキテクチャを考える上で
- 正しいツールを使えているか
データの構成,レイテンシ,スループット,データへのアクセス形式によって最適なものを選ぶ必要がある - マネージドやサーバーレスのサービスを効率よく使えているか
- コストを最適化できいるか
- 機械学習基盤が必要かどうか
ビッグデータの処理の流れ
- 収集,貯蓄,加工/分析,利用というシンプルな流れがある
- このビッグデータ処理においてレイテンシ,スループット,コストという点も考慮がする必要がある
収集,貯蓄
- データに温度がある → Hot/Warm/Cold
- それぞれにはデータサイズ,純度,コストといった特徴がある
- データは分類できる → 分類からデータストアが決まる
- データ構成(data structure)/データベースのレコード
→ トランジションデータ
→ In-memory,NoSQL,SQL - メディアファイル/ログ
→ ファイル/オブジェクトデータ
→ File store,object store - データストリーム
→ イベントデータ
→ kafka,kinesis stream,kinesis firehose
Stream storage
- Apach kafka
高いスループットをストリーミングプラットホーム
https://kafka.apache.org/ - Amazon Kinesis Data Streams
フルマネージドなストリームストレージ
https://aws.amazon.com/jp/kinesis/data-streams/
<-- AWSが正式にサポート!! - Amazon Kinesis Data Firehose
フルマネージドなデータデリバリーサービス
https://aws.amazon.com/jp/kinesis/data-firehose/ - ストリーム/メッセージ ストレージの一覧表
File/object storage
- Amazon Simple Storage Service(S3)
大量のデータを格納できる
ビッグデータフレームワークにサポートされてる
ストレージ機能と処理機能が分離されている
99%のdurability
同一リージョンではレプリケーションにコストがかからない
https://aws.amazon.com/jp/s3/
Cache & database
- Amazon ElastiCache
フルマネージドなRedisサービス
https://aws.amazon.com/jp/elasticache/ - Amazon DynamoDB Accelerator
DynamoDBのIn-MemoryCache
https://aws.amazon.com/jp/dynamodb/dax/ - Amazon Neptune
フルマネージドなグラフデータベース
https://aws.amazon.com/jp/blogs/news/amazon-neptune-a-fully-managed-graph-database-service/ - Amazon DynamoDB
フルマネージドなキーバリュー/ドキュメント データベース
https://aws.amazon.com/jp/dynamodb/ - Amazon RDS
フルマネージドなリレーショナルデータベース
https://aws.amazon.com/jp/rds/
どのストレージを使うべきか?
以下の自問自答してみると良い
- データの構成はなんなのか?
- どのようにデータにアクセスするか?
- データの温度はどんなもんか?
- ソリューションまでのコストをどんなものか?
分析
Interactive & batch Analytics
- Amazon Elasticsearch Service
フルマネージドなElasticsearch
https://aws.amazon.com/jp/elasticsearch-service/ - Amazon Redshift & Amazon Redshift Spectrum
フルマネージドなデータウェアハウス
spectrumはS3に対してクエリを投げることもできる
https://aws.amazon.com/jp/redshift/ - Amazon Athena
フルマネージドなインタラクティブクエリサービス
https://aws.amazon.com/jp/athena/ - Amazon EMR
https://aws.amazon.com/jp/emr/
Streaming/message Analytics
- Amazon Kinesis Data Analytics
スリーミングデータに対してSQLを実行できるフルマネージドサービス
https://aws.amazon.com/jp/kinesis/data-analytics/ - Amazon KCL
Amzon Kinesis Client Library - AWS Lambda
サーバーレスでの実行
S3のようなサービスがイベントをlambda向けにpublishできる
Kinesisからイベントをプールできる
どの分析を使うか?
- Batch
分単位~時間単位の定期処理(Ex. Daily/Weekly/Monthly)
→ Amazon EMR - Interactive
秒単位での処理
→ Amazon Redshift/Amazon Athena/Amazon EMR - Stream
ミリ秒単位~秒単位での即時処理
→ Amazon EMR(Spark Streaming)/Amazon Kinesis Data Analitics/Amazon KCL/AWS Lambda
加工
- ETL/ELT:Raw dataを使いやすくするための準備
- 例えば、標準化/分割/圧縮/ストレージの最適化
- AWS Glueが威力を発揮するよ
利用
データサイエンティスト/データエンジニア
分析ツール
- AI Apps
- Jupyter
- Anaconda
- Rstudio
ビジネスユーザー
可視化できるBIツール群
- Kibana
- Amazon QuickSight
- Tableau
- looker
- Qlik
ビッグデータ基盤における技術一覧
ストリーミング分析
インタラクティブ&バッチ分析
おわりに
聞いた内容をざっくりまとめてみました。
個人的にはストリームに対するデータストアや処理にどんなAWSリソースが使えるかを知れたのが嬉しかったです。普段、仕事で関わらないとなかなか知識が入ってこないので。