[AWS] Kinesis Firehose
- リアルタイムデータを指定先へ配信するための完全マネージド型サービス
- Kinesisストリーミングデータプラットフォームの一部
- アプリケーションの記述、リソース管理の必要なし
- データ送信先のプロデューサーを設定すると指定した送信先にデータが自動的に配信される
- データの配信前に変換するように設定も可能
主な配信先
- S3
- Redshift
- Elasticsearch Service
- Splunk
主要コンセプト
配信ストリーム
- 基盤となるエンティティ
- Firehoseの使用には配信ストリームを作成しそれに対してデータを送信する
record
- データプロデューサーがFirehose配信ストリームに送信する目的のデータ
- レコードの最大サイズは
1,000KB (1MB)
データプロデューサー
- プロデューサーはFirehose配信ストリームにレコードを送信します
- 例えば配信ストリームにログデータを送信するWEBサーバーはデータプロデューサー
- Firehose配信ストリームが自動的に既存のKinesisからデータを読み取り配信先にロードするよう設定することもできる
バッファサイズおよびバッファ間隔
- Firehoseは特定の期間、受信するストリーミングデータを特定のサイズにバッファして送信先に配信する
- バッファサイズは
MB単位
でバッファの間隔は秒単位
データフロー
- いくつかの配信先のデータフロー
S3
- Firehoseにデータレコードが送信される
- バッファ設定に応じてバッファする
- バッファが設定値を超えたらS3へデータを配信する
- データ変換が有効の場合は元データを別バケットへバックアップ取得も可能
データ配信
S3へのデータ配信頻度
- バッファサイズとバッファ間隔によって決まる
- 上記どちからを満たした場合データ配信がトリガーされる
- 送信先へのデータ配信が配信ストリームへのデータ取り込みより遅くなった場合自動的に遅れを取り戻す
バッファサイズ
- 1MB ~ 128MB
- 圧縮前のサイズ
- 通常はGZIPでの圧縮
バッファ間隔
- 60秒 ~ 900秒
データ配信の失敗
- Firehoseは配信が成功するまで最大24時間にわたり再試行する
- Firehoseのデータ最大保持期間は24時間
- 24時間を超えて失敗した場合はデータ消失する
S3のデータ整理
- 配信されたデータはUTC時間のプレフィックスを
YYYY/MM/DD/HH
形式で追加してS3に配信される - 任意の最上位フォルダとフォワードスラッシュを追加できる(myApp/YYYY/MM/DD/HH)
-
YYYY
の前に任意のテキストを追加できる(myAppYYY/MM/DD/HH) - 配信ストリーム作成時に上記設定が可能
カスタムプレフィックス
- Hive形式などのプレフィッスを指定可能
-
year=yyyy/month=mm/day=dd
とか - 時間形式は `UTC となっている
-
JST
と合わせる場合は-9h
する必要がある
-
オブジェクトの命名規則
DeliveryStreamName-DeliveryStreamVersion-YYYY-MM-DD-HH-MM-SS-RandomString
-
DeliveryStreamVersion
は1からはじまる- 配信ストリームの設定が変更されるたびに1ずつ増加する
入力レコード形式の変換
- データをS3へ保存する前に入力データ形式をJSONから変換できる
-
Apache Parquet
またはApache ORC
に変換可能 - ParquetとORCは容量を説やしJSONの行指向の形式に比べてより高速なクエリを可能にするカラム
- JSON以外の場合(CSVとか)はまずはLambdaでJSONに変換することも可能
配信先(重要)
-
レコード形式の変換を行うと以下サービスに配信できなくなる
- Elasticsearch Service
- Redshift
- Splunk
-
S3のみ有効
変換の要件
JSONを読み取るでシリアライザー
- JSONに含まれるタイムスタンプの形式に応じてシリアライザーを選択する
- 位置情報であれば
OpenX JSON SerDe
を使用する-
yyyy-MM-dd'T'HH:mm:ss[.S]'Z'
に対応している為
-
データの解釈方法を決定するスキーマ
- AWS Glue を使用してデータカタログにスキーマを作成する
- Firehoseはスキーマを参照し使用して入力データを解釈する
- 参照
データをターゲットのカラム型ストレージ形式に変換するシリアライザー
-
Parquet
かORC
から選択
SLA
-
99.9%
の月間稼働率を保証