Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

kafkaのデータをRedshiftへ入れるパイプライン作ってみた

402 views

Published on

fluentdからストリーミングデータをkafkaで受け取り、それをredshiftへ入れる際にどのようにパイプラインを作成したか
検証したアーキテクチャと、注意点など

山田 雄(株式会社リクルートライフスタイル)

Published in: Technology
  • Be the first to comment

kafkaのデータをRedshiftへ入れるパイプライン作ってみた

  1. 1. kafkaのデータをredshiftに入れ るパイプライン作ってみた RJAWS 12/08 2016 山田 雄 ネットビジネス本部 データ基盤T
  2. 2. ■山田 雄(ヤマダ ユウ) 株式会社 リクルートライフスタイル ネットビジネス本部 データ基盤T Twitter:@nii_yan Github: https://github.com/yu-yamada Blog:イクジニアブログ ・元々フリーランスエンジニア 縁があってリクルートライフスタイルにお世話になることになった。 ビックデータ、Ruby、ビールが好き。 自己紹介
  3. 3. 約300人の分析者 データサイエンティスト IBM Netezza Amazon Redshift TreasureData ETLフレームワーク リクルートライフスタイルのデータ基盤
  4. 4. 約300人の分析者 データサイエンティスト IBM Netezza Amazon Redshift TreasureData ETLフレームワーク リクルートライフスタイルのデータ基盤 日次 batch
  5. 5. サイトDBのデータだけでなく、logファイルのデータとかも redshift入れたいんだけど! なるべくレイテンシーも低いといいよね!! はい、喜んで! とある日こんな要望が・・・
  6. 6. DynamoDB Lambda API Gateway Kafka on-premises Configuration Management Monitoring Grafana ストリーミングデータ基盤はすでにある
  7. 7. これ!
  8. 8. DynamoDB Lambda API Gateway on-premises Configuration Management Monitoring Grafana Kafka ストリーミングデータ基盤 データハブの部分はこれで 良さそう
  9. 9. RedshiftKafka on-premises 大枠の設計 ストリーミングでRedshiftに入れると負荷高いの で、一旦どっかに逃がしてから入れるとかしたい。
  10. 10. RedshiftKafka on-premises 大枠の設計
  11. 11. Kafkaのデータを継続的にファイルに • Camus Linkedinが作っているOSS Hadoop上で動く データソースは様々なもの対応(RDB,API,FTP…) スケールも出来る https://github.com/linkedin/camus • Secor pinterestの作っているOSS EC2上などで動く データソースはkafkaのみ スケール出来る https://github.com/pinterest/secor
  12. 12. Kafkaのデータを継続的にS3に • Camus Linkedinが作っているOSS Hadoop上で動く データソースは様々なもの対応(RDB,API,FTP…) スケールも出来る https://github.com/linkedin/camus • Secor pinterestの作っているOSS EC2上などで動く データソースはkafkaのみ スケール出来る https://github.com/pinterest/secor コスト面を考えてsecorを採用
  13. 13. Secorのアーキテクチャ Kafka secor secor S3 パーティション単位で、分割してそれ ぞれのsecorがデータを取得。 gzファイルに随時書き込みを行う。 secorサーバのローカルに置かれた ファイルを、1時間置き、または200 MB超えたときなどの条件でS3へput
  14. 14. ファイルデータを継続的にRedshiftへ • Blueshit uswitchが作っているOSS closure製 データソースはS3のみ スケールは??? https://github.com/uswitch/blueshift • S4QS-RS フィンランドのおっさん(?)が作っているOSS JavaScript製 データソースはS3のみ スケールするようなものじゃない https://github.com/ORBAT/S4QS-RS
  15. 15. ファイルデータを継続的にRedshiftへ • Blueshit uswitchが作っているOSS closure製 データソースはS3のみ スケールは??? https://github.com/uswitch/blueshift • S4QS-RS フィンランドの個人(?)が作っているOSS JavaScript製 データソースはS3のみ スケールするようなものじゃない https://github.com/ORBAT/S4QS-RS closureを避け…
  16. 16. S4QS-RSのアーキテクチャ S3 1.ファイルが置かれた 際にQueをpush 2.1分置きにPolling SQS S4QS-RS 3.manifest ファイルを put Redshift 4.copy 実行
  17. 17. ちなみに・・・ S4QS-RS圧倒的に使われてないです! なので、mustって書いてある設定が内部では使われてな いとか、怪しいとこ色々。
  18. 18. がっちゃんこして出来上がり S3 SQS S4QS-RS Redshift Kafka secor secor (ノ〃^▽)ノ ワーイワーイワーイ♪.
  19. 19. え?
  20. 20. Kinesis使えばいいじゃないかって??
  21. 21. (∩ ゚д゚)アーアーきこえなーい
  22. 22. ストリーミングデータ扱う際の注意点 Kafkaなどat least onceのミドルウェアが多いです。 (exactly once は夢) なので、データには必ずuuidなどの一意に識別出来る識別子を付け ましょう。 データ復旧時もこれがないと死にます。 • fluentdの場合 fluent-plugin-add使うと簡単に付けれます https://github.com/yu-yamada/fluent-plugin-add http://qiita.com/nii_yan/items/35376464bb26169e4433
  23. 23. ご清聴ありがとうございました (@nii_yan)

×