aws black belt online seminar 2017 amazon kinesis

60
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. アマゾン ウェブ サービス ジャパン株式会社 ソリューションアーキテクト 半場 光晴 2017.10.11(2018.01.10 UPDATED) 【AWS Black Belt Online Seminar】 Amazon Kinesis

Upload: amazon-web-services-japan

Post on 21-Jan-2018

375 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

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

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

2017.10.11(2018.01.10 UPDATED)

【AWS Black Belt Online Seminar】Amazon Kinesis

Page 2: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

自己紹介

• 名前

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

• 所属

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

技術統括本部

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

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

• 好きなAWSサービス

Amazon Kinesis、Amazon S3、Amazon EMR

Page 3: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

内容についての注意点

• 本資料では2017年10月11日時点のサービス内容および価格についてご説明しています。最新の情報はAWS公式ウェブサイト(http://aws.amazon.com)にてご確認ください。

• 資料作成には十分注意しておりますが、資料内の価格とAWS公式ウェブサイト記載の価格に相違があった場合、AWS公式ウェブサイトの価格を優先とさせていただきます。

• 価格は税抜表記となっています。日本居住者のお客様が東京リージョンを使用する場合、別途消費税をご請求させていただきます。

• AWS does not offer binding price quotes. AWS pricing is publicly available and is subject to change in accordance with the AWS Customer Agreement available at http://aws.amazon.com/agreement/. Any pricing information included in this document is provided only as an estimate of usage charges for AWS services based on certain information that you have provided. Monthly charges will be based on your actual use of AWS services, and may vary from the estimates provided.

Page 4: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

Amazon Kinesis Firehose が、東京リージョンでも利用可能になりました!

https://aws.amazon.com/about-aws/whats-new/2017/08/amazon-kinesis-firehose-is-now-available-in-asia-pacific-tokyo-eu-frankfurt-and-us-east-ohio-regions/

Page 5: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

このセミナーの内容

1. Amazon Kinesis の特徴

1. Amazon Kinesis Streams

2. Amazon Kinesis Firehose

3. Amazon Kinesis Analytics

2. Amazon Kinesis の適用例

3. まとめ

Page 6: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

このセミナーの内容

1. Amazon Kinesis の特徴

1. Amazon Kinesis Streams

2. Amazon Kinesis Firehose

3. Amazon Kinesis Analytics

2. Amazon Kinesis の適用例

3. まとめ

Page 7: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

Amazon Kinesis の特徴

Page 8: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

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

Amazon Kinesis Streams

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

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

Amazon KinesisAnalytics

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

Amazon Kinesis Firehose

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

へ簡単に配信

Page 9: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

ストリーミングデータの利用シナリオ

シナリオ データの収集と ETL 継続的なメトリクス計算 リアルタイム分析と応答

データタイプアプリケーションログ/コンピューターメトリクス/クリックストリーム

/センサーデータ/マーケットデータ...

広告/マーケティング

配信や入札データの収集コンバージョンレート/収益

/カバレージの計算ユーザー行動に応じた

配信・入札エンジンの最適化

IoT テレメトリーデータの収集デバイスやサーバーの

稼働状態の計算稼働状態予測や

アラート・通知の発行

ゲーム 顧客行動データの収集成功率/トランジションレート

/クリックレートの計算リーダーボードや

マッチメイクの最適化

コンシューマー向け

顧客行動データの収集ページビュー

/クリックレートの計算レコメンデーションエンジンの

最適化

運用セキュリティ

システムメトリクスの収集 システムログ分析 異常検知

STEP 3STEP 2STEP 1

Page 10: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

Amazon Kinesis プラットフォームの全体的な特徴リアルタイムなデータストリームを簡単に捉え、配信し、処理できます

先払いなしの従量課金

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

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

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

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

Page 11: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

Amazon Kinesis Streams

Amazon Kinesis の特徴

Page 12: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

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

2

3

1 管理が容易

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

低コスト

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

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

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

Page 13: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

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

Frontend

認証・認可

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

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

データを生成

集約して S3 にアーカイブ

Endpoint

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

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

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

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

同時アクセス可能

AZ AZ AZ

Page 14: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

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 15: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

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

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

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

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

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

}

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

}

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

データレコード

2^128 - 1

0

ハッシュキーの範囲

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

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

ストリーム

Page 16: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

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

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

• ストリーム内のシャード毎にユニーク

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

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

シャード 0

シャード 1

SequenceNumber

32

SequenceNumber

26

SequenceNumber

25

SequenceNumber

17データレコード

データレコード

SequenceNumber

35

SequenceNumber

15

SequenceNumber

12

SequenceNumber

