導入
S3にログが1年分たまりました。これを調べるために、わざわざデータベースサーバーを立てて取り込み直すのは大変です。もっと手軽な方法はないでしょうか。
説明
貯めたデータを調べる代表的なサービスは3つあります。
- Amazon Athena … S3のデータに対して、そのままSQLで問い合わせできるサーバーレスのクエリサービス。サーバーの構築も、データの取り込みも不要で、スキャンしたデータ量に応じた従量課金。「ログをちょっと調べたい」に最適。
- Amazon EMR(Elastic MapReduce) … Apache Spark や Hadoop といったビッグデータ処理フレームワークを、クラスター(複数台のサーバー群)として簡単に立ち上げられるサービス。大規模なデータの変換や機械学習の前処理など、重い処理を分散して行う。
- Amazon OpenSearch Service … ログや文書を全文検索したり、ダッシュボードで可視化したりするためのサービス(オープンソースのOpenSearch/Elasticsearch互換)。「エラーログを横断して検索したい」「検索機能をアプリに付けたい」ときに使う。
flowchart TD
Q["S3に貯めたデータをどう調べる?"] --> A1{"SQLでさっと集計したい"}
A1 -->|はい| Ath["Athena(サーバー不要・従量課金)"]
A1 -->|いいえ| A2{"SparkやHadoopで大規模処理"}
A2 -->|はい| EMR["EMR(クラスターで分散処理)"]
A2 -->|いいえ| A3{"全文検索・ログの可視化"}
A3 -->|はい| OS["OpenSearch Service"]
Redshiftとの違いもよく問われます。Athenaは「S3にあるデータをその場で調べる」のに対し、Redshiftは「分析専用のデータベースに取り込んで、繰り返し高速に集計する」もの。使う頻度が低くアドホック(その場限り)ならAthena、日常的なBI分析ならRedshiftが向きます。
読んでみよう
「S3にSQL=Athena」「Spark/Hadoopの大規模処理=EMR」「全文検索とログ可視化=OpenSearch」。3つとも名前と役割の対応で出題されます。