AWS
bigdata
DataScience

AWS認定Big Data勉強記 - 8: Amazon Kinesis

こんにちは、えいりんぐーです

今回は Amazon Kinesis についてまとめます。

一口に Kinesis といっても、 Data Streams, Data Firehose, Data Analytics など特性の異なるサービスがあるのでそれぞれ別記事にしたいと思います。

ひとまずここでは、それぞれの概要と参考記事を集めます。


参考資料


Amazon Kinesis Data Streams


Q: Amazon Kinesis Data Streams とは何ですか?

Amazon Kinesis Data Streams を使用すると、特定のニーズに合わせてストリーミングデータを処理、分析するカスタムアプリケーションを構築できます。クリックストリーム、アプリケーションログ、ソーシャルメディアなどのさまざまなタイプのデータを何十万ものソースから Amazon Kinesis データストリームに連続して追加できます。ほんの数秒後には、Amazon Kinesis アプリケーションで、ストリームからデータを読み取って処理できます。


概要


  • データ種類や処理に応じてストリームを作成。


    • ストリームには1つ以上のシャード。

    • 保存されるデータをデータレコードと呼ぶ。


      • 1データレコードのサイズは1MBまで



    • 保存期間はデフォルトの24時間から7日

    • 送信側キャパシティは秒あたりシャードあたり1MBまたは1,000PUT

    • 処理側キャパシティは秒あたりシャードあたり2MBまたは5回のリードトランザクション



  • パーティションキーでシャードへ分散。


    • レコードにはシーケンス番号をアサインする。

    • シーケンス番号でアクセスできる。



  • Kinesis Agent


    • Kinesisにデータを送るOSSのJavaアプリ。


      • モニタするファイルパターンや送信先を指定できる。

      • ファイルのローテート処理や失敗時の再試行を管理できる。

      • フォーマット変換やログパースなどの前処理も提供。

      • Streams と Firehose への送信が可能





  • KPL


    • Kinesisにデータを送るOSS。


      • 複数のデータを1レコードにするAggregationや複数レコードをバッファリングするCollectionが可能。Fluent pluginもある





  • KDG


    • テストデータを送信できる。HTML/JavaScriptのOSS。



  • KCL


    • EC2インスタンスなどにデプロイして利用。

    • Record Processor Factory, Record Processor (シャードから取り出したデータを処理するプロセッサの単位), Worker (個々のアプリケーションインスタンスとマッピングする処理単位)といったコンポーネントからなる。




Amazon Kinesis Data Firehose

ストリームデータをS3, Redshift, ESへ配信する。簡単。バッチ処理・圧縮・暗号化が行える。


Q: Amazon Kinesis Data Firehose とは何ですか?

Amazon Kinesis Data Firehose は、ストリーミングデータをデータストアや分析ツールにロードする最も簡単な方法です。ストリーミングデータをキャプチャして変換し、Amazon S3、Amazon Redshift、Amazon Elasticsearch Service、Splunk にロードして、現在お使いのビジネスインテリジェンスツールやダッシュボードでほぼリアルタイムに分析できます。フルマネージドサービスのため、データスループットに応じて自動的にスケールされ、継続的な管理は不要です。ロード前にデータのバッチ処理、圧縮処理、暗号化が行われるため、送信先でのストレージ量を最小化し、セキュリティを強化できます。


概要


  • 送信側からはエンドポイントで接続する。

  • 配信先に応じて配信ストリームを作成する。

  • シャード作成やパーティションキーの指定は不要。

  • データレコードの最大サイズは1MB。

  • オートスケールする。

  • StreamsからFirehoseに直接データを送れる。


Amazon Kinesis Data Analytics


Q: Amazon Kinesis Data Analytics とは何ですか?

Amazon Kinesis Data Analytics は、ストリーミングデータの分析、実用的なインサイトの取得、ビジネスやお客様のニーズへのリアルタイムでの対応を最も簡単に行えるサービスです。Amazon Kinesis Data Analytics を利用すると、ストリーミングアプリケーションを構築し、管理し、AWS のサービスと統合する作業がシンプルになります。一般的な処理関数のための組み込みのテンプレートや演算子を利用し、SQL クエリと高度な Java アプリケーションを簡単に構築し、あらゆる規模のデータを整理、変換、集計、分析できます。


概要


  • 分析単位でアプリケーションを作成する。


    • 入出力のストリーミングソース・デスティネーションを設定。



  • クエリの前処理としてLambdaを設定可能。


    • Lambdaはデータレコードの補完や返還に利用できる。


      • Ok: 前処理成功。

      • Dropped: 意図的なレコードの排除。

      • ProcessingFailed: 前処理失敗。エラーストリームへ流れる。





  • SQLを記述。

  • 1行の最大サイズは50KB。

  • 参照ソースの最大サイズは1GB


    • 外部参照テーブルとはジョインしたり、データレコードの補完に利用したりできる。



  • ウィンドウで問い合わせができる。


    • タンブリングとスライディング。