Help us understand the problem. What is going on with this article?

【AWS】Kinesisまとめ

More than 5 years have passed since last update.

Kinesisとは?

一言で言うと、沢山の場所から送られてくる大量のデータを受け付ける窓口。
有名なのが「あきんどスシロー」の事例。
そう、IT化されまくっていて、うまいすしを、腹一杯。うまいすしで、心も一杯になるあの寿司屋です。
あきんどスシローでは寿司の皿をタグで管理していて、全店舗の寿司情報をKinesisにぶち込んでいます。

簡単に聞こえますが、これは、そうとう膨大なデータ量になります。
この膨大なデータの受付窓口を作ろうと思うと、大規模なインフラ環境が必要になります。数十台とか。機器コスト、さらに運用コストが半端ない。
でも、このKinesisを使うと、とても簡単にとてもリーズナブルな値段で利用できるという話です。
何十万ものソースから、1時間あたり何テラバイトにもなる膨大なデータを貯められます。

データは複数AZに格納されるので信頼性・耐久性が高いです。
ただし、一時的なデータ置き場として24時間後にはKinesis上からデータが消えます。
なので、データを受けた後は、整形等のETL処理に加え、S3・Redsift・dynamoDBにデータを永続化する必要があります。

Kinesisの構成

  • Stream:データ受付窓口
  • Shard:受付することができるキャパシティ。shardを増やすと、受け付けることができる量を増やせる。
  • Data Record:入力するデータ。複数AZに格納され、24時間後には消える
  • 複数Shardがある状態でデータ入力する場合は、パーティションキーを元にしたMD5を元に分散される(うまく分散するようにパーティションキーを指定する必要あり)
  • シーケンス番号:Data Recordに付加されるStream内でユニークな番号
  • KinesisデータはKinesisコネクタを利用して、S3、DynamoDB、RedShiftに永続化できる
  • EMRコネクタを利用して、Hive、Pigといった連携ができる

コスト

かなり安い。
10Shardで、1億putで、約月額$110→1万円ちょい
検証で1Shardで5時間使った場合、20円しない→気軽に検証できる!!

  • Shard単位で料金がかかるため、負荷が低い時間帯はshardをマージすると料金を安くすることができる。負荷が高くなる時間帯は逆にShardを分割する
iron-breaker
周りがAmazon
classmethod
AWSを中心にビッグデータ/スマホアプリ開発/Alexaスキル開発/IoT/サーバレス開発など、モダンなテクノロジーを使った事業を積極的に推進している会社です。
https://classmethod.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away