AWSでのストリーム処理入門...ゲーム オンラインデータ集約...
Transcript of AWSでのストリーム処理入門...ゲーム オンラインデータ集約...
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
アマゾン ウェブ サービス ジャパン株式会社
ソリューションアーキテクト 半場光晴
2017年6月1日
AWSでのストリーム処理入門
本セッションのFeedbackをお願いします• 受付でお配りしたアンケートに本セッションの満足度やご感想などをご記入ください
アンケートをご提出いただきました方には、もれなく素敵なAWSオリジナルグッズをプレゼントさせていただきます
• アンケートは受付、パミール3FのEXPO展示会場内にて回収させて頂きます
自己紹介
• 名前半場 光晴 (はんば みつはる)
• 所属アマゾン ウェブ サービス ジャパン 株式会社
技術統括本部
メディア・エンターテインメント ソリューション部
ソリューション アーキテクト
• 好きなAWSサービスAmazon Kinesis、Amazon S3、Amazon EMR
このセッションでお伝えしたいこと
• ストリーム処理の適用シーン
• Amazon Kinesisの利便性
このセッションの内容
1. ストリーム処理の概要1. ストリーム処理とは2. バッチ処理とストリーム処理
2. Amazon Kinesisの特徴1. Amazon Kinesis Streams2. Amazon Kinesis Firehose3. Amazon Kinesis Analytics
3. ストリーム処理の適用例
このセッションの内容
1. ストリーム処理の概要1. ストリーム処理とは2. バッチ処理とストリーム処理
2. Amazon Kinesisの特徴1. Amazon Kinesis Streams2. Amazon Kinesis Firehose3. Amazon Kinesis Analytics
3. ストリーム処理の適用例
ストリーム処理の概要
ストリーム処理とは
ストリーム処理の概要
多くのデータが継続的に発生している
モバイルアプリ クリック
ストリーム
ログ
システム監視 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
時間の経過とともに、データの価値は失われていく
新しいデータほど価値がある• 機を逃してはならない• 時間の経過とともに、洞察は陳腐化していく
• Perishable Insights (Mike Gualtieri)
過去のデータと新しいデータを組み合わせれば、もっと価値を高められる• データをつなぎ合わせる術を得る必要がある
引用元https://www.forrester.com/report/Perishable+Insights+Stop+Wasting+Money+On+Unactionable+Analytics/-/E-RES135301
リアルタイムなストリーム処理の要素
• 耐久性 (Durable)
• 継続性 (Continuous)
• 速度 (Fast)
• 正確性 (Correct)
• リアクティブ (Reactive)
• 信頼性 (Reliable)
必要な特徴は何か?
取込 変換 分析 反応 永続化(React)
ストリーム処理の典型的なシナリオ
シナリオ/業界別
取込-変換-ロードの加速 継続的なメトリクスの生成機械学習や次のアクションにつながる洞察
広告マーケティング
広告主、入札者情報の集約
カバレッジ、売り上げ、コンバージョンなどの広告メトリクス
ユーザーの広告エンゲージメント、入札エンジンの最適化
IoT センサー、テレメトリーデータの取込
運用のためのメトリクスやダッシュボード
デバイス運用の高機能化やアラーティング
ゲーム オンラインデータ集約例)トップ10プレーヤー
MMOGのライブダッシュボード
リーダーボードの生成やプレーヤースキルマッチ
個人向けWebサービス
クリックストリーム分析 インプレッションやPVなどのメトリクス
レコメンドエンジンや積極的なユーザーケアプログラム
運用セキュリティ
DevOpsツール、VPCフローログの取込
CloudWatch Logsをサブスクライブして、リアルタイムにログを分析する
異常検知
STEP 1 STEP 2 STEP 3
ストリーム処理の典型的なシナリオに沿ったAWSでの事例
引用元https://speakerdeck.com/kanny/miao-jian-shu-mo-falseroguwoiigan-zinisuruakitekutiya
STEP 1 取込-変換-ロードの加速 STEP 2 継続的なメトリクスの生成
STEP 3 機械学習や次のアクションにつながる洞察
バッチ処理とストリーム処理
ストリーム処理の概要
引用元https://www.oreilly.com/ideas/the-world-beyond-batch-streaming-101https://www.oreilly.com/ideas/the-world-beyond-batch-streaming-102
バッチ処理
有限のデータを入力に、一時的な処理を実行する
引用元https://www.oreilly.com/ideas/the-world-beyond-batch-streaming-101https://www.oreilly.com/ideas/the-world-beyond-batch-streaming-102
バッチ処理
無限のデータを有限に区切って、一時的な処理を繰り返す
ストリーム処理
引用元https://www.oreilly.com/ideas/the-world-beyond-batch-streaming-101https://www.oreilly.com/ideas/the-world-beyond-batch-streaming-102
無限のデータを逐次処理して、永続的に処理をし続ける
ストリーム処理のウィンドウ
引用元https://www.oreilly.com/ideas/the-world-beyond-batch-streaming-101https://www.oreilly.com/ideas/the-world-beyond-batch-streaming-102
擬似的に時間を区切りながら、無限のデータを逐次処理して、永続的に処理をし続ける
ストリーム処理のタイムスタンプ
• イベント時刻 (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
バッチ処理とストリーム処理どちらにも存在するトレードオフ
引用元https://www.slideshare.net/VadimSolovey/cloud-dataflow-a-unified-model-for-batch-and-streaming-data-processing
コスト(複雑さ)
完全性
レイテンシ(即時性)
バッチ処理とストリーム処理の比較
バッチ処理 ストリーム処理
入力データの特徴 有限 無限
処理の実行時間 一時的 永続
結果の出力遅延 大きい 非常に小さい
結果の正確度 真値(入力データの範囲内) 近似値~真値
再処理の可否 容易に可能 可能
主な利用例 ETL、ML(モデリング) 可視化、異常検知
ストリーム処理はバッチ処理の上位互換
ウィンドウやタイムスタンプを利用したストリーム処理のAWSでの事例
引用元http://data.gunosy.io/entry/dashboard-with-kinesis-analytics
STEP 1 取込-変換-ロードの加速 STEP 2 継続的なメトリクスの生成
STEP 3 機械学習や次のアクションにつながる洞察
このセッションの内容
1. ストリーム処理の概要1. ストリーム処理とは2. バッチ処理とストリーム処理
2. Amazon Kinesisの特徴1. Amazon Kinesis Streams2. Amazon Kinesis Firehose3. Amazon Kinesis Analytics
3. ストリーム処理の適用例
Amazon Kinesisの特徴
Amazon Kinesis プラットフォームストリームデータを収集・処理するためのフルマネージドサービス群
Amazon Kinesis Streams
ストリームデータを処理するための
アプリケーションを独自に構築
Amazon KinesisAnalytics
ストリームデータを標準的な SQL クエ
リーでリアルタイムに分析
Amazon Kinesis Firehose
ストリームデータをAmazon S3, Amazon Redshift, Amazon ES
へ簡単に配信
Amazon Kinesis を利用したお客様の公開事例
接続機器から10億イベント/週 | IoT
シーズンごとに17 PBのゲームデータ | エンタープ
ライズ
800億の広告インプレッション/日を、30 msレスポンスタイム以内で | 広告
250以上のサイトから、100 GB/日クリックスト
リーム | エンタープライズ
500億の広告インプレッション/日を、50 ms未満
のレスポンスで | 広告
1000万イベント/日| 小売
データバスとしてAmazon Kinesisを利用、Kafkaから乗り換え | エンタープライズ
Amazon Kinesisを通して、サービスのすべてのイベントを集約 | Web
Amazon Kinesis Streams を利用するためのサードパーティー製のコネクター
Amazon Kinesis を得意とするパートナー
Amazon Kinesis: AWSを活用したストリーム処理リアルタイムなデータストリームを簡単に捉え、配信し、処理できます
先払いなしの従量課金
弾力のある拡張性とサーバーレス
ユースケースに合わせた適切なサービスの選択が可能
リアルタイムなレイテンシー
簡単なプロビジョニング、デプロイ、管理
Amazon Kinesis Streams
Amazon Kinesisの特徴
ストリーム処理の典型的なシナリオ
シナリオ/業界別
取込-変換-ロードの加速 継続的なメトリクスの生成機械学習や次のアクションにつながる洞察
広告マーケティング
広告主、入札者情報の集約
カバレッジ、売り上げ、コンバージョンなどの広告メトリクス
ユーザーの広告エンゲージメント、入札エンジンの最適化
IoT センサー、テレメトリーデータの取込
運用のためのメトリクスやダッシュボード
デバイス運用の高機能化やアラーティング
ゲーム オンラインデータ集約例)トップ10プレーヤー
MMOGのライブダッシュボード
リーダーボードの生成やプレーヤースキルマッチ
個人向けWebサービス
クリックストリーム分析 インプレッションやPVなどのメトリクス
レコメンドエンジンや積極的なユーザーケアプログラム
運用セキュリティ
DevOpsツール、VPCフローログの取込
CloudWatch Logsをサブスクライブして、リアルタイムにログを分析する
異常検知
STEP 1 STEP 2 STEP 3
Amazon Kinesis Streamsストリームデータを処理するためのアプリケーションを独自に構築
2
3
1 管理が容易
独自のリアルタイムアプリケーション
低コスト
必要なキャパシティをセットしてストリームを作成するだけで利用可能。スループットやデータ量の変化に応じてスケール
Amazon Kinesis Client Library, Apache Spark/Flink, AWS Lambda 等を利用してストリーム処理を実装
あらゆるスケールのワークロードで高いコスト効果
Amazon Kinesis Streamsアーキテクチャ概要
Frontend
認証・認可
3 アベイラビリティゾーンの永続ストレージに強い整合性でデータを複製
数百万のソースが1 時間あたり数百 TB の
データを生成
集約して S3 にアーカイブ
Endpoint
機械学習/スライディングウィンドウ分析
リアルタイムダッシュボード/アラート
データウェアハウスにロード
順序つきイベントストリームとして複数のアプリケーションから
同時アクセス可能
AZ AZ AZ
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
データレコード ストリーム
Amazon Kinesis Streams データレコードの分散
• データ入力時に指定するパーティションキー(最長 256 文字)で保存先のシャードが決定
• MD5 ハッシュ関数でパーティションキーを 128 ビット整数値のハッシュキーに変換
• ハッシュキーの範囲に対応したシャードにデータレコードをマップ
シャード 0"HashKeyRange" {"EndingHashKey": "170141183460469231731687303715884105727", "StartingHashKey": "0"
}
シャード 1"HashKeyRange" {"EndingHashKey": "340282366920938463463374607431768211455", "StartingHashKey": "170141183460469231731687303715884105728"
}
データ パーティションキー
データレコード
2^128 - 1
0
ハッシュキーの範囲
パーティションキーのハッシュで分散*
* ハッシュキーを直接指定することも可能
ストリーム
Amazon Kinesis Streamsデータレコードの順序性
• 全てのデータレコードにはシーケンス番号がアサインされる
• ストリーム内の全シャード間でユニーク
• シャード内で時間の経過とともに単調増加(シャード間では単調増加しない)
• データ処理時にシーケンス番号でレコード取得開始ポジションを指定可能
シャード 0
シャード 1
SequenceNumber
32
SequenceNumber
26
SequenceNumber
25
SequenceNumber
17データレコード
データレコード
SequenceNumber
35
SequenceNumber
15
SequenceNumber
12
SequenceNumber
11データレコード
ストリーム
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
Amazon Kinesis Streams 料金簡潔な、先払いなしの従量課金
料金構成 料金
シャード時間(1 MB/sec 取込, 2MB/sec 放出) $0.0195
PUT ペイロードユニット(25 KB),1,000,000 PUTs毎
$0.0215
延長データ保持期間(最長7日間), シャード時間毎 $0.026
東京リージョンの場合
Amazon Kinesis Firehose
Amazon Kinesisの特徴
ストリーム処理の典型的なシナリオ
シナリオ/業界別
取込-変換-ロードの加速 継続的なメトリクスの生成機械学習や次のアクションにつながる洞察
広告マーケティング
広告主、入札者情報の集約
カバレッジ、売り上げ、コンバージョンなどの広告メトリクス
ユーザーの広告エンゲージメント、入札エンジンの最適化
IoT センサー、テレメトリーデータの取込
運用のためのメトリクスやダッシュボード
デバイス運用の高機能化やアラーティング
ゲーム オンラインデータ集約例)トップ10プレーヤー
MMOGのライブダッシュボード
リーダーボードの生成やプレーヤースキルマッチ
個人向けWebサービス
クリックストリーム分析 インプレッションやPVなどのメトリクス
レコメンドエンジンや積極的なユーザーケアプログラム
運用セキュリティ
DevOpsツール、VPCフローログの取込
CloudWatch Logsをサブスクライブして、リアルタイムにログを分析する
異常検知
STEP 1 STEP 2 STEP 3
Amazon Kinesis Firehoseストリームデータを、Amazon S3、Amazon Redshift、Amazon ESへ簡単に配信
2
3
1 管理不要
データストアとダイレクトに統合
シームレスにスケール
アプリケーションの実装やインフラストラクチャーの管理を一切行わずにAmazon S3 / Amazon Redshift / Amazon ES にデータを配信可能
シンプルな設定でストリームデータのバッチ化・圧縮・暗号化が可能最短 60 秒でデータを配信
データのスループットに応じて自動的にスケール
4 サーバレスETL Lambdaを利用したストリームデータの変形が可能
Amazon Kinesis Firehose 主要なコンセプト
• 配信先に応じて「配信ストリーム」を作成
• シャードの作成やパーティションキーの指定不要
• 1 データレコードの最大サイズは 1 MB
• 制限なしにスケールするよう設計
• 米国東部(バージニア北部)、米国西部(オレゴン)、欧州(アイルランド)リージョンで利用可能
Kin
esis F
irehose
エンドポイント
データレコード
データ送信側Amazon
S3
Amazon Redshift
Amazon ES
Amazon S3配信ストリーム
Amazon Redshift配信ストリーム
Amazon ES配信ストリーム
Amazon Kinesis FirehoseからAmazon S3へ
Firehose配信ストリーム
配信先S3バケット
バックアップS3バケット
ソースレコード
データソース
ソースレコード
変換済みレコード
変換失敗
Amazon Kinesis FirehoseからAmazon Redshiftへ
中間S3バケット
バックアップS3バケット
ソースレコード
データソースソースレコード
Redshift クラスター
Firehose配信ストリーム
変換済みレコード
変換済みレコード変換失敗
配信失敗
Amazon Kinesis FirehoseからAmazon Elasticsearch Serviceへ
Elasticsearchクラスター
バックアップS3バケット
ソースレコード
データソースソースレコード
Firehose配信ストリーム 変換済み
レコード
配信失敗
変換失敗
Amazon Kinesis Firehose 料金簡潔な、先払いなしの重量課金
料金構成 料金
最初の 500 TB / 月 (データ取込分)次の 1.5 PB / 月次の 3 PB / 月以降 5 PB / 月
$0.029$0.025$0.020応相談
オレゴンリージョンの場合
Amazon Kinesis Analytics
Amazon Kinesisの特徴
ストリーム処理の典型的なシナリオ
シナリオ/業界別
取込-変換-ロードの加速 継続的なメトリクスの生成機械学習や次のアクションにつながる洞察
広告マーケティング
広告主、入札者情報の集約
カバレッジ、売り上げ、コンバージョンなどの広告メトリクス
ユーザーの広告エンゲージメント、入札エンジンの最適化
IoT センサー、テレメトリーデータの取込
運用のためのメトリクスやダッシュボード
デバイス運用の高機能化やアラーティング
ゲーム オンラインデータ集約例)トップ10プレーヤー
MMOGのライブダッシュボード
リーダーボードの生成やプレーヤースキルマッチ
個人向けWebサービス
クリックストリーム分析 インプレッションやPVなどのメトリクス
レコメンドエンジンや積極的なユーザーケアプログラム
運用セキュリティ
DevOpsツール、VPCフローログの取込
CloudWatch Logsをサブスクライブして、リアルタイムにログを分析する
異常検知
STEP 1 STEP 2 STEP 3
Amazon Kinesis Analyticsストリームデータを標準的な SQLクエリでリアルタイムに分析
2
3
1 標準 SQL
リアルタイム分析アプリケーション
弾力的にスケール
複雑な処理フレームワークやプログラミング言語の学習不要
秒以下のレイテンシーでストリームデータを連続的に分析
データのスループットに応じて処理能力を伸縮。オペレーションの介入不要
Amazon Kinesis Analytics主要なコンセプト
• 分析単位に「アプリケーション」を作成し、入力/出力となる「ストリーミング ソース/デスティネーション」を設定
• ストリーミングソース/デスティネーションをアプリケーション内部の「入力/出力ストリーム」にマッピング
• アプリケーション内部の入力ストリームを分析し、結果を出力ストリームへ出力する SQL を記述
• 1 入力行の最大サイズは 50 KB/参照ソースの最大サイズは 1 GB
• クエリーの複雑さとデータのスループットに応じて処理能力 (KPU – Kinesis Processing Units) を自動伸縮
• 米国東部(バージニア北部)/米国西部(オレゴン)/欧州(アイルランド)リージョンで利用可能
SQL
アプリケーション内部(入力)ストリーム
アプリケーション内部(出力)ストリーム
ストリーミングソース
(Kinesis Streams またはKinesis Firehose)
ストリーミングデスティネーション
(Kinesis Streams またはKinesis Firehose)
参照テーブル
参照ソース
アプリケーション内部エラーストリーム
アプリケーション
アプリケーション内部ストリームとポンプ
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”
様々なタイムスタンプ
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
ウィンドウ問い合わせタンブリングウィンドウ
スライディングウィンドウ
…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);
シンプルなアラート
• 内部(出力)ストリーム "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;
参照テーブルの結合
• (参照テーブル "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";
Amazon Kinesis Analytics 料金簡潔な、先払いなしの従量課金
料金構成 料金
KPUの平均量 / 時間 $0.110
オレゴンリージョンの場合
KPU (Kinesis Processing Unit) • 4 GB のメモリ、1 vCPU のコンピューティング、対応するネットワーク
リソースで構成されるストリーム処理能力の単位• クエリの複雑性やメモリと計算能力の要求が応答に応じて異なるため、
Amazon Kinesis Analyticsでは分析を完了するために必要なKPUが自動的、かつ、伸縮自在にスケールされる
このセッションの内容
1. ストリーム処理の概要1. ストリーム処理とは2. バッチ処理とストリーム処理
2. Amazon Kinesisの特徴1. Amazon Kinesis Streams2. Amazon Kinesis Firehose3. Amazon Kinesis Analytics
3. ストリーム処理の適用例
ストリーム処理の適用例
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
• 検索エンジン、または、分析エンジン
• ログ、クリックストリームなどの分析、監視
• ElasticsearchとKibanaのマネージドサービス
• ElasticsearchのAPIをそのまま利用可能
• 高い可用性と信頼性
• 他のAWSサービスとの緊密な統合
Amazon Elasticsearch
Service
https://github.com/elastic/
Amazon Kinesis Data Generator
• Kinesis Data Genrator (KDG)を利用してKinesisにテストデータを簡単に送信できる
• HTMLとJavaScriptで実装されたOSSのテスト用プロデューサーUI
• GithubにホストされたUIを利用することが可能
• S3 静的ウェブサイトホスティングを利用するなども可能
https://github.com/awslabs/amazon-kinesis-data-generator
Amazon Kinesis Analyticsとストリーム• Amazon Kinesis Analyticsはストリームを処理する新たな方法を
フルマネージドで提供する
• シンプルなSQLインターフェイスが、新たなユースケースをすぐに試すことを可能にする
• Amazon Kinesisのストリームから直接読み込む
AmazonKinesis
Analytics
Firehoseor
Streams
Amazon Redshift
AmazonS3
Streams
Firehose
Custom,Real-time
Destinations
Amazon EMR
Amazon Kinesis Streamsストリーム入力
Tumbling/Fixed Window
による集約
定期的な出力
Amazon Redshift
Amazon EMRからCOPY
典型的なAmazon EMRとの統合パターンTumbling Windowを利用したレポーティング
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
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
Amazon Kinesis StreamsとAWS Lambda
このセッションの振り返り
このセッションでお伝えしたいこと
• ストリーム処理の適用シーン
• Amazon Kinesisの利便性
バッチ処理とストリーム処理どちらにも存在するトレードオフ
引用元https://www.slideshare.net/VadimSolovey/cloud-dataflow-a-unified-model-for-batch-and-streaming-data-processing
コスト(複雑さ)
完全性
レイテンシ(即時性)
Amazon Kinesis: AWSを活用したストリーム処理リアルタイムなデータストリームを簡単に捉え、配信し、処理できます
先払いなしの従量課金
弾力のある拡張性とサーバーレス
ユースケースに合わせた適切なサービスの選択が可能
リアルタイムなレイテンシー
簡単なプロビジョニング、デプロイ、管理
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
さいごに
• 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使えば怖くない
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/
Thank you!