Mais conteúdo relacionado
Semelhante a Kinesis→Redshift連携を、KCLからFirehoseに切り替えたお話 (20)
Kinesis→Redshift連携を、KCLからFirehoseに切り替えたお話
- 7. Kinesis - Redshift : 構築当初
7
• 当初は、Kinesisからデータを読み出し、メモリーに蓄え、ファイルに書き出してS3にPUTする処理を、
node.jsでKCLを使い、EB/EC2で動かしていたい。
• r4.largeを16台使っていたが、r5.largeにしたら性能上がってコストが下がった。
- 8. Kinesis - Redshift : Firehose化した
8
• Kinesis FirehoseをAWS コンソールからポチポチ構成した
• Redshiftへのロードまでをやってくれるので、バッチ処理を合理化できた
• EBでやっていた整形処理(ex. array→dict化)をData Transformation Lambdaに移植した
- 9. 収穫は?
9
• AWS利⽤料は増えたが、メンテナンスの⼼配は減った
• 雰囲気的には $1200/⽉ → $2000/⽉
• しかし想定外のコスト増があった…
• コンポーネントが減るとトラブルシューティングしやすい
• 従来はEB上で動くワーカー、ワーカーが使うDynamo、ワーカー監視のPrometheus、ロード処理の
Azkaban@EC2、バッチの履歴… 等気にしなければならなかった
• Firehoseだと、FirehoseのUIとCloudWatchでおよそ必要な情報が揃う
• 今⽇ここで発表するネタにできた
• 使っているコードをGitHubで公開しようとしているところ…
- 18. 分かったこと
18
• Data Transformation Lambdaで障害
• S3に書き出された6レコードで、JSONが途中で切れている
• FirehoseはRedshiftに対し、manifestファイルで1,000ファイルをまとめてCOPYコマンドを発⾏
• 1000ファイルのどれかに、破損した6レコードが含まれるので、1,000ファイルまとめてエラーする
• 処理に失敗したレコードは、S3にディレクトリが作られて保存される
• エラーした6件より、その6件が紛れ込んで処理出来ない1000ファイルに含まれる数百万レコードが
ロードできないことが問題
- 21. まとめ
21
• Kinesis Firehoseは⼿軽で便利
• UIで設定できてRedshiftへのロードまで⾃動化できる
• 検討すべきことは多い
• ⼀時停⽌できない、開始位置が決められない、1件でもData Transformartionがエラーすると泥沼
• スロットリングが発⽣するが拡張ファンアウトに対応出来ず、Firehose以外で対処が必要
(結果、$200/⽇ になってしまった…)
• ミッションクリティカルな⽤途に向かない
• 挙動に対して介⼊できることが少ないので、今ある性能・今ある耐久性を受け⼊れるしかない
• CSV/TSVの右端のカラムで同じ問題が起きたら、問題に気付かないのでは??
• AWSに改良を期待…