Ch12. 分析サービス

Amazon EMR

Amazon Redshiftと似た分散処理フレームワーク。Redshiftとの大きな違いについては下記に述べられているが、Redshiftが企業の生産活動を記録した構造化されたデータを分析するのに対して、EMRは非構造データに対する分析に対応する。

よくある質問 - Amazon Redshift | AWS

Redshift Spectrumは(非構造データに対して処理を分散処理を行う点で)EMRに似通っており、実際一緒に利用する方法について公式サイトで言及されている。

オープンソースHadoopHadoop上で実行されるApache Sparkなどの分散処理用フレームワークAWS上のマネージドサービスとして利用することが出来る(これらサポートされたアプリケーションをサポートアプリケーションと呼ぶ。また自分で用意したカスタムアプリケーションもEMR上で実行できる)。

EMRはRedshiftと同じように、マスターノード・コア(タスク)ノードに分かれる。計算を担当するのはコア(タスク)ノードである。ただし、タスクノードはデータの保存領域を持たず・コアノードはデータの保存領域を持つ。

従って、タスクノードの方が柔軟に増減できるがデータの保存領域は他のコアノード(タスクノード)と共有するため、データのI/Oがボトルネックとなって性能が上がらない可能性がある。

EMRの分散処理はEC2を利用し、データの保存領域はS3を(分散処理に最適な形で利用する)RMRFSとして扱う機能がある。EMRは自動で処理用のEC2を確保・解放しているので、安価なEC2を優先的に利用するよう設定することでコストを抑えられる。

分散処理は特に(AWS上の余ったインスタンスをオークション形式で購入して、正規の利用者が現れるまで占有できる)スポットインスタンスと相性が良い。最も、途中でインスタンスが利用できなくなってしまった場合は、別のインスタンスにジョブを振り分ける必要があるため、ジョブの分割単位が小さくなるようにアプリケーションを適合させる必要がある。

ETLツール

Kinesis

センサーのデータなど大量のデータが次々と連続して流れてくるような場合に利用できる。Data Streamで一度に分散して処理され、Data Firehouseに保存される。Data Streamで各データがどのStreamによって処理されるかは、データが持つパーティションキーによって振り分けられるが、各Streamでは時系列で処理される。

Data Pipline

データの転送に特化したサービス。決まった時間にオンプレミスやAWS上のインスタンスにアクセスしてデータを取得し、必要に応じてデータを転送しながらS3, DynamoDB, RDSなどにデータを保存する。エラー時の再実行や、障害が発生した場合に別のAZのインスタンスから取得したりすることも出来る。

自前でEC2インスタンスを立てて、バッチを実行するよりも可用性が高い。

Glue

  1. 大量のデータを変換して別のところに保存する機能
  2. データを探索しそのデータのメタデータを保存する機能(データカタログ)

の2機能がある。 S3に保存されたデータを変換した後、後続で大量のデータ分析に掛けるためにRedshiftに格納する、と言った使い方が出来る。

変換処理はPythonなどで実装する。lambdaでも同じことができるが、Glueを使うと大量のデータの変換を行える。

Amazon Athena

Amazon AthenaはS3に格納されたデータを直接分析するシステム。CSVデータなどに対してSQLで操作が可能。

S3のデータを利用できるという点でRedshift SpectrumAmazon EMRと似ている(RedshiftもPrestoを利用しているのでデータにSQLで操作が出来る)。

ただしRedshiftEMRも大規模データ分析のためのインフラを一度は用意されることになる。それほど大きいデータを操作するのでなければ、Athenaを利用して(データ分析インフラをAWS上に展開することなく)手軽な分析が出来る。

Amazon QuickSight

データを簡単に可視化するためのツール。可視化した画面は「ダッシュボード」と呼ばれWebサイトなどに埋め込むことが出来る。データソースにはRDSやRedshiftなどが利用できる。

Redshift Spectrumと Athenaの違いを探ってみた - Qiita