Upload
takahiro-ikeuchi
View
3.096
Download
2
Embed Size (px)
Citation preview
PythonでKinesis - ぱいきね! in
第20回AWS User Group Japan 東京勉強会
池内 孝啓@iktakahiro April 9th, 2014
AmazonKinesis
Agenda
2
• 自己紹介 (1分) • Pythonとわたし(120分) • Amazon Kinesis とは (3分) • Python boto で Kinesis! (7分) • KinesisとImmutable Infrastructure (4分)
自己紹介• 池内 孝啓 - Takahiro Ikeuchi • 株式会社ALBERT 執行役員 • システム開発・コンサルティング部 部長 • @iktakahiro • http://librabuch.jp • 好きなサービス: EBS(あざとい)
3
Amazon Kinesis とは
Amazon Kinesis とは
5
Data StoreProducer
Kinesis Stream
Kinesis App (Consumer)
• 大規模なストリーミングデータをリアルタイムで処理する完全マネージド型サービス
• Kinesis Stream自体はデータ加工・計算機能を持たない
• Kinesis SDK, Client Libraryを使ってデータを取り出す
Amazon Kinesis とは
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
Python botoでKinesis!
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
Python botohttp://boto.readthedocs.org/en/latest/ref/kinesis.html
botoを使ったKinesisの操作を見てみましょう
Create & Delete Stream
DescribeStream
DescribeStream
PutRecord
PutRecord
{ 'ShardId': ‘shardId-000000000000', 'SequenceNumber':’49538386……’ }
GetShardIterator
Iteratable Objectを生成
GetRecord
GetRecord
{ u'PartitionKey': u'one', u'Data': 'hoge', u'SequenceNumber': u'495383866...' }
ちなみに…
• ShardやSequenceNumberの管理は結構辛い • Amazon Kinesis Client Library(for Java)なら! • Amazon Kinesis Connectors も!(for Java)!
KinesisとImmutable Infrastructure
• 変更されないサーバー / 変更される場合は新規立ち上げ
• アプリケーションの更新とインフラの構築を一対と考える(インフラの更なる抽象化)
• Blue-Green Deployment…
Immutable Infrastructure(以下I2) とは
• fluentdがあるのでKinesisは必要ない?
• fluentdでもおなじようなことが出来そう?
なぜKinesis と I2 ?
•ログファイルをtailで攫う •プラグインでS3へ転送、Redshiftへ投入 •正規表現でテキスト加工もできるし • Scaleできる
fluentdのスケールアウト
+
• スループットを上げたい場合このセットをスケールアウトする
Amazon Kinesis のスケールアウト
24
Data StoreProducer
Kinesis Stream
Kinesis App(Consumer)
•スループットを上げたい場合 Shard数を増加させる
25
Data StoreProducer
Kinesis Stream
Kinesis App(Consumer)
•用途毎にConsumerを作るS3蓄積用・BIツール用 etc…
Amazon Kinesis のスケールアウト
参考文献
• 「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
ご静聴ありがとうございました (> <);