awsでのストリーム処理入門 · 個人向けweb サービス...

75
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. アマゾン ウェブ サービス ジャパン株式会社 ソリューションアーキテクト 半場光晴 2017年6月1日 AWSでのストリーム処理入門

Upload: others

Post on 19-Oct-2019

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

アマゾン ウェブ サービス ジャパン株式会社

ソリューションアーキテクト 半場光晴

2017年6月1日

AWSでのストリーム処理入門

Page 2: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

本セッションのFeedbackをお願いします• 受付でお配りしたアンケートに本セッションの満足度やご感想などをご記入ください

アンケートをご提出いただきました方には、もれなく素敵なAWSオリジナルグッズをプレゼントさせていただきます

• アンケートは受付、パミール3FのEXPO展示会場内にて回収させて頂きます

Page 3: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

自己紹介

• 名前半場 光晴 (はんば みつはる)

• 所属アマゾン ウェブ サービス ジャパン 株式会社

技術統括本部

メディア・エンターテインメント ソリューション部

ソリューション アーキテクト

• 好きなAWSサービスAmazon Kinesis、Amazon S3、Amazon EMR

Page 4: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

このセッションでお伝えしたいこと

• ストリーム処理の適用シーン

• Amazon Kinesisの利便性

Page 5: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

このセッションの内容

1. ストリーム処理の概要1. ストリーム処理とは2. バッチ処理とストリーム処理

2. Amazon Kinesisの特徴1. Amazon Kinesis Streams2. Amazon Kinesis Firehose3. Amazon Kinesis Analytics

3. ストリーム処理の適用例

Page 6: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

このセッションの内容

1. ストリーム処理の概要1. ストリーム処理とは2. バッチ処理とストリーム処理

2. Amazon Kinesisの特徴1. Amazon Kinesis Streams2. Amazon Kinesis Firehose3. Amazon Kinesis Analytics

3. ストリーム処理の適用例

Page 7: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

ストリーム処理の概要

Page 8: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

ストリーム処理とは

ストリーム処理の概要

Page 9: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

多くのデータが継続的に発生している

モバイルアプリ クリック

ストリーム

ログ

システム監視 IoTセンサー スマート

ビルディング

[Wed Oct 11 14:32:52 2000] [error] [client 127.0.0.1] client denied by server configuration: /export/home/live/ap/htdocs/test

Page 10: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

時間の経過とともに、データの価値は失われていく

新しいデータほど価値がある• 機を逃してはならない• 時間の経過とともに、洞察は陳腐化していく

• Perishable Insights (Mike Gualtieri)

過去のデータと新しいデータを組み合わせれば、もっと価値を高められる• データをつなぎ合わせる術を得る必要がある

引用元https://www.forrester.com/report/Perishable+Insights+Stop+Wasting+Money+On+Unactionable+Analytics/-/E-RES135301

Page 11: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

リアルタイムなストリーム処理の要素

• 耐久性 (Durable)

• 継続性 (Continuous)

• 速度 (Fast)

• 正確性 (Correct)

• リアクティブ (Reactive)

• 信頼性 (Reliable)

必要な特徴は何か?

取込 変換 分析 反応 永続化(React)

Page 12: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

ストリーム処理の典型的なシナリオ

シナリオ/業界別

取込-変換-ロードの加速 継続的なメトリクスの生成機械学習や次のアクションにつながる洞察

広告マーケティング

広告主、入札者情報の集約

カバレッジ、売り上げ、コンバージョンなどの広告メトリクス

ユーザーの広告エンゲージメント、入札エンジンの最適化

IoT センサー、テレメトリーデータの取込

運用のためのメトリクスやダッシュボード

デバイス運用の高機能化やアラーティング

ゲーム オンラインデータ集約例)トップ10プレーヤー

MMOGのライブダッシュボード

リーダーボードの生成やプレーヤースキルマッチ

個人向けWebサービス

クリックストリーム分析 インプレッションやPVなどのメトリクス

