hero-rinのブログ

某会社で某システムの運用、開発をやっているただのおじさん

AWSのサービスを理解するー分析カテゴリ編ー

やっぱり各サービスを何となく理解しておきたい!

"AWSを利用する前に"ではAWSのカテゴリ一覧で終わっていたので、今回からシリーズで各サービスについてカテゴリ別の簡単な内容説明を書いて行こうと思います。(自分流ですが噛み砕いて書いていこうと思うので、最初のとっかかりに利用して貰えたらと思ってます。)

カテゴリ:分析

初っ端から敷居が高いのですが、データ分析をする為にあると便利なサービスを色々と用意したのがこのカテゴリになるようです。以下分析カテゴリにぶら下がっているサービス一覧です。

Amazon Athena [クエリサービス]

Amazon S3(アマゾン ストレージ サービス *1)にあるデータを直接、標準SQLにてデータ抽出することが可能なクエリサービス。

docs.aws.amazon.com

Amazon CloudSearch [クラウド内検索サービス]

ウェブサイトやアプリケーション向けの検索ソリューション(検索エンジンサービス)。同じようなサービスで"Amazon Elasticsearch Service"があるんですが、ざっくり違いとして下のような感じかなと思ってます。

  • Amazon CloudSearch
    • メリット:すぐ使える
    • デメリット:細かいカスタマイズができない
  • Amazon Elasticsearch Service
    • メリット:カスタマイズすることで自分に合った設定ができる
    • デメリット:導入に学習コストがかかる(いろいろ設定が必要)

docs.aws.amazon.com

Amazon EMR

Amazon Elastic MapReduceの略で、大量データを迅速に処理する為のサービス。大量データを処理するのに並列分散処理基盤を使用しているんですが、種類としてApacheのSpark、Hadoop(HBase、Hiveなんかも)後Prestoなども使用できることが可能とのこと。こだわりがなければ情報量が多いHadoopで問題ないかなと思います。

docs.aws.amazon.com

Amazon Elasticsearch Service

