SEワンタンの独学備忘録

IT関連の独学した内容や資格試験に対する取り組みの備忘録

【AWS】ソリューションアーキテクトアソシエイト対策⑩(Kinesis、Redshift)

駆け足気味ですが、今回は分析系サービス。
多分試験的な意味合い以上に重要度は高いでしょう。

Amazon Kinesis

概要

Amazon Kinesis でストリーミングデータをリアルタイムで収集、処理、分析することが簡単になるため、インサイトを適時に取得して新しい情報に迅速に対応できます。Amazon Kinesis は、アプリケーションの要件に最適なツールを柔軟に選択できるだけでなく、あらゆる規模のストリーミングデータをコスト効率良く処理するための主要機能を提供します。
引用元:Amazon Kinesis(ストリーミングデータをリアルタイムで収集、処理、分析)| AWS

Amazon Kinesis大量のストリーミングデータを収集するためのサービス群を指すようです。
特徴的には、他のサービスに比べて大量のデータさばけるということ、またコスト的にも他のサービスで実現するよりも安価になる。

収集に特化しているためこのサービスだけで詳細な分析まで行えるわけではない。
具体的な機能は以下のサービスごとに用途によって分かれている。

Amazon Kinesis Data Streams(KDS)

Amazon Kinesis Data Streams (KDS) は、大規模にスケーラブルで持続的なリアルタイムのデータストリーミングサービスです。KDS はウエブサイトクリックストリームやデータべースイベントストリームや金融取引、ソーシャルメディアフィード、ITロゴ、ロケーション追跡イベントなど何十万ものソースから毎秒ギガバイトのデータを継続してキャプチャできます。収集データはミリ秒で入手でき、リアルタイム分析をリアルタイムダッシュボードやリアルタイム異常検知、ダイナミックな価格設定などの事例に利用可能です。
引用元:Amazon Kinesis Data Streams(リアルタイム分析向け大規模データを収集)| AWS

IoTデバイスなど多数の機器から生成される継続的なストリーミングデータを収集するサービス

分析を行うアプリケーションからリアルタイムでデータを取得することが可能。

Amazon Kinesis Video Streams

Amazon Kinesis Video Streams を使用すると、分析、機械学習 (ML)、再生、およびその他の処理のために、接続されたデバイスから AWS へ動画を簡単かつ安全にストリーミングできるようになります。Kinesis Video Streams は、数百万ものデバイスからの動画のストリーミングデータを取り込むために必要なすべてのインフラストラクチャを、自動的にプロビジョニングして、伸縮自在にスケールします。
引用元:Amazon Kinesis Video Streams(ビデオストリームの処理と分析)| AWS

Amazon Kinesis Video Streamsビデオストリームデータを収集することに特化したサービス
動画に特化しているので、防犯カメラ、作業やペットの監視カメラ等のデータが用途になるらしい。

Amazon Kinesis Data Firehose

Amazon Kinesis Data Firehose は、ストリーミングデータをデータレイクやデータストア、分析ツールに確実にロードする最も簡単な方法です。ストリーミングデータをキャプチャして変換し、Amazon S3、Amazon Redshift、Amazon Elasticsearch Service、Splunk にロードして、現在お使いのビジネスインテリジェンスツールやダッシュボードでほぼリアルタイムに分析できます。
引用元:Amazon Kinesis Data Firehose(ストリーミングデータをデータストアや分析ツールにロード)| AWS

Amazon Kinesis Data FirehoseはデータをAmazon S3、Amazon Redshift、Amazon Elasticsearch Service、Splunk にロードすることに特化したサービス。
本サービスのおかげで上記サービスへのロード方法を別途実装する必要がなく、マネジメントコンソールから容易に行うことができる

Amazon Kinesis Data Analytics

Amazon Kinesis Data Analytics は、ストリーミングデータの分析、実用的なインサイトの取得、ビジネスやお客様のニーズへのリアルタイムな対応を最も簡単に行えるサービスです。Amazon Kinesis Data Analytics を利用すると、ストリーミングアプリケーションを構築し、管理し、AWS のサービスと統合する作業がシンプルになります。
引用元:Amazon Kinesis Data Analytics(ストリーミングデータをリアルタイムで処理)| AWS

Amazon Kinesis Data AnalyticsはKinesis上のデータに対して、標準SQLクエリを発行できリアルタイム分析を可能とするサービスです。
データベースサービスにデータを移すことなくSQLが発行できるため、分析のスピード(リアルタイム性)が向上する

Kinesisの周辺連携サービス

■Amazon EMR

大量データを処理する分散処理フレームワークであるHadoopのマネージドサービス
実際には何をやっているかというと、収集したデータをデータウェアハウスや機械学習アプリケーションが利用できる形にデータ構造を変換しているらしい。


■AWS Data Pipeline

AWSのコンピューティングサービス間やオンプレ環境とのデータ転送を定義することで、自動で実行することができる。
実行タイミングを日次や週次で指定できることから、継続的なデータ分析のための移行やデータ退避などの用途で使用することが多いと思われる。