レコメンドエンジンや積極的なユーザーケアプログラム

運用セキュリティ

DevOpsツール、VPCフローログの取込

CloudWatch Logsをサブスクライブして、リアルタイムにログを分析する

異常検知

STEP 1 STEP 2 STEP 3

Page 13: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

ストリーム処理の典型的なシナリオに沿ったAWSでの事例

引用元https://speakerdeck.com/kanny/miao-jian-shu-mo-falseroguwoiigan-zinisuruakitekutiya

STEP 1 取込-変換-ロードの加速 STEP 2 継続的なメトリクスの生成

STEP 3 機械学習や次のアクションにつながる洞察

Page 14: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

バッチ処理とストリーム処理

ストリーム処理の概要

Page 15: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

引用元https://www.oreilly.com/ideas/the-world-beyond-batch-streaming-101https://www.oreilly.com/ideas/the-world-beyond-batch-streaming-102

バッチ処理

有限のデータを入力に、一時的な処理を実行する

Page 16: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

引用元https://www.oreilly.com/ideas/the-world-beyond-batch-streaming-101https://www.oreilly.com/ideas/the-world-beyond-batch-streaming-102

バッチ処理

無限のデータを有限に区切って、一時的な処理を繰り返す

Page 17: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

ストリーム処理

引用元https://www.oreilly.com/ideas/the-world-beyond-batch-streaming-101https://www.oreilly.com/ideas/the-world-beyond-batch-streaming-102

無限のデータを逐次処理して、永続的に処理をし続ける

Page 18: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

ストリーム処理のウィンドウ

引用元https://www.oreilly.com/ideas/the-world-beyond-batch-streaming-101https://www.oreilly.com/ideas/the-world-beyond-batch-streaming-102

擬似的に時間を区切りながら、無限のデータを逐次処理して、永続的に処理をし続ける

Page 19: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

ストリーム処理のタイムスタンプ

• イベント時刻 (Event time)

• クライアントサイド時刻• イベントが発生した時刻

• 収集時刻 (Ingest time)

• サーバーサイド時刻• イベントレコードがストリームに加

えられた時刻

• 処理時刻 (Processing time)

• ストリーム内のイベントレコードが処理対象として捕捉された時刻

引用元https://www.oreilly.com/ideas/the-world-beyond-batch-streaming-101https://www.oreilly.com/ideas/the-world-beyond-batch-streaming-102

Stream

Event Ingest Processing

Client

Page 20: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

バッチ処理とストリーム処理どちらにも存在するトレードオフ

引用元https://www.slideshare.net/VadimSolovey/cloud-dataflow-a-unified-model-for-batch-and-streaming-data-processing

コスト(複雑さ)

完全性

レイテンシ(即時性)

Page 21: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

バッチ処理とストリーム処理の比較

バッチ処理 ストリーム処理

入力データの特徴 有限 無限

処理の実行時間 一時的 永続

結果の出力遅延 大きい 非常に小さい

結果の正確度 真値(入力データの範囲内) 近似値~真値

再処理の可否 容易に可能 可能

主な利用例 ETL、ML(モデリング) 可視化、異常検知

ストリーム処理はバッチ処理の上位互換

Page 22: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

ウィンドウやタイムスタンプを利用したストリーム処理のAWSでの事例

引用元http://data.gunosy.io/entry/dashboard-with-kinesis-analytics

STEP 1 取込-変換-ロードの加速 STEP 2 継続的なメトリクスの生成

STEP 3 機械学習や次のアクションにつながる洞察

Page 23: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

このセッションの内容

1. ストリーム処理の概要1. ストリーム処理とは2. バッチ処理とストリーム処理

2. Amazon Kinesisの特徴1. Amazon Kinesis Streams2. Amazon Kinesis Firehose3. Amazon Kinesis Analytics

3. ストリーム処理の適用例

Page 24: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

Amazon Kinesisの特徴

Page 25: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

Amazon Kinesis プラットフォームストリームデータを収集・処理するためのフルマネージドサービス群