"Amazon CloudSearch"のところに書いたんですが、玄人版の検索サービスという位置付けです。いろんな設定が可能ですが、すべて自分で設定しないと駄目みたいです。(いろいろって何だっていう話もありますが(^^;、もし使う機会があればその時に書こうと思います。m(_ _)m )

docs.aws.amazon.com

Amazon Kinesis

大規模データを一定時間保持するキューサービス。なんのこっちゃって感じですが、大規模なデータを(かぎりなく)リアルタイムに記録しておくサービスって感じです。あとAWSは他にも複数のキューサービスを提供しているので、その違いをザックリした感じで書いて、ここは終わりにしたいと思います。(キューサービスがなんで必要なのかは別の日記に書こうかなと思ってます。)

複数キューザービスの違い(ザックリ)

  1. Amazon MQ
  2. Amazon Simple Queue Service (Amazon SQS)
  3. Amazon Managed Streaming for Kafka (Amazon MSK)
  4. Amazon Kinesis

1と2はメッセージキューサービスで、3と4はストリーミングキューサービスという位置付けです。1,2と3,4の大きな違いの1つとして、1,2はキューとして受け渡しが完了したメッセージは消去され、3,4はキューとして受け渡しが完了したメッセージは消去されずTTLによって消去される仕組みになっているところでしょうか。

1は、Apache Active MQをAWSのサービスにしたものです。昔からあるMQ(message queue)のサービスだと思って差し支えないです。IBM MQとか銀行のシステムでは良く使われていた感じがしました。昔の話ですが(^^; そして2は、MQの仕組みをもっとシンプルに使いやすくしたものです。これはAmazon独自の仕組みなんでしょうか?今度もうちょっと深掘りして調べておきます。なので昔からのMQの移行は1を新しくMQを使いたい方は2をという感じでしょうか。

3は、Apache kafkaをAWSのサービスにしたものです。よりリアルタイムに大量のメッセージを処理できるサービスになっています。「1秒間で200万メッセージ処理」も可能との話(それなりのスペックは用意したいと駄目ですが)。TTLがあり一定期間データを貯めておくことが可能です。そして4は、kafkaみたいなサービスをAWS自体が用意したという位置付けでしょうか。"Elasticsearch"と"CloudSearch"の関係性と似ている感じですね。

完全に自分なりですが、少しだけ整理がついたような気がします。 (完全に自分なりの解釈です。間違いがありましたら心優しいどなたかご指摘いただけると助かります。m(_ _)m )

docs.aws.amazon.com

aws.amazon.com

Amazon Managed Streaming for Kafka

上で書いたストリーミングサービスです。スペックにもよりますがリアルタイムに大容量データを大量に取り込むことができるサービスです。似たものに"Amazon Kinesis"があり自分でカスタマイズして使用したい場合はkafkaをある程度お手軽に使用したい場合はkinesisを選ぶ感じになると思います。小容量メッセージ(SQSは1メッセージ256KB)でいい場合はMQサービスがあります。

docs.aws.amazon.com

Amazon Redshift [データウェアハウスサービス(DWH)]

いろいろな所にあるデータを収集して蓄積し1つにまとめて置いてデータ抽出やデータ分析などを行いやすくするサービスです。書き込みは二の次で読み込みに特化してます。大量データの一括取り込みはこれからが推奨されているっぽいです。

後、insertも普通にできるようです。(注意点として同じリージョンじゃないと取り込みはできないようです。)

docs.aws.amazon.com

Amazon QuickSight [BIサービス]

BIとはBusiness Intelligenceの略でデータ分析した結果をより分りやすく例えばグラフなどに置き換えてくれるサービスです。

やろうと思えばエクセルでもできるんですが、それをより高速により分りやすく表示させることができるサービスという感じだと思います。

docs.aws.amazon.com

AWS Data Pipeline

各データを定期的に取り込み先のデータに変換し転送してくれるサービスです。どうやらETLとまでいかないみたいです。AWS内の各サービスにデータ転送する時に便利なサービスという意味合いが強いのかなといった感じです。これらのデータ転送をメインに用意したのかなと言ったところです。

  • S3からAmazon Redshiftにデータをロード
  • RDSからデータを抽出してS3に出力

docs.aws.amazon.com

AWS Glue [ETLサービス]

"AWS Data Pipeline"の進化型という感じでしょうか。こちらはサーバレスETLサービスだそうです。ETLなのでこれ単体ではなにもできませんが、各サービスとの間にこれを挟むことでデータを抽出し、変換し、相手側に出力することができるみたいです。PySparkを利用し変換処理を行うらしい(Apache Sparkを実行するためのPython APIらしいんですが不勉強ですみません。ちょっと調べます。)

docs.aws.amazon.com

AWS Lake Formation [データレイクサービス]

DWHと似たような仕組みのサービスです。ただこちらは、構造化されたデータ(ルールで定義されたデータ)だけではなく非構造化されたデータ(その時その時で形が変わるデータ)も同時に蓄積することができるとのこと、DWHでも非構造化データの取り込みは可能ですが、より効率よく(抽出がより高速なんだと思われます。)処理することができる仕組みらしいです。ミドルとしてはHadoopやオブジェクトストレージ+Sparkでの構成が多いらしいです。(らしい、らしいばかりですがこれも不勉強ですみません。出直してきます。)

いやー長かった最後の方がぐだぐだですが、なんとか分析カテゴリ編完了です。ただ宿題ができてしまいました。orz

  • キューサービスについて
  • PySparkについて
  • データレイクについて

この宿題はどこかのタイミングで書いていきたいと思ってます。さて、次は"アプリケーション統合カテゴリ編"にするか?ちょっと息抜きするか?

  一旦、今日はここまで!

*1:敢えてイメージ重視で言ってしまうとファイル置き場です。(^^;