pythonでkinesis〜ぱいきね! in 第20回aws user group japan 東京勉強会2014.04.11
TRANSCRIPT
![Page 1: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11](https://reader034.vdocuments.net/reader034/viewer/2022052523/55615094d8b42a780d8b4e9c/html5/thumbnails/1.jpg)
PythonでKinesis - ぱいきね! in
第20回AWS User Group Japan 東京勉強会
池内 孝啓@iktakahiro April 9th, 2014
AmazonKinesis
![Page 2: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11](https://reader034.vdocuments.net/reader034/viewer/2022052523/55615094d8b42a780d8b4e9c/html5/thumbnails/2.jpg)
Agenda
2
• 自己紹介 (1分) • Pythonとわたし(120分) • Amazon Kinesis とは (3分) • Python boto で Kinesis! (7分) • KinesisとImmutable Infrastructure (4分)
![Page 3: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11](https://reader034.vdocuments.net/reader034/viewer/2022052523/55615094d8b42a780d8b4e9c/html5/thumbnails/3.jpg)
自己紹介• 池内 孝啓 - Takahiro Ikeuchi • 株式会社ALBERT 執行役員 • システム開発・コンサルティング部 部長 • @iktakahiro • http://librabuch.jp • 好きなサービス: EBS(あざとい)
3
![Page 4: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11](https://reader034.vdocuments.net/reader034/viewer/2022052523/55615094d8b42a780d8b4e9c/html5/thumbnails/4.jpg)
Amazon Kinesis とは
![Page 5: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11](https://reader034.vdocuments.net/reader034/viewer/2022052523/55615094d8b42a780d8b4e9c/html5/thumbnails/5.jpg)
Amazon Kinesis とは
5
Data StoreProducer
Kinesis Stream
Kinesis App (Consumer)
![Page 6: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11](https://reader034.vdocuments.net/reader034/viewer/2022052523/55615094d8b42a780d8b4e9c/html5/thumbnails/6.jpg)
• 大規模なストリーミングデータをリアルタイムで処理する完全マネージド型サービス
• Kinesis Stream自体はデータ加工・計算機能を持たない
• Kinesis SDK, Client Libraryを使ってデータを取り出す
Amazon Kinesis とは
![Page 7: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11](https://reader034.vdocuments.net/reader034/viewer/2022052523/55615094d8b42a780d8b4e9c/html5/thumbnails/7.jpg)
session-ID � item-ID �s100 � itemA�s100 � itemB �s200 � itemA�s200 � itemB �s100 � itemC�s300 � itemA�s300 � itemC�
item-ID � session-ID �itemA� s100, s200, s300�itemB � s100, s200�itemC� s100, s300�
Key-Value Store Raw Data
itemA ��itemB = SINTER itemA itemB = len(s100, s200) = 2
itemA ��itemB = SUNION itemB itemC = len(s100, s200, s300) = 3
Use Case
![Page 8: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11](https://reader034.vdocuments.net/reader034/viewer/2022052523/55615094d8b42a780d8b4e9c/html5/thumbnails/8.jpg)
Python botoでKinesis!
![Page 9: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11](https://reader034.vdocuments.net/reader034/viewer/2022052523/55615094d8b42a780d8b4e9c/html5/thumbnails/9.jpg)
Actions - Amazon Kinesis Service API Reference http://docs.aws.amazon.com/kinesis/latest/APIReference/API_Operations.html
Amazon Kinesis API
1. CreateStream 2. DeleteStream 3. DescribeStream 4. GetRecords 5. GetShardIterator 6. ListStreams 7. MergeShards 8. PutRecord 9. SplitShard
![Page 10: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11](https://reader034.vdocuments.net/reader034/viewer/2022052523/55615094d8b42a780d8b4e9c/html5/thumbnails/10.jpg)
Python botohttp://boto.readthedocs.org/en/latest/ref/kinesis.html
botoを使ったKinesisの操作を見てみましょう
![Page 11: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11](https://reader034.vdocuments.net/reader034/viewer/2022052523/55615094d8b42a780d8b4e9c/html5/thumbnails/11.jpg)
Create & Delete Stream
![Page 12: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11](https://reader034.vdocuments.net/reader034/viewer/2022052523/55615094d8b42a780d8b4e9c/html5/thumbnails/12.jpg)
DescribeStream
![Page 13: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11](https://reader034.vdocuments.net/reader034/viewer/2022052523/55615094d8b42a780d8b4e9c/html5/thumbnails/13.jpg)
DescribeStream
![Page 14: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11](https://reader034.vdocuments.net/reader034/viewer/2022052523/55615094d8b42a780d8b4e9c/html5/thumbnails/14.jpg)
PutRecord
![Page 15: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11](https://reader034.vdocuments.net/reader034/viewer/2022052523/55615094d8b42a780d8b4e9c/html5/thumbnails/15.jpg)
PutRecord
{ 'ShardId': ‘shardId-000000000000', 'SequenceNumber':’49538386……’ }
![Page 16: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11](https://reader034.vdocuments.net/reader034/viewer/2022052523/55615094d8b42a780d8b4e9c/html5/thumbnails/16.jpg)
GetShardIterator
Iteratable Objectを生成
![Page 17: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11](https://reader034.vdocuments.net/reader034/viewer/2022052523/55615094d8b42a780d8b4e9c/html5/thumbnails/17.jpg)
GetRecord
![Page 18: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11](https://reader034.vdocuments.net/reader034/viewer/2022052523/55615094d8b42a780d8b4e9c/html5/thumbnails/18.jpg)
GetRecord
{ u'PartitionKey': u'one', u'Data': 'hoge', u'SequenceNumber': u'495383866...' }
![Page 19: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11](https://reader034.vdocuments.net/reader034/viewer/2022052523/55615094d8b42a780d8b4e9c/html5/thumbnails/19.jpg)
ちなみに…
• ShardやSequenceNumberの管理は結構辛い • Amazon Kinesis Client Library(for Java)なら! • Amazon Kinesis Connectors も!(for Java)!
![Page 20: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11](https://reader034.vdocuments.net/reader034/viewer/2022052523/55615094d8b42a780d8b4e9c/html5/thumbnails/20.jpg)
KinesisとImmutable Infrastructure
![Page 21: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11](https://reader034.vdocuments.net/reader034/viewer/2022052523/55615094d8b42a780d8b4e9c/html5/thumbnails/21.jpg)
• 変更されないサーバー / 変更される場合は新規立ち上げ
• アプリケーションの更新とインフラの構築を一対と考える(インフラの更なる抽象化)
• Blue-Green Deployment…
Immutable Infrastructure(以下I2) とは
![Page 22: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11](https://reader034.vdocuments.net/reader034/viewer/2022052523/55615094d8b42a780d8b4e9c/html5/thumbnails/22.jpg)
• fluentdがあるのでKinesisは必要ない?
• fluentdでもおなじようなことが出来そう?
なぜKinesis と I2 ?
•ログファイルをtailで攫う •プラグインでS3へ転送、Redshiftへ投入 •正規表現でテキスト加工もできるし • Scaleできる
![Page 23: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11](https://reader034.vdocuments.net/reader034/viewer/2022052523/55615094d8b42a780d8b4e9c/html5/thumbnails/23.jpg)
fluentdのスケールアウト
+
• スループットを上げたい場合このセットをスケールアウトする
![Page 24: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11](https://reader034.vdocuments.net/reader034/viewer/2022052523/55615094d8b42a780d8b4e9c/html5/thumbnails/24.jpg)
Amazon Kinesis のスケールアウト
24
Data StoreProducer
Kinesis Stream
Kinesis App(Consumer)
•スループットを上げたい場合 Shard数を増加させる
![Page 25: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11](https://reader034.vdocuments.net/reader034/viewer/2022052523/55615094d8b42a780d8b4e9c/html5/thumbnails/25.jpg)
25
Data StoreProducer
Kinesis Stream
Kinesis App(Consumer)
•用途毎にConsumerを作るS3蓄積用・BIツール用 etc…
Amazon Kinesis のスケールアウト
![Page 26: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11](https://reader034.vdocuments.net/reader034/viewer/2022052523/55615094d8b42a780d8b4e9c/html5/thumbnails/26.jpg)
参考文献
• 「Amazon Kinesisで広がるリアルタイムデータ プロセッシングとその未来」アマゾンデータサービスジャパン株式会社 大谷 晋平 / 榎並 利晃 http://www.slideshare.net/shot6/amazon-kinesis-32354587
• Kinesis - boto http://boto.readthedocs.org/en/latest/ref/kinesis.html
• Amazon Kinesis ことはじめ http://www.slideshare.net/iktakahiro/amazon-kinesis-32428443
![Page 27: Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11](https://reader034.vdocuments.net/reader034/viewer/2022052523/55615094d8b42a780d8b4e9c/html5/thumbnails/27.jpg)
ご静聴ありがとうございました (> <);