認定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
    • 外部参照テーブルとはジョインしたり、データレコードの補完に利用したりできる。
  • ウィンドウで問い合わせができる。
    • タンブリングとスライディング。