メモ
以前取得したAWSの資格「クラウドプラクティショナー」に続き「ソリューションアーキテクトアソシエイト(SAA-C03)」取得を目指して勉強中!
いつも何か勉強するときは基本的に書きながら覚えるのでここでアウトプットします。
有益な情報かどうかは不明(笑)
スポンサーリンク
EMR
EMRは、分散処理フレームワーク。
元々Hadoopを中心としたサービスであり、「Amazon Elastic MapReduce」というサービス名だったが、最近はHadoopにとどまらず様々な分散処理のアプリケーションをサポートするようになったためか、略称のEMRがサービス名となっている。
EMRは2つの性格を持ったサービスで、分散処理基盤と分散処理アプリケーション基盤の2つの機能で構成されている。
★EMRは分散処理フレームワークで、分散処理基盤と分散処理アプリケーションの2つから構成される
EMRのアーキテクチャ
EMRは、マスターノード、コアノード、タスクノードという3種類のノードで構成される。
マスターノードはマスターの役割を果たし、コアノード、タスクノードにジョブを振り分ける。
マスターノードは1台のみ存在し、フェイルオーバーができない。
そのため、マスターノードに何らかの問題があった場合、ジョブ全体が失敗する。
コアノードとタスクノードは、どちらも実際のジョブを実行する。
両者の違いは、コアノードはデータを保存する領域であるHDFS(Hadoop Distributed File System)を持ち、タスクノードはHDFSを持たない。
そのため、タスクノードはコアノードに比べ柔軟に増減ができる。
ただし、コアノードなしでタスクノードのみの構成にすることはできない。
分散処理基盤としてのEMR
EMRの1つ目の機能として、分散処理基盤がある。
これには、分散処理に必要なEC2の調達・廃棄などのリソースの調整機能と、S3を分散処理に扱いやすいストレージとして扱う機能(EMRFS)がある。
どちらも重要な機能だが、試験ではリソースの調整機能にフォーカスされることが多い。
リソースの調整機能として重要になるのが伸縮自在性とコスト。
伸縮自在性は、処理するEC2インスタンスを解析開始時に調達し、必要に応じて増減させる機能。
また、デフォルト設定の動作としては、解析が完了すると自動的にリソースが解放されるようになっている。
コストの観点では、EMRには分析費用を小さくするための機能がある。
元々EC2インスタンス自体のコスト削減機能として、リザーブドインスタンスやスポットインスタンスがある。
分散処理基盤は動作の特性からスポットインスタンスと相性がよく、EMRにもスポットインスタンスのオプションがある。
★分散処理基盤は、その動作からスポットインスタンスと相性が良い
EMRとコスト
分散処理の機能の構成要素の1つとして、ジョブの分割と管理がある。
ジョブの分割は、全体の処理を小さな単位のジョブとして分割すること。
ジョブの管理は、分割したジョブを分散処理基盤内のインスタンスに振り分け、その成否を管理する機能。
例えば、ジョブを振り分けたインスタンスが何らかの事情で処理完了できない場合、別のインスタンスにそのジョブを再度処理させる。
スポットインスタンスは、入札価格より時価が上回った場合に利用が強制的に中断される。
その制約があるために、通常のEC2のオンデマンドの価格より大幅に低コストで使えるが、利用には一工夫が必要。
EMRなら、その一工夫が分散処理の機能として備わっているため、スポットインスタンスと非常に相性が良い。
EMRを使う際は、まず分散処理できるようにアプリケーションを適合させ、その上でスポットインスタンスを利用できるようにするのが良い。
試験でも、分散処理を早く低コストに実行するための定石として、オートスケールとスポットインスタンスの組み合わせが最適なケースになることが多い。
分散処理アプリケーション基盤としてのEMR
分散処理を実現するには、アプリケーションが不可欠。
EMRでは、分散処理アプリケーションとして、HadoopやHadoop上で動く多数のフレームワークが利用可能。
代表的なところを挙げると、Apache Spark、HBase、Presto、Flinkなどがある。
これら事前に用意されているアプリケーションはサポートアプリケーションと呼ばれる。
それ以外にも、自分で用意したアプリケーションをカスタムアプリケーションとして利用できる。
なお、AWSの分析のフルマネージドサービスであるAthenaのエンジン部分はPresto。
Athenaはインスタンスの立ち上げすら不要なため、要件に応じて使い分けると良い。
また、EMRはバージョンアップの頻度が高く、サポートされるアプリケーションの範囲・バージョンもどんどん広がっている。
定期的に利用バージョンを見直すと良い。
ETLツール
データ分析サービスと切っても切り離せないのがETLツール。
ETLは「Extract Transform Load」の略で、データソースからのデータの抽出・変換・投入の役割を果たす。
AWSにはETL関連サービスとして、Data PipelineとGlueがある。
また、Kinesisも広義のETLといえる。
この中で、アーキテクチャ上重要になるのがKinesis。
Kinesis
Kinesisは、AWSが提供するストリーミング処理プラットフォーム。
Kinesisには、センサーやログなどのデータをリアルタイム/準リアルタイムで処理するData StraemsとData Firehose、動画を処理するVideo Streams、収集したデータを可視化・分析するData Analyticsという4つの機能がある。
Data Streamsは、様々なデータソースから送信されたデータがStreamsに流れ、それを他のアプリケーションに流していく。
アーキテクチャ上重要なのが、データレコードの分散と順序性。
まずデータレコードの分散と順序性。
どのストリームで処理されるかは、データ入力時に指定されたパーティションキーを元に決められる。
そして、そのストリーム内では、データが入ってきた順番に処理される。
この特性を理解した上で設計すれば、Kinesisの伸縮自在性・耐久性の恩恵を受けることができる。
センサーやログなど大量のデータをリアルタイムで処理する場合、Data Streamsを使ったアーキテクチャが有用。
★Kinesisはストリーミング処理プラットフォームで、センサーやログなどのデータをリアルタイム/準リアルタイムで処理するData StreamsとData Firehose、動画を処理するVideo Streams、収集したデータを可視化・分析するData Analyticsで構成される
Data Pipeline
Data Pipelineもデータ処理やデータ移動を支援するサービス。
Data Pipelineでパイプラインを設定すると、オンプレミスやAWS上の特定の場所に定期的にアクセスし、必要に応じてデータを変換し、S3、RDS、DynamoDBなどのAWSの各種サービスに転送する。
設定は、ビジュアルなドラッグ&ドロップ操作でリソースに繋ぎ合わせて行える。
また、スケジュール実行の他に、エラー時の再実行や耐障害性・可用性が機能として備えられている。
そのため、自前でEC2インスタンスを立ててバッチ処理を作るのに比べて、例外処理の設計・実装の手間が少なくインフラ運用も少ない。
バッチ処理のETLを構築する必要がある場合は、Data Pipelineを検討してみる。
★Data Pipelineはデータ処理やデータ移動を支援するサービス。ビジュアル操作で設定できる
Glue
Glueは、データレイクやデータウェアハウス(DWH)とセットで使われることが多いサーバーレス型のETLツール。
ビッグデータの解析などに使われることが多く、S3のデータを管理してRedshiftなどに変換して格納するといった用途に多く使われる。
Glueはいくつかの機能を持っているが、大きくデータを管理する機能と、それをメタデータとして管理するデータカタログの機能がある。
クローラーが定期的にデータを探索し、データの存在を管理する。
Glueはこのデータカタログを、Apache Hiveメタストアの互換形式で保持している。
実際のデータ変換処理は、変換エンジンで行われる。
Glueでは、この処理をジョブという単位で管理する。
変換処理は、PythonやSparkによって自分で実装することができる。
ビッグデータのETLツールとしては、LambdaやGlueがよく使われる。
使い分けとしては、Lambdaは比較的小規模のデータを対象とし、Glueは中大規模のデータを対象とする。
スポンサーリンク
その他の分析サービス
AWSには、データ分析で活用するサービスがまだまだたくさんある。
Amazon AthenaとAmazon QuickSightの特徴と使い方を簡単に解説。
Amazon Athena
Athenaは、S3内のデータを直接、分析できるようにする対話型のクエリサービス。
所定の形式で格納されたS3のデータに対して、標準SQLでデータの操作ができる。
Athenaは、内部的にはオープンソースの分散型SQLクエリエンジンであるPrestoで実装されていて、CSV、JSON、ORC、Avro、Parquetのデータ形式に対応している。
また、AthenaはJDBCドライバを通じて、BIツールとの連携が可能。
Athenaは内部的にはPrestoを使っているので、EMRでPrestoを使った場合と同じような処理が可能。
ただAthenaを使うと、自前でインフラの管理をすることなくクエリから簡単に結果を取り出すことが可能。
そのフットワークの軽さが、EMRと比べた際のAthenaの選択ポイントとなっている。
Amazon QuickSight
Amazon QuickSightは、データの可視化ツール。
QuickSightを利用することで、簡単にダッシュボードを作成することができる。
作成したダッシュボードはブラウザ経由で閲覧可能で、グラフやダッシュボードを作るUI部分と、SPICEと呼ばれるデータベースで構成されている。
データソースはRDBやRedshift、Athenaなど様々なソースに対応している。
ログの可視化などにはCloudWatchを利用するが、ビッグデータ分析などのビジネス的な解析の可視化にはQuickSightを利用する。
まとめ
分析サービス
・EMRは分散処理フレームワークで、分散処理基盤と分散処理アプリケーション基盤の2つから構成される
・EMRの分散処理基盤は、その動作の特性からスポットインスタンスと相性が良い
・ETLツールは、データソースからのデータの抽出・変換・投入の役割を果たす
・Kinesisはストリーミング処理プラットフォームで、センサーやログなどのデータをリアルタイム/準リアルタイムで処理するData StreamsとData Firehose、動画を処理するVideo Streams、収集したデータを可視化・分析するData Analyticsで構成される。
・Data Pipelineはデータ処理やデータ移動を支援するサービス。ビジュアル操作で設定できる
・Glueはサーバーレス型のETLツールで、ビッグデータの解析などに使われることが多い