[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%の月間稼働率を保証