11データレコード

ストリーム

Page 17: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

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

Kinesis Firehose

CloudWatchEvents/Logs

Page 18: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

Amazon Kinesis Agentプロデューサー (データ送信側)

https://github.com/awslabs/amazon-kinesis-agent

/etc/aws-kinesis/agent.json

{"kinesis.endpoint": "https://your/kinesis/endpoint", "firehose.endpoint": "https://your/firehose/endpoint", "flows": [

{"filePattern": "/tmp/app1.log*", "kinesisStream": "yourkinesisstream"

}, {

"filePattern": "/tmp/app2.log*","deliveryStream": "yourfirehosedeliverystream"

}]

}

• Amazon Kinesis サービスにデータを簡単に収集して取り込む OSS のスタンドアロンJava アプリケーション

• エージェントでモニタリングするファイルのパターンと送信先ストリームを指定

• ファイルのローテート処理、ポインティングのチェック、失敗時の再試行を管理

• フォーマット変換やログパースなどの前処理機能を提供

• 送信前のバッファリングが可能• すべてのデータを信頼性の高いタイムリー

かつシンプルな方法で配信• Amazon CloudWatch へメトリクスを送信• Amazon Kinesis Streams と Amazon

Kinesis Firehose、どちらへも送信可能

Page 19: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

Amazon Kinesis Producer Library (KPL)プロデューサー (データ送信側)

https://github.com/awslabs/amazon-kinesis-producer

• Amazon Kinesis Streams にデータを送信する OSS の補助ライブラリ

• KPL は、C++ で書かれており、メインプロセスの子プロセスとして実行される

• Aggregation:複数件のデータを 1 データレコードに集約して送信可能

• Collection:複数のレコードをバッファリングして送信

• キャパシティ超過時のリトライをサポート• タイムアウト時間や送信時に利用するコネ

クション数を設定可能• パフォーマンスメトリクスを Amazon

CloudWatch に自動送信

Page 20: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

Fluent plugin for Amazon Kinesis V2出た!プロデューサー (データ送信側)

https://github.com/awslabs/aws-fluent-plugin-kinesis

• Amazon Kinesis Streams と Amazon Kinesis Firehoseにイベントを送信するOSSのFluentd 出力プラグイン

• KPL 集約レコードフォーマットもサポート

• fluent-plugin-kinesis gem に以下3つの出力プラグインが含まれいる

1. Kinesis_streams

2. Kinesis_firehose

3. Kinesis_streams_aggregated

• Fluentd をログ収集に使っているなら、このプラグインを追加するだけで Amazon Kinesis へのデータ投入がすぐにできる

Page 21: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

• Amazon Kinesis Data Generator (KDG) を利用して Amazon Kinesis Streams または Amazon Kinesis Firehose にテストデータを簡単に送信できる

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

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

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

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

Amazon Kinesis Data Generator (KDG)プロデューサー (データ送信側)

Page 22: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

Amazon Kinesis Client Library (KCL)コンシューマー (データ処理側)

• KCL を利用して Kinesis アプリケーションを作成できる

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

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

• KCL アプリは 3 つのコンポーネントを含んでいる

1. Record Processor Factory - 2. のレコードプロセッサーを作る

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

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

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

Page 23: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

Amazon 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 24: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

ストリームデータの利用シナリオに沿ったAWSでの事例

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

STEP 1 データの収集と ETL STEP 2 継続的なメトリクス計算

STEP 3 リアルタイム分析と応答

Page 25: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

Amazon Kinesis Streams 料金

料金構成 料金

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

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

$0.0215

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

東京リージョンの場合

Page 26: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

Amazon Kinesis Firehose

Amazon Kinesis の特徴

Page 27: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

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

2

3

1 管理不要

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

シームレスにスケール

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

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

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

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

Page 28: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

Amazon Kinesis Firehose 主要なコンセプト

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

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

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

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

• 米国東部(バージニア北部、オハイオ)、米国西部(オレゴン)、欧州(アイルランド、フランクフルト)、アジアパシフィック(東京)リージョンで利用可能

Kin

esis F

irehose

エンドポイント

データレコード

データ送信側Amazon

S3

Amazon Redshift

Amazon ES

Amazon S3配信ストリーム

Amazon Redshift配信ストリーム

Amazon ES配信ストリーム

Page 29: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

Amazon Kinesis FirehoseからAmazon S3へ

Firehose配信ストリーム

配信先S3バケット

バックアップS3バケット

ソースレコード

プロデューサー

ソースレコード

変換済みレコード

変換失敗

Page 30: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

Amazon Kinesis FirehoseからAmazon Redshiftへ

中間S3バケット