Amazon Kinesis Streams

ストリームデータを処理するための

アプリケーションを独自に構築

Amazon KinesisAnalytics

ストリームデータを標準的な SQL クエ

リーでリアルタイムに分析

Amazon Kinesis Firehose

ストリームデータをAmazon S3, Amazon Redshift, Amazon ES

へ簡単に配信

Page 26: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

Amazon Kinesis を利用したお客様の公開事例

接続機器から10億イベント/週 | IoT

シーズンごとに17 PBのゲームデータ | エンタープ

ライズ

800億の広告インプレッション/日を、30 msレスポンスタイム以内で | 広告

250以上のサイトから、100 GB/日クリックスト

リーム | エンタープライズ

500億の広告インプレッション/日を、50 ms未満

のレスポンスで | 広告

1000万イベント/日| 小売

データバスとしてAmazon Kinesisを利用、Kafkaから乗り換え | エンタープライズ

Amazon Kinesisを通して、サービスのすべてのイベントを集約 | Web

Page 27: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

Amazon Kinesis Streams を利用するためのサードパーティー製のコネクター

Page 28: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

Amazon Kinesis を得意とするパートナー

Page 29: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

Amazon Kinesis: AWSを活用したストリーム処理リアルタイムなデータストリームを簡単に捉え、配信し、処理できます

先払いなしの従量課金

弾力のある拡張性とサーバーレス

ユースケースに合わせた適切なサービスの選択が可能

リアルタイムなレイテンシー

簡単なプロビジョニング、デプロイ、管理

Page 30: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

Amazon Kinesis Streams

Amazon Kinesisの特徴

Page 31: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

ストリーム処理の典型的なシナリオ

シナリオ/業界別

取込-変換-ロードの加速 継続的なメトリクスの生成機械学習や次のアクションにつながる洞察

広告マーケティング

広告主、入札者情報の集約

カバレッジ、売り上げ、コンバージョンなどの広告メトリクス

ユーザーの広告エンゲージメント、入札エンジンの最適化

IoT センサー、テレメトリーデータの取込

運用のためのメトリクスやダッシュボード

デバイス運用の高機能化やアラーティング

ゲーム オンラインデータ集約例)トップ10プレーヤー

MMOGのライブダッシュボード

リーダーボードの生成やプレーヤースキルマッチ

個人向けWebサービス

クリックストリーム分析 インプレッションやPVなどのメトリクス

レコメンドエンジンや積極的なユーザーケアプログラム

運用セキュリティ

DevOpsツール、VPCフローログの取込

CloudWatch Logsをサブスクライブして、リアルタイムにログを分析する

異常検知

STEP 1 STEP 2 STEP 3

Page 32: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

Amazon Kinesis Streamsストリームデータを処理するためのアプリケーションを独自に構築

2

3

1 管理が容易

独自のリアルタイムアプリケーション

低コスト

必要なキャパシティをセットしてストリームを作成するだけで利用可能。スループットやデータ量の変化に応じてスケール

Amazon Kinesis Client Library, Apache Spark/Flink, AWS Lambda 等を利用してストリーム処理を実装

あらゆるスケールのワークロードで高いコスト効果

Page 33: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

Amazon Kinesis Streamsアーキテクチャ概要

Frontend

認証・認可

3 アベイラビリティゾーンの永続ストレージに強い整合性でデータを複製

数百万のソースが1 時間あたり数百 TB の

データを生成

集約して S3 にアーカイブ

Endpoint

機械学習/スライディングウィンドウ分析

リアルタイムダッシュボード/アラート

データウェアハウスにロード

順序つきイベントストリームとして複数のアプリケーションから

同時アクセス可能

AZ AZ AZ

Page 34: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

Amazon Kinesis Streams 主要なコンセプト

• データの種類や処理の用途に応じて「ストリーム」を作成。ストリームは 1 つ以上の「シャード」で構成