具体的には、オンプレやEC2、RDSなどに存在するアプリケーションのデータをS3に移行、その後さらにデータ解析のためにEMRに移行。などの処理をData Pipelineによりスケジュール実行することが可能になる。


■AWS Glue

AWS Glue は抽出、変換、ロード (ETL) を行う完全マネージド型のサービスです。
主なユースケースとしては、S3に保存された構造化/半構造化データをRedshiftで利用できる形に変換を行う。
■AWS Athena

S3に保存されているデータのテーブル定義を行い、SQLクエリを直接発行できるようにするサービス。


■Amazon QuickSight

AWSが提供するBIツール。収集、分析したデータを可視化する。
データウェアハウスであるRedshiftの他、RDSやS3などに加え、他のデータソースにも接続可能。

Amazon Redshift

概要

Amazon Redshift は、クラウド内のフルマネージド型、ペタバイト規模のデータウェアハウスサービスです。数百ギガバイトのデータから開始して、ペタバイト以上まで拡張できます。これにより、お客様のビジネスと顧客のために新しい洞察を得る目的でデータを使用できるようになります。
引用元:https://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/welcome.html

Amazon Redshiftはサービス分類的にはデータベースにはなりますが、データウェアハウスなので、用途的には蓄積したデータの分析に用いることが多いでしょう。

標準的なSQLやBIツールによるデータの取得が可能で、数百GB~ペタバイトの大量のデータを扱う場合の高速な分析や集計に優れている。

Redshiftのアーキテクチャ

■クラスターとノード

Redshiftクラスターという単位で扱われ、その内部ではノードという単位で実際の処理などが行われている。
ノードは以下の通り大きく2種存在する。

★リーダノード
クラスター内に一つ存在し、周辺コンピュータ(アプリケーション)とのやり取りを行い処理などを受け付ける。
内部的にはコンピューティングノードに対する指令役を担い、DB操作の実行計画作成や実行コードの配布などを行う。

★コンピューティングノード
クラスター内に一つ以上存在し、実際のコードの実行を担う。
ノード内にメモリ、CPU、ディスクなどをスライス構造で保有し、スライス間では並列実行が可能であるため処理の高速性に寄与している。

f:id:wantanBlog:20191218003912p:plain


■列指向型ストレージ

RDBでは一般に行指向型ストレージがとられるが、Redshiftでは列指向型ストレージとなっている。

データウェアハウスについては全く知見がないが、表型のデータが格納されている場合、特定のデータの参照や更新を行うRDBは列単位でデータを取得するため列指向型。
分析用途で用いるデータウェアハウスでは、列単位でデータを引っこ抜いて分析を行うため列指向型が、それぞれI/O面で有利になりそうなのはなんとなく想像がつく。

Redshiftの機能

正直、アーキテクチャと機能の境目はあいまい。

■バックアップ

RedshiftはストレージのバックアップがスナップショットとしてS3に行われる。
デフォルトで行われる自動バックアップは、最大35日間有効で、クラスターを削除のタイミングで削除することができる。
手動で行ったバックアップのスナップショットは、ユーザが明示的に削除しない限り保持される


■ノード障害時の対応

クラスター内で障害が発生した際には、障害ノードを自動的に検知してノードの切り替えが行われる。
ノードが単一である場合、データのレプリケートが行われないため、ノード障害が発生するとクラスター内ではデータが復旧できなくなるためS3のスナップショットから復元する必要がでてくる。そのため、基本的には複数ノードで運用することが推奨されている。

■Redshift Spectrum

Redshift Spectrumを導入できる前は、データの大容量化が進むとS3からのデータロード(csv等のファイル)に時間がかかっていた。
Redshift Spectrumでは、RedshifとS3間にSpectrum層を設け、S3のデータを外部テーブルとして直接参照することが可能となり、データのロードが不要になった分、高速にデータにアクセスすることが可能となった。

f:id:wantanBlog:20191218004639p:plain

AWSサービスを用いたデータ分析の流れ

上記の内容から想定できるAWSサービスを用いたデータ分析の流れの例のイメージです。
そのまま過信する人もいないでしょうが、実際には他のサービスも絡んできたり、今線を引けていないところもつながっていると思います。

f:id:wantanBlog:20191218012849p:plain




ひとまず、
各サービスのまとめはこれが最後です。最後の方は早く終えたくて駆け足(雑)気味になってしまいました。

今後のAWS-SAAに関する流れとしては、今のところ全然演習を行っていないので、演習を行って12月末までに公式模試を一度受ける。その後1月上旬ぐらいに本試験を受験して合格している予定です

演習の感触次第でスケジュールは変えるかもしれません。
ブログとしては模擬試験実施後と合格後に1記事ぐらいづつ書こうかと思っています。
受験前に総まとめみたいなことをやるかもしれないしやらないかもしれない。