Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11

Post on 24-May-2015

3.096 views 2 download

Transcript of Pythonでkinesis〜ぱいきね! in 第20回AWS User Group Japan 東京勉強会2014.04.11

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

ご静聴ありがとうございました (> <);