バックアップS3バケット

ソースレコード

プロデューサー

ソースレコード

Redshift クラスター

Firehose配信ストリーム

変換済みレコード

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

配信失敗

Page 31: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

Amazon Kinesis FirehoseからAmazon Elasticsearch Serviceへ

Elasticsearchクラスター

バックアップS3バケット

ソースレコード

プロデューサー

ソースレコード

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

レコード

配信失敗

変換失敗

Page 32: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

Amazon Kinesis Streams から Firehose へ直接ストリームデータを送ることが可能に

• Amazon Kinesis Streams をデータソースに指定すると、他のデータソースを、同一の Amazon Kinesis Firehose 配信ストリームに送ることはできない

• Amazon Kinesis Streams をデータソースに指定すると、その Amazon Kinesis Firehose 配信ストリームに対して PutRecord や PutRecordBatch ができなくなる

• データソースに指定した Amazon Kinesis Streams に PutRecord や PutRecords すれば良い

• 一方で、1 つの Amazon Kinesis Streams に対しては、複数の Amazon Kinesis Firehose 配信ストリームやその他のコンシューマーからデータレコードを読むことができる

• Amazon Kinesis Firehose 配信ストリームは、Amazon Kinesis Streams の LATEST からデータを読み始める

• Amazon Kinesis Producer Library を利用して Amazon Kinesis Firehose 配信ストリームにデータレコードを送りたい場合のワークアラウンドにも(より簡単に)なる

http://docs.aws.amazon.com/firehose/latest/dev/writing-with-kinesis-streams.html

Dataproducer

Amazon Kinesis Streams

Dataconsumer

Amazon Kinesis

Firehose

Dataproducer

Amazon Kinesis Streams

Amazon Kinesis

Firehose

AFTERBEFORE

Page 33: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

Amazon Kinesis Firehose 料金

料金構成 料金

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

$0.036$0.031$0.025応相談

東京リージョンの場合

• 料金は Amazon Kinesis Firehose に取り込まれたデータの量に基づく• データの量は、このサービスに送信したデータレコードの数に、直近の 5 KB の倍数に切り上げた各レコードの

サイズを乗算した値として計算される• 例 - 各データレコードが 42 KB の場合は、取り込まれたデータとしては 45 KB としてそれぞれカウントされる

Page 34: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

Amazon Kinesis Analytics

Amazon Kinesis の特徴

Page 35: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

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

2

3

1 標準 SQL

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

弾力的にスケール

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

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

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

Page 36: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

Amazon Kinesis Analytics主要なコンセプト

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

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

• SQL クエリ実行の前処理として、Lambda 関数の指定が可能

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

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

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

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

SQL

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

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

ストリーミングソース

(Kinesis Streams またはKinesis Firehose)

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

(Kinesis Streams またはKinesis Firehose)

参照テーブル

参照ソース

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

アプリケーション

前処理

Page 37: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

Lambdaによる前処理

• SQL クエリ実行前に、指定した Lambda 関数による前処理が実行される

• データレコードの情報の補完やフォーマットの変換処理などの用途が例としてあげられる

• 補完処理の例 - S3 以外のリソースにあるデータソースを参照して、データレコードの情報を補完する

• 変換処理の例 - GZIP や KPL フォーマットなどから、CSV や JSON へ変換する

• 前処理の結果は 3 種類のステータスに分類できる

• Ok - 前処理に成功、処理済みのデータレコードが SQL クエリへ流れる

• Dropped - 前処理によって意図的にデータレコードを排除、SQL クエリの対象にしない

• ProcessingFailed - 前処理に失敗、未処理のデータレコードがエラーストリームへ流れる

• この前処理用途の汎用的なLambda関数のブループリントをいくつか提供している

http://docs.aws.amazon.com/kinesisanalytics/latest/dev/lambda-preprocessing.html

Page 38: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

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

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 39: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

様々なタイムスタンプ

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 40: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

ウィンドウ問い合わせ

タンブリングウィンドウ

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

…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 41: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

シンプルなアラート

内部(出力)ストリーム "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 42: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

参照テーブルの結合