• 保存されるデータの単位を「データレコード」と呼び、保持期間はデフォルトで 24 時間/最長で 7 日間

• 1 データレコードの最大サイズは 1 MB

• データ送信側のキャパシティは 1 シャードあたり秒間 1 MB もしくは 1,000 PUT レコード

• データ処理側のキャパシティは 1 シャードあたり秒間 2 MB もしくは 5 回の読み取りトランザクション

• ストリーム内のシャード数を増減することでスループットをコントロール

Kin

esis S

tream

s

エンドポイント

シャード 0

シャード 1

シャード ..N

データ送信側 データ処理側

Amazon S3

DynamoDB

Amazon Redshift

Amazon EMR

データレコード ストリーム

Page 35: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

Amazon Kinesis Streams データレコードの分散

• データ入力時に指定するパーティションキー(最長 256 文字)で保存先のシャードが決定

• MD5 ハッシュ関数でパーティションキーを 128 ビット整数値のハッシュキーに変換

• ハッシュキーの範囲に対応したシャードにデータレコードをマップ

シャード 0"HashKeyRange" {"EndingHashKey": "170141183460469231731687303715884105727", "StartingHashKey": "0"

}

シャード 1"HashKeyRange" {"EndingHashKey": "340282366920938463463374607431768211455", "StartingHashKey": "170141183460469231731687303715884105728"

}

データ パーティションキー

データレコード

2^128 - 1

0

ハッシュキーの範囲

パーティションキーのハッシュで分散*

* ハッシュキーを直接指定することも可能

ストリーム

Page 36: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

Amazon Kinesis Streamsデータレコードの順序性

• 全てのデータレコードにはシーケンス番号がアサインされる

• ストリーム内の全シャード間でユニーク

• シャード内で時間の経過とともに単調増加(シャード間では単調増加しない)

• データ処理時にシーケンス番号でレコード取得開始ポジションを指定可能

シャード 0

シャード 1

SequenceNumber

32

SequenceNumber

26

SequenceNumber

25

SequenceNumber

17データレコード

データレコード

SequenceNumber

35

SequenceNumber

15

SequenceNumber

12

SequenceNumber

11データレコード

ストリーム

Page 37: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

Amazon Kinesis Streams をサポートするプロデューサー・コンシューマー

プロデューサー (データ送信側) コンシューマー (データ処理側)

AWS SDK

Kinesis Producer Library

Kinesis Agent

AWS IoT

Kinesis Log4j Appender

Get* API

Kinesis Client Library

Fluentd

Kinesis Analytics

AWS Lambda

Amazon EMR

Apache Storm

Page 38: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

Amazon Kinesis Streams 料金簡潔な、先払いなしの従量課金

料金構成 料金

シャード時間(1 MB/sec 取込, 2MB/sec 放出) $0.0195

PUT ペイロードユニット(25 KB),1,000,000 PUTs毎

$0.0215

延長データ保持期間(最長7日間), シャード時間毎 $0.026

東京リージョンの場合

Page 39: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

Amazon Kinesis Firehose

Amazon Kinesisの特徴

Page 40: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

ストリーム処理の典型的なシナリオ

シナリオ/業界別

取込-変換-ロードの加速 継続的なメトリクスの生成機械学習や次のアクションにつながる洞察

広告マーケティング

広告主、入札者情報の集約

カバレッジ、売り上げ、コンバージョンなどの広告メトリクス

ユーザーの広告エンゲージメント、入札エンジンの最適化

IoT センサー、テレメトリーデータの取込

運用のためのメトリクスやダッシュボード

デバイス運用の高機能化やアラーティング

ゲーム オンラインデータ集約例)トップ10プレーヤー

MMOGのライブダッシュボード

リーダーボードの生成やプレーヤースキルマッチ

個人向けWebサービス

クリックストリーム分析 インプレッションやPVなどのメトリクス

レコメンドエンジンや積極的なユーザーケアプログラム

運用セキュリティ

DevOpsツール、VPCフローログの取込

