本文へスキップ
BecomeCoder

AWSコース · 第11章 データ分析 ― 貯めたデータを価値に変える · レッスン57

Athena・EMR・OpenSearch ― 貯めたデータを調べる

導入

S3にログが1年分たまりました。これを調べるために、わざわざデータベースサーバーを立てて取り込み直すのは大変です。もっと手軽な方法はないでしょうか。

説明

貯めたデータを調べる代表的なサービスは3つあります。

  • Amazon AthenaS3のデータに対して、そのまま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つとも名前と役割の対応で出題されます。