(参照テーブル "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 43: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

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

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

STEP 1 データの収集と ETL STEP 2 継続的なメトリクス計算

STEP 3 リアルタイム分析と応答

Page 44: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

Amazon Kinesis Analytics 料金

料金構成 料金

KPUの平均量 / 時間 $0.110

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

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

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

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

Page 45: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

このセミナーの内容

1. Amazon Kinesis の特徴

1. Amazon Kinesis Streams

2. Amazon Kinesis Firehose

3. Amazon Kinesis Analytics

2. Amazon Kinesis の適用例

3. まとめ

Page 46: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

Amazon Kinesis の適用例

Page 47: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

Amazon Kinesis とストリーム処理はじめの一二三歩

Data producer

AmazonS3

AmazonAthena

Lambda function

Amazon Kinesis

Analytics

Amazon Kinesis Streams

AmazonSNS

Lambda function

①可視化

②仮説検証

③自動化

Amazon Kinesis

Firehose

AmazonElasticsearch

Service

Lambda function

AmazonS3

(Reference data source)

Page 48: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

Amazon Kinesis とラムダアーキテクチャ

Data producer Amazon Kinesis

Firehose

Amazon Kinesis Streams

AmazonS3

SPEED

BATCH

SERVING

Amazon EMR

AmazonES

AmazonAthena

Amazon QuickSight

Amazon Kinesis Streams

Amazon Kinesis

Analytics

AmazonDynamoDB

Amazon ElastiCache

AmazonRDS

AWSLambda

Amazon Redshift

AmazonSNS

AWSGlue

Any on Amazon

EC2

APPs

http://lambda-architecture.net/

Page 49: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

Amazon Kinesis と IoT センサーデータ

① データ保管

対象シーン • センサーデータなどのバックアップ• 機械学習などのモデル作成に向けた準備

条件 • 128 KB 以内のメッセージ AWSIoT

ルールエンジン

AmazonKinesis

Firehose

AmazonS3

② 他システム連携

対象シーン • AWS 内外のシステムと API 連携するパターン

条件 • センサーデータをバッファリングして他システムと連携する

IoTデバイズ

AmazonKinesisStreams

AWSLambda

他システム

③ ストリーム処理

対象シーン • センサーデータに対して異常検知、スライディングウィンドウ処理などをストリームで処理したい

条件 • 要件に応じて Spark on EMR なども検討AmazonKinesis

Analytics

Page 50: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

このセミナーの内容

1. Amazon Kinesis の特徴

1. Amazon Kinesis Streams

2. Amazon Kinesis Firehose

3. Amazon Kinesis Analytics

2. Amazon Kinesis の適用例

3. まとめ

Page 51: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

まとめ

Page 52: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

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

Amazon Kinesis Streams

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

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

Amazon KinesisAnalytics

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

Amazon Kinesis Firehose

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

へ簡単に配信

Page 53: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

Amazon Kinesis プラットフォームの全体的な特徴リアルタイムなデータストリームを簡単に捉え、配信し、処理できます

先払いなしの従量課金

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

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

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

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

Page 54: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

Amazon Kinesis とストリーム処理はじめの一二三歩

Data producer

AmazonS3

AmazonAthena

Lambda function

Amazon Kinesis

Analytics

Amazon Kinesis Streams

AmazonSNS

Lambda function

①可視化

②仮説検証

③自動化

Amazon Kinesis

Firehose

AmazonElasticsearch

Service

Lambda function

AmazonS3

(Reference data source)

Page 55: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

さいごに

• 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/

• What's New in Amazon Kinesis - https://aws.amazon.com/jp/kinesis/whats-new/

• AWS Big Data Blog (Category: Amazon Kinesis) - https://aws.amazon.com/jp/blogs/big-data/category/analytics/amazon-kinesis/

• Amazon Kinesis Forum - https://forums.aws.amazon.com/forum.jspa?forumID=169

Amazon Kinesis でデータを集めよう!

Page 56: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

オンラインセミナー資料の配置場所

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

AWS Solutions Architect ブログ• 最新の情報、セミナー中のQ&A等が掲載されています

• http://aws.typepad.com/sajp/

Page 57: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

公式Twitter/FacebookAWSの最新情報をお届けします

@awscloud_jp

検索

最新技術情報、イベント情報、お役立ち情報、お得なキャンペーン情報などを日々更新しています!

もしくはhttp://on.fb.me/1vR8yWm

Page 58: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

AWSの導入、お問い合わせのご相談

AWSクラウド導入に関するご質問、お見積り、資料請求をご希望のお客様は以下のリンクよりお気軽にご相談くださいhttps://aws.amazon.com/jp/contact-us/aws-sales/

※「AWS 問い合わせ」で検索してください

Page 59: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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

AWS Well Architected 個別技術相談会のお知らせ

• Well Architectedフレームワークに基づく数十個の質問項目を元に、お客様がAWS上で構築するシステムに潜むリスクやその回避方法をお伝えする個別相談会https://pages.awscloud.com/well-architected-consulting-2017Q4-jp.html

• 参加無料

• 毎週火曜・木曜開催

59

Page 60: AWS Black Belt Online Seminar 2017 Amazon Kinesis

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