CloudWatch Logsをサブスクライブして、リアルタイムにログを分析する

異常検知

STEP 1 STEP 2 STEP 3

Page 41: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

Amazon Kinesis Firehoseストリームデータを、Amazon S3、Amazon Redshift、Amazon ESへ簡単に配信

2

3

1 管理不要

データストアとダイレクトに統合

シームレスにスケール

アプリケーションの実装やインフラストラクチャーの管理を一切行わずにAmazon S3 / Amazon Redshift / Amazon ES にデータを配信可能

シンプルな設定でストリームデータのバッチ化・圧縮・暗号化が可能最短 60 秒でデータを配信

データのスループットに応じて自動的にスケール

4 サーバレスETL Lambdaを利用したストリームデータの変形が可能

Page 42: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

Amazon Kinesis Firehose 主要なコンセプト

• 配信先に応じて「配信ストリーム」を作成

• シャードの作成やパーティションキーの指定不要

• 1 データレコードの最大サイズは 1 MB

• 制限なしにスケールするよう設計

• 米国東部(バージニア北部)、米国西部(オレゴン)、欧州(アイルランド)リージョンで利用可能

Kin

esis F

irehose

エンドポイント

データレコード

データ送信側Amazon

S3

Amazon Redshift

Amazon ES

Amazon S3配信ストリーム

Amazon Redshift配信ストリーム

Amazon ES配信ストリーム

Page 43: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

Amazon Kinesis FirehoseからAmazon S3へ

Firehose配信ストリーム

配信先S3バケット

バックアップS3バケット

ソースレコード

データソース

ソースレコード

変換済みレコード

変換失敗

Page 44: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

Amazon Kinesis FirehoseからAmazon Redshiftへ

中間S3バケット

バックアップS3バケット

ソースレコード

データソースソースレコード

Redshift クラスター

Firehose配信ストリーム

変換済みレコード

変換済みレコード変換失敗

配信失敗

Page 45: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

Amazon Kinesis FirehoseからAmazon Elasticsearch Serviceへ

Elasticsearchクラスター

バックアップS3バケット

ソースレコード

データソースソースレコード

Firehose配信ストリーム 変換済み

レコード

配信失敗

変換失敗

Page 46: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

Amazon Kinesis Firehose 料金簡潔な、先払いなしの重量課金

料金構成 料金

最初の 500 TB / 月 (データ取込分)次の 1.5 PB / 月次の 3 PB / 月以降 5 PB / 月

$0.029$0.025$0.020応相談

オレゴンリージョンの場合

Page 47: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

Amazon Kinesis Analytics

Amazon Kinesisの特徴

Page 48: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

ストリーム処理の典型的なシナリオ

シナリオ/業界別

取込-変換-ロードの加速 継続的なメトリクスの生成機械学習や次のアクションにつながる洞察

広告マーケティング

広告主、入札者情報の集約

カバレッジ、売り上げ、コンバージョンなどの広告メトリクス

ユーザーの広告エンゲージメント、入札エンジンの最適化

IoT センサー、テレメトリーデータの取込

運用のためのメトリクスやダッシュボード

デバイス運用の高機能化やアラーティング

ゲーム オンラインデータ集約例)トップ10プレーヤー

MMOGのライブダッシュボード

リーダーボードの生成やプレーヤースキルマッチ

個人向けWebサービス

クリックストリーム分析 インプレッションやPVなどのメトリクス

レコメンドエンジンや積極的なユーザーケアプログラム

運用セキュリティ

DevOpsツール、VPCフローログの取込

CloudWatch Logsをサブスクライブして、リアルタイムにログを分析する

異常検知

STEP 1 STEP 2 STEP 3

Page 49: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

Amazon Kinesis Analyticsストリームデータを標準的な SQLクエリでリアルタイムに分析

2

3

1 標準 SQL

リアルタイム分析アプリケーション

弾力的にスケール

複雑な処理フレームワークやプログラミング言語の学習不要

秒以下のレイテンシーでストリームデータを連続的に分析

