AWS
bigdata
DataScience

AWS認定Big Data勉強記 - 2

みなさん、こんにちは、えいりんぐーです。

データ分析や機械学習周りの仕事をしています。

今回は、AWSにおけるビッグデータ関連サービスとそれらを利用する上で重要なサービスを大まかに書きます。可能な限りGoogle Cloudで相当するサービスも例示しますが、一致するサービスばかりではありません。また、誤りや不備などありましたらコメントいただけると幸いです。なお、ここで紹介している内容は、AWSにおけるビッグデータ分析のオプションと、AWS Black Belt Online Seminarのサービス別活用資料集を参考にしています。

サービス名
カテゴリ
特徴
GCPでは

S3
オブジェクトストレージ
大きなデータファイルを保存できる。小さいデータをたくさん保存するのには向かない。
GCS

Glacier
オブジェクトストレージ
大きなデータファイルを保存できる。頻繁にアクセスするためのものではない。
GCS Coldline

RDS
フルマネージドリレーショナルデータベース
ACID特性とトランザクションを満たす。スケーラブル。OracleやPostgreSQLなど主要なRDBに対応。
Cloud SQL

Aurora
フルマネージドリレーショナルデータベース
RDSの実質的な上位互換。MySQLのみに対応。
Cloud Spanner?

Athena
サーバレスSQLサービス
Prestoベース。S3のデータに対して直接クエリする。CSVやJSONなど様々なデータ形式に対応。
DBのインフラ管理が不要 (インスタンスのチューニングは必要)。OLAP用だが、大規模なデータ分析には向かない。
-

QuickSight
サーバレス可視化サービス
S3, RDS, Athena, Redshift, EMRなどのソースからデータを取得してクエリ・可視化が可能。
SPICE (Super-fast Paralell In-memory Calculation Engine) による高速なデータ処理。
Data Studio

Redshift
データウェアハウス
OLAPに特化したRDB。ペタバイト級のスケールアウト。SpectrumではAthenaのようにデータレイク上のデータへ直接アクセスできる。
BigQuery

EMR
分散処理基盤
MapReduceに基づくHadoopエコシステムに対応した分散処理基盤。Hive, Pig, Spark, Presto, HBase, Hue, Zeppelinなどのサービスをカバーあるいは連携している。
大規模な分析に向いているが、小さなデータセットには適していない。厳密なACID特性を求めるものではない。
Dataproc

Elasticsearch Service
マネージド全文検索エンジン
Apache Luceneをベースにした検索エンジン。ログ解析やCRMデータ分析に適している。
-

ElastiCache
フルマネージド分散インメモリキャッシュ
memcachedとredisをサポートする。リクエストが多く、低レイテンシーが求められる環境に適している。
Cloud Memorystore

DynamoDB
フルマネージドNoSQLデータベース
キーバリューストア。スケーラブル、低レイテンシー、高可用性。結果整合性を保証するが、厳密なトランザクションやACID特性は満たさない。DynamoDB Accerelatorというインメモリキャッシュ機能がある。
Bigtable, Datastore

Neptune
フルマネージドグラフデータベース
エンティティの関連が多対多となるソーシャルグラフのデータベース。Apache TinkerPopのプロパティグラフとW3CのRDFをサポートする。
-

Lambda
サーバレスコンピュートサービス
イベントをトリガーとして何らかの処理を実行する(スケジュール実行も可能)。EC2のようなインフラを管理する必要がない。コードが実行された時間分だけ課金される。実行時間の長い処理には向かない。
Cloud Functions

Batch
フルマネージドバッチ処理実行サービス
負荷の高い処理を効率的に行う。ジョブはキューに送信され、基本的にFIFOで処理される。裏ではLambda同様にコンテナが動く。
Dataflow

Kinesis
フルマネージドストリームデータ収集・処理サービス
データ収集のためのStreams、各種ストレージに送るためのFirehose、リアルタイム分析をするためのAnalyticsがある。
1つ以上のシャードからなるストリームでデータを処理する。シャード内では処理順が保証される。
Dataflow

DataPipeline
ETL処理サービス
KinesisやGlueほど名前を聞かない。サービス間のデータ統合・処理をスケジュールベースで自動化する。
Dataflow?

Glue
ETLサービス
サーバレスで分散処理ができる。データレイクへのデータ収集、収集されたデータの前処理、Redshiftへのデータの登録などを行う。
-

SQS
フルマネージド分散メッセージキューサービス
キューの利用でデータの受け渡しを疎結合にできる。スケーラブルかつ高スループット。順番は保証されず、同じメッセージを複数回受信する可能性がある。
Cloud Pub/Sub

SageMaker
機械学習ワークフロー全体をカバーするフルマネージドサービス
Jupyter環境でのモデルの構築、学習、デプロイ手段を提供する。データのラベリングも可能。SDKを用いたフレームワークの利用、カスタムアルゴリズムの実装もできる。
Cloud ML Engine, Datalab

IoT
デバイスとAWSを連携させるサービス・SDK
デバイスとAWSの双方向のやり取りを実現するアーキテクチャ兼SDK
IoT Core

EC2
クラウドコンピューティングリソース
既存のOS・ミドルウェアが利用可能で、計算・メモリ・IOそれぞれに特化したインスタンスを使用できる。リザーブドインスタンスやスポットインスタンスで割安に利用可能。暗黙でRDSやEMR、Lambdaなどの計算リソースとしても使われている。
GCE

IAM
AWSの認証・認可システム
Identity and Access Management。AWSをセキュアに利用するために必要なもろもろの認証・管理機能を提供する。
Cloud IAM

KMS
暗号化及び鍵管理サービス
Key Management Service。Customer Master KeyによるEnvelop Encryptionで管理性とパフォーマンスを向上させた暗号化が可能。
Cloud KMS

Cognito
アプリケーション用の認証・同期サービス
モバイルアプリやウェブアプリを利用したユーザー認証やアクセス認可、データの同期に利用する。モバイルで認証と言ったらとりあえずCognito
-

VPC
プライベートネットワークサービス
AWSの中にプライベートなネットワークを構築することができる。必要に応じてネットワークを論理的に分離・結合できる。Direct Connectの利用でオンプレミスネットワークとの接続もできる。
VPC

CloudWatch
AWSのシステム監視サービス
死活・性能・キャパシティ・コストの監視や各種サービスからのログの取得、リソースに対するイベントのトリガーができる。
Stackdriver

以上です。のべで26個のサービスを紹介しました。バカみたいに多いですね。大変だぞコノヤロー笑。

昨今、データはビジネス上重要な競争資源であるだけでなく、プライバシーやコンプライアンスの上でも管理をすることが必要です。そのため、アクセス権や認証・暗号化の管理をする上でIAM、KMS、Cognitoなどのサービスは把握しておかなければなりません。また、EC2はEMRやRDSのインフラとして使われているので、その特徴やインスタンスタイプなどを理解しておくことは重要です。

さて、上記のサービスのうち、ストレージ・データベース・分析・データ処理の役割を担うものについて、用途に合わせて選択フローチャートをつくると以下のようになります。アイコンはこちらを使用しました。

ストレージ系と処理系を網羅しているため、とてもビジーな図になりましたが、大まかにサービスを検討する上では十分かと思います。もっとも、KinesisとSQS、RedshiftとEMRなどは特性の違いはあるものの、サービス要件次第では厳密に使い分けるのが難しいところでもあります。適宜、コストも含め公式ドキュメントを参考にして適切なサービスを選択するようにしてください。

さて、今回はビッグデータに関するサービスを大まかにまとめました。次回はビッグデータを扱う上でのセキュリティについて紹介したいと思います。