データのスループットに応じて処理能力を伸縮。オペレーションの介入不要

Page 50: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

Amazon Kinesis Analytics主要なコンセプト

• 分析単位に「アプリケーション」を作成し、入力/出力となる「ストリーミング ソース/デスティネーション」を設定

• ストリーミングソース/デスティネーションをアプリケーション内部の「入力/出力ストリーム」にマッピング

• アプリケーション内部の入力ストリームを分析し、結果を出力ストリームへ出力する SQL を記述

• 1 入力行の最大サイズは 50 KB/参照ソースの最大サイズは 1 GB

• クエリーの複雑さとデータのスループットに応じて処理能力 (KPU – Kinesis Processing Units) を自動伸縮

• 米国東部(バージニア北部)/米国西部(オレゴン)/欧州(アイルランド)リージョンで利用可能

SQL

アプリケーション内部(入力)ストリーム

アプリケーション内部(出力)ストリーム

ストリーミングソース

(Kinesis Streams またはKinesis Firehose)

ストリーミングデスティネーション

(Kinesis Streams またはKinesis Firehose)

参照テーブル

参照ソース

アプリケーション内部エラーストリーム

アプリケーション

Page 51: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

アプリケーション内部ストリームとポンプ

CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" (ticker_symbol VARCHAR(4), sector VARCHAR(12), change REAL, price REAL);

CREATE OR REPLACE PUMP "STREAM_PUMP" AS INSERT INTO "DESTINATION_SQL_STREAM“SELECT STREAM ticker_symbol, sector, change, priceFROM "SOURCE_SQL_STREAM_001“;

SQL

内部(入力)ストリーム 内部(出力)ストリームポンプ

“SOURCE_SQL_STREAM_001” “STREAM_PUMP” “DESTINATION_SQL_STREAM”

Page 52: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

様々なタイムスタンプ

CREATE OR REPLACE PUMP "STREAM_PUMP" AS INSERT INTO "DESTINATION_SQL_STREAM“SELECT STREAM your_own_event_time_column, approximate_arrival_time,rowtime

FROM "SOURCE_SQL_STREAM_001";

イベント時刻 処理時刻収集時刻

your_own_event_time_column approximate_arrival_time rowtime

Page 53: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

ウィンドウ問い合わせタンブリングウィンドウ

スライディングウィンドウ

…FROM "SOURCE_SQL_STREAM_001"GROUP BY ticker_symbol,

FLOOR("SOURCE_SQL_STREAM_001".rowtime TO MINUTE);

…FROM "SOURCE_SQL_STREAM_001"WINDOW last_hour AS (PARTITION BY ticker_symbol RANGE INTERVAL '1' HOUR PRECEDING),

last_two_rows AS (PARTITION BY ticker_symbol ROWS 2 PRECEDING);

Page 54: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

シンプルなアラート

• 内部(出力)ストリーム "DESTINATION_SQL_STREAM" を宣言

• ポンプ "STREAM_PUMP" を宣言

• 10 秒のスライディングウィンドウから ticker_symbol ごとに変化量の平均値を算出

• 変化量の平均値の絶対値が 1 を超える行のみを抽出

CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" (ticker_symbol VARCHAR(4), avg_change DOUBLE);

CREATE OR REPLACE PUMP "STREAM_PUMP" AS INSERT INTO "DESTINATION_SQL_STREAM“SELECT STREAM ticker_symbol, avg_changeFROM (

SELECT STREAM ticker_symbol, AVG(change) OVER w1 AS avg_changeFROM "SOURCE_SQL_STREAM_001“WINDOW w1 AS (PARTITION BY ticker_symbol RANGE INTERVAL '10' SECOND PRECEDING))

WHERE ABS(avg_change) > 1;

Page 55: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

参照テーブルの結合

• (参照テーブル "CompanyName" をアプリケーションに事前追加)

• 内部(出力)ストリーム "DESTINATION_SQL_STREAM"/ポンプ "STREAM_PUMP" を宣言

• 内部(入力)ストリーム "SOURCE_SQL_STREAM_001" に参照テーブルを外部結合

• ティッカーシンボルが一致した場合に参照テーブルから "Company" カラムの値を出力

CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" (ticker_symbol VARCHAR(4), company VARCHAR(20), sector VARCHAR(12), change DOUBLE, price DOUBLE);

CREATE OR REPLACE PUMP "STREAM_PUMP" AS INSERT INTO "DESTINATION_SQL_STREAM"SELECT STREAM ticker_symbol, c."Company", sector, change, priceFROM "SOURCE_SQL_STREAM_001"LEFT JOIN "CompanyName" cON "SOURCE_SQL_STREAM_001".ticker_symbol = c."Ticker";

Page 56: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

Amazon Kinesis Analytics 料金簡潔な、先払いなしの従量課金

料金構成 料金

KPUの平均量 / 時間 $0.110

オレゴンリージョンの場合

KPU (Kinesis Processing Unit) • 4 GB のメモリ、1 vCPU のコンピューティング、対応するネットワーク

リソースで構成されるストリーム処理能力の単位• クエリの複雑性やメモリと計算能力の要求が応答に応じて異なるため、

Amazon Kinesis Analyticsでは分析を完了するために必要なKPUが自動的、かつ、伸縮自在にスケールされる

Page 57: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

このセッションの内容

1. ストリーム処理の概要1. ストリーム処理とは2. バッチ処理とストリーム処理

2. Amazon Kinesisの特徴1. Amazon Kinesis Streams2. Amazon Kinesis Firehose3. Amazon Kinesis Analytics

3. ストリーム処理の適用例

Page 58: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

ストリーム処理の適用例

Page 59: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

AWSでのストリーム処理 はじめの一二三歩

Data sourceor

KDG for test

AmazonS3

AmazonAthena

Lambda function

Amazon Kinesis

Analytics

Amazon Kinesis Streams

AmazonSNS

Lambda function

①可視化

②仮説検証

③自動化

Optional

Amazon Kinesis

Firehose

AmazonElasticsearch

Service

Page 60: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

• 検索エンジン、または、分析エンジン

• ログ、クリックストリームなどの分析、監視

• ElasticsearchとKibanaのマネージドサービス

• ElasticsearchのAPIをそのまま利用可能

• 高い可用性と信頼性

• 他のAWSサービスとの緊密な統合

Amazon Elasticsearch

Service

https://github.com/elastic/

Page 61: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

Kibana による可視化の例

引用元https://www.elastic.co/products/kibana

Page 62: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

Amazon Kinesis Data Generator

• Kinesis Data Genrator (KDG)を利用してKinesisにテストデータを簡単に送信できる

• HTMLとJavaScriptで実装されたOSSのテスト用プロデューサーUI

• GithubにホストされたUIを利用することが可能

• S3 静的ウェブサイトホスティングを利用するなども可能

https://github.com/awslabs/amazon-kinesis-data-generator

Page 63: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

Amazon Kinesis Analyticsとストリーム• Amazon Kinesis Analyticsはストリームを処理する新たな方法を

フルマネージドで提供する

• シンプルなSQLインターフェイスが、新たなユースケースをすぐに試すことを可能にする

• Amazon Kinesisのストリームから直接読み込む

AmazonKinesis

Analytics

Firehoseor

Streams

Amazon Redshift

AmazonS3

Streams

Firehose

Custom,Real-time

Destinations

Page 64: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

Amazon EMR

Amazon Kinesis Streamsストリーム入力

Tumbling/Fixed Window

による集約

定期的な出力

Amazon Redshift

Amazon EMRからCOPY

典型的なAmazon EMRとの統合パターンTumbling Windowを利用したレポーティング

Page 65: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

Amazon Kinesis Client Library

• Kinesis Client Library (KCL)を利用してKinesisアプリを作成できる

• Java、Ruby、Python、Node.jsの開発に利用できるOSSのクライアントライブラリ

• EC2インスタンスなどにデプロイして利用可能

• KCLアプリは3つのコンポーネントを含んでいる1. Record Processor Factory – レコードプロセッサーを作る

2. Record Processor – Amazon Kinesis Streamsのシャードから取り出したデータを処理するプロセッサーの単位

3. Worker – 個々のアプリケーションインスタンスとマッピングする処理単位

https://github.com/search?q=org%3Aawslabs+kinesis-client

Page 66: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

Kinesis Client Library ステート管理

• Amazon DynamoDB テーブルを利用してアプリケーションの状態を追跡

• シャードとワーカーのマッピングを調整

• 処理されたレコードのチェックポイントを作成

• ワーカーインスタンスの増減やシャードの分割/結合に追従

shardId

Shard-0

Shard-1

checkpoint

TRIM_HORIZO

N

4

leaseOwner

Worker-A

Worker-B

leaseCounter

2

16

...

...

...

Shard-06

Shard-1

3 1

8 7 5

Worker-A

Worker-B

AmazonDynamoDB

Page 67: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

Amazon Kinesis StreamsとAWS Lambda

Page 68: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

このセッションの振り返り

Page 69: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

このセッションでお伝えしたいこと

• ストリーム処理の適用シーン

• Amazon Kinesisの利便性

Page 70: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

バッチ処理とストリーム処理どちらにも存在するトレードオフ

引用元https://www.slideshare.net/VadimSolovey/cloud-dataflow-a-unified-model-for-batch-and-streaming-data-processing

コスト(複雑さ)

完全性

レイテンシ(即時性)

Page 71: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

Amazon Kinesis: AWSを活用したストリーム処理リアルタイムなデータストリームを簡単に捉え、配信し、処理できます

先払いなしの従量課金

弾力のある拡張性とサーバーレス

ユースケースに合わせた適切なサービスの選択が可能

リアルタイムなレイテンシー

簡単なプロビジョニング、デプロイ、管理

Page 72: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

AWSでのストリーム処理 はじめの一二三歩

AmazonS3

AmazonAthena

Lambda function

Amazon Kinesis

Analytics

Amazon Kinesis Streams

AmazonSNS

Lambda function

①可視化

②仮説検証

③自動化

Optional

Amazon Kinesis

Firehose

AmazonElasticsearch

Service

Data sourceor

KDG for test

Page 73: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

さいごに

• Amazon Kinesisが提供しているもの

• ストリームデータを取り込み、継続的に処理するアプリケーションを作るためのマネージドサービス

• Amazon Kinesisについてもっと知りたい方はこちら• 公式ドキュメント:https://aws.amazon.com/kinesis/

• AWS クラウドサービス活用資料集:https://aws.amazon.com/jp/aws-jp-introduction/

• AWS ブログ:https://aws.amazon.com/jp/blogs/news/category/amazon-kinesis/

ストリーム処理、Kinesis使えば怖くない

Page 74: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

AWS ソリューション Day 2017- Database Day ~すでに始まっている!「クラウドへのデータベース移行」と「データレイクを軸としたビッグデータ活用」~

Database Dayとは?ユーザー企業/パートナー/AWSによる導入事例や活用動向また技術情報をご紹介するIT部門(エンジニア・管理者など)向けのカンファレンス

開催日時・会場• 2017年7月5日(水) 10:00~17:30 (9:30開場予定)• 大崎ブライトコアホール(JR大崎駅より徒歩5分)

セッション①基調講演 ②ブレイクアウトセッション – 2トラック構成

トラック1:データベース移行 (事例セッションあり)トラック2:データレイク(JAWSUG-BigData支部 事例セッションあり)

お申込みhttps://aws.amazon.com/jp/solutiondays20170705/

Page 75: AWSでのストリーム処理入門 · 個人向けWeb サービス クリックストリーム分析 インプレッションやPVな どのメトリクス レコメンドエンジンや積極

Thank you!