Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Amazon  Kinesisで広がる
リアルタイムデータ
プロセッシングとその未来
アマゾンデータサービスジャパン株式会社
⼤大⾕谷  晋平
榎並  利利晃
⾃自⼰己紹介
!  名前:⼤大⾕谷  晋平
•  ohtani@amazon.co.jp
•  @shot6
!  仕事:
•  お客様のクラウド活⽤用アーキテクチャ⽀支援
•  エマージングソリューション部
!  担当技術分野
•  ビッグデ...
⾃自⼰己紹介
!   名前:  榎並  利利晃  (えなみ  としあき)
!   現職:  Partner  Solution  Architect
!   前職:  通信キャリア、電機メーカ、ゲーム会社でのシス
テム構築・サービス運⽤用経験
...
Kinesisとは
フルマネージドな
リアルタイムデータ処理理サービス
AWSが提供する
ビックデータソリューションとKinesisのポジション
DynamoDB RedshiftRDS EMR
提供中サービス
クエリー
タイプ
バッチタイプ
(Map-‐‑‒Reduce)
新しいサービス
ストリーム
タイプ
Ki...
Amazon  Kinesis
フルマネージドなリアルタイムデータ処理理サービス
	
  Data	
  
Sources	
  
App.4	
  
	
  
[Machine	
  
Learning]	
  
	
  	
  	
  	
...
今すぐ始められる⼿手軽さ
!   Management  Consoleで簡単セットアップ
ウィザード形式で
Streamが作成できる
キャパシティ、レイテン
シーをモニタリング。
Cloud  Watchで監視も可能
(*)  APIでも操作...
Amazon  Kinesisの仕組み
Kinesisはどのように動いているか?
ストリーム
シャード
シャード
データ
レコード
データ
レコード
データ
レコード
データ
送信側
Kinesis	
  
アプリケーション	
  
Kinesis	
  
アプリケーション	
  
...
データレコード、ストリーム、シャード
ストリーム
シャード
シャード
データ
レコード
データ
レコード
データ
レコード
データレコード、ストリーム、シャード
ストリーム
シャード
シャード
データ
レコード
データ
レコード
データ
レコード
パーティションキーをハッシュ化
(MD5)した値を基にシャードに
分配する
Max:
  256Byte
データブロブ
...
データレコード、ストリーム、シャード
ストリーム
シャード
シャード
データ
レコード
データ
レコード
データ
レコード
•  ストリームの中にシャードがある
•  ストリームにPutされたデータは複数DC
に複製されて24時間保存される
•...
データレコード、ストリーム、シャード
ストリーム
シャード
シャード
データ
レコード
データ
レコード
データ
レコード
•  シャード毎にキャパシティが決まっている
•  READ  :  5  TPS  or  2MB/sec
•  WR...
データレコード、ストリーム、シャード
ストリーム
シャード
シャード
データ
レコード
データ
レコード
データ
レコード
0
MD5  Range
2128
シャード-‐‑‒1
(2128/2  -‐‑‒  2128)
データ
レコード
MD...
シャードとシーケンスナンバーの関係
ストリーム
シャード
シャード
データ
レコード
データ
レコード
データ
レコード
•  シャード内にほぼシーケンスナンバー順に  
データが⼊入ってくる
シャード
データ
レコード
(14)
データ
レコ...
Kinesisアプリケーション(KCL)
ストリーム
シャード
シャード
Kinesis
アプリケー
ション
(KCL)
Kinesis
アプリケー
ション
(KCL)
ワーカー シーケンスナ
ンバー
AAA
BBB
12345
98765
2...
Kinesisアプリケーション(KCL)
ストリーム
シャード
シャード
Kinesis
アプリケー
ション
(KCL)
Kinesis
アプリケー
ション
(KCL)
ワーカー シーケンスナ
ンバー
AAA
BBB
12345
98765
2...
⽬目的に応じてKinesisアプリケーションを追加
ストリーム
シャード
シャード
Kinesis
アプリ
S3ストア用
Kinesis
アプリ
S3ストア用
データ
レコード
(24680)
データ
レコード
(12345)
データ
レコード...
Amazon  Kinesis使⽤用例例
Raspberry  pi  +MQTT
リアルタイムダッシュボード
Kinesis	
  App	
  
[Real=me	
  
ETL]	
  
Frontend	
  
[MQTT	
  Proxy]	
  
Frontend	
  
...
Raspberry  pi
!   Raspberry  pi  +  温度度センサ(ADT7410)
21
!   I2CでRaspberry  piと温度度センサを接続
!   10秒間に1回センサからデータを取得
!   Raspberr...
MQTT
!   M2M向けのpub/subモデルの軽量量プロトコル
!   メッセージの軽量量かつ⾼高速な配信に特化している
!   仕様
•  http://public.dhe.ibm.com/software/dw/webservice...
Raspberry  pi  +MQTT
リアルタイムダッシュボード
Kinesis	
  App	
  
[Real=me	
  
ETL]	
  
Frontend	
  
[MQTT	
  Proxy]	
  
Frontend	
  
...
Raspberry  pi  +MQTT  
リアルタイムダッシュボード
Kinesis	
  App	
  
[Real=me	
  
ETL]	
  
Frontend	
  
[MQTT	
  Proxy]	
  
Frontend	
 ...
Raspberry  pi  +MQTT  
リアルタイムダッシュボード
Kinesis	
  App	
  
[Real=me	
  
ETL]	
  
Frontend	
  
[MQTT	
  Proxy]	
  
Frontend	
 ...
Raspberry  pi  +MQTT
リアルタイムダッシュボード
Kinesis	
  App	
  
[Real=me	
  
ETL]	
  
Frontend	
  
[MQTT	
  Proxy]	
  
Frontend	
  
...
Raspberry  pi  +MQTT
リアルタイムダッシュボード
Kinesis	
  App	
  
[Real=me	
  
ETL]	
  
Frontend	
  
[MQTT	
  Proxy]	
  
Frontend	
  
...
では動画でみてみましょう!
28
Amazon  Kinesis
アプリケーション開発
Kinesisアプリケーション開発
!   Kinesis  SDK
•  最もベーシックなSDK
!   Kinesis  Client  Library(KCL)
•  https://github.com/awslabs/amazon-‐...
Kinesis  Client  Library(KCL)
!   Kinesisアプリを作りやすくするJavaフレームワーク
•  DynamoDB,  CloudWatch,  AutoScalingを利利⽤用
•  ワーカーが死んだ時にオ...
サンプル
32
Kinesis  WebHDFSコネクター作ってみた
!   KinesisからEMRのHDFSに簡単にデータを送りたい
!   というわけで、WebHDFSのREST経由でやってみた
!   リアルタイム  TO  バッチのシームレス連携
3...
こんな感じになりました
34
ログ⽣生成側
Kinesis  WebHDFSコネクター
(EC2で稼働)
こんな感じになりました
35
Kinesis  WebHDFSコネクター
(EC2で稼働)
EMR  HDFSで
しっかり⽣生成されている
Kinesis  Connectors
!   KinesisとAWSサービスの連携コネクタ
36
ITransformer
• Kinesis
から
ユーザ
が使い
やすい
モデル
への変
換
IFilter
• データの
フィルタ
リング。...
Amazon  Kinesisと
アーキテクチャ
AWSを使ったアーキテクチャイメージ
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  
	
  
	
  
AWS	
  Endpoint	
  
	
  
Ki...
サンプルアーキテクチャ
!   Streamをパイプラインのようにつなげてデータ処理理を⾏行行うパターン
Data	
  
Sources	
  
Data	
  
Sources	
  
Data	
  
Sources	
  
Kinesi...
KinesisとEMRの組み合わせで、
リアルタイムからバッチ処理理の連動
DynamoDB RedshiftRDS EMR
提供中サービス
クエリー
タイプ
バッチタイプ
(Map-‐‑‒Reduce)
新しいサービス
ストリーム
タイプ
K...
秒単位
分単位
時間
単位
⽉月単位
データの到達速度度⾮非常に⾼高速 ⾮非常に遅い
Kinesis Kinesis EMR EMR
DynamoDB
ElastiCache
Redis
S3DynamoDB
ElastiCache
Redis...
まとめ
!   Kinesisが可能にした事のは・・・
•  ストリーム処理理をサービスとして提供する事で、  
全く新しいアプリケーションを可能にした
•  まだまだユースケースはあるはず
!   Kinesis  +  AWSサービスを使う...
ご清聴ありがとうございました!
アマゾンデータサービスジャパン株式会社
⼤大⾕谷  晋平
榎並  利利晃
Upcoming SlideShare
Loading in …5
×

Amazon kinesisで広がるリアルタイムデータプロセッシングとその未来

13,646 views

Published on

Published in: Technology
  • Be the first to comment

Amazon kinesisで広がるリアルタイムデータプロセッシングとその未来

  1. 1. Amazon  Kinesisで広がる リアルタイムデータ プロセッシングとその未来 アマゾンデータサービスジャパン株式会社 ⼤大⾕谷  晋平 榎並  利利晃
  2. 2. ⾃自⼰己紹介 !  名前:⼤大⾕谷  晋平 •  ohtani@amazon.co.jp •  @shot6 !  仕事: •  お客様のクラウド活⽤用アーキテクチャ⽀支援 •  エマージングソリューション部 !  担当技術分野 •  ビッグデータ、データベース、分散システム
  3. 3. ⾃自⼰己紹介 !   名前:  榎並  利利晃  (えなみ  としあき) !   現職:  Partner  Solution  Architect !   前職:  通信キャリア、電機メーカ、ゲーム会社でのシス テム構築・サービス運⽤用経験 !   3年年間  AWSユーザとしてサービス運⽤用 !   好きな  AWS  のサービス  :  Kinesis、S3
  4. 4. Kinesisとは フルマネージドな リアルタイムデータ処理理サービス
  5. 5. AWSが提供する ビックデータソリューションとKinesisのポジション DynamoDB RedshiftRDS EMR 提供中サービス クエリー タイプ バッチタイプ (Map-‐‑‒Reduce) 新しいサービス ストリーム タイプ Kinesis !   構造化されたデータ に対してクエリー処 理理を実⾏行行可能 !   ⼤大量量データに対する インデックス処理理を 事前に⾏行行う !   半構造化されたデー タに対してデータ処 理理を数回実⾏行行 !   事前処理理なしで実⾏行行 !   半構造化データをストリームで処理理 !   シンプルなデータ処理理 !   他システムへのデータ転送
  6. 6. Amazon  Kinesis フルマネージドなリアルタイムデータ処理理サービス  Data   Sources   App.4     [Machine   Learning]                                       AWS  Endpoint   App.1     [Aggregate  &   De-­‐Duplicate]    Data   Sources   Data   Sources    Data   Sources   App.2     [Metric   Extrac=on]   S3 DynamoDB Redshift App.3   [Sliding   Window   Analysis]    Data   Sources   Availability Zone Shard  1 Shard  2 Shard  N Availability Zone Availability Zone 使いやすさ リアルタイム処理理 ⾼高スループット /伸縮⾃自在性 インテグレー ション アプリ開発SDK 低コスト
  7. 7. 今すぐ始められる⼿手軽さ !   Management  Consoleで簡単セットアップ ウィザード形式で Streamが作成できる キャパシティ、レイテン シーをモニタリング。 Cloud  Watchで監視も可能 (*)  APIでも操作可能!
  8. 8. Amazon  Kinesisの仕組み
  9. 9. Kinesisはどのように動いているか? ストリーム シャード シャード データ レコード データ レコード データ レコード データ 送信側 Kinesis   アプリケーション   Kinesis   アプリケーション   Kinesis アプリケー ション Kinesis
  10. 10. データレコード、ストリーム、シャード ストリーム シャード シャード データ レコード データ レコード データ レコード
  11. 11. データレコード、ストリーム、シャード ストリーム シャード シャード データ レコード データ レコード データ レコード パーティションキーをハッシュ化 (MD5)した値を基にシャードに 分配する Max:  256Byte データブロブ パーティ ションキー シーケンス ナンバー Max:  50KB アプリケーションで指定 Kinesisで指定
  12. 12. データレコード、ストリーム、シャード ストリーム シャード シャード データ レコード データ レコード データ レコード •  ストリームの中にシャードがある •  ストリームにPutされたデータは複数DC に複製されて24時間保存される •  シャードは固定化されたキャパシティ
  13. 13. データレコード、ストリーム、シャード ストリーム シャード シャード データ レコード データ レコード データ レコード •  シャード毎にキャパシティが決まっている •  READ  :  5  TPS  or  2MB/sec •  WRITE  :  1000  TPS  or  1MB/sec •  スケールはこのシャードを追加することで 増加する事が可能
  14. 14. データレコード、ストリーム、シャード ストリーム シャード シャード データ レコード データ レコード データ レコード 0 MD5  Range 2128 シャード-‐‑‒1 (2128/2  -‐‑‒  2128) データ レコード MD5 (パーティションキー) シャード-‐‑‒0 (0  -‐‑‒  2128/2)
  15. 15. シャードとシーケンスナンバーの関係 ストリーム シャード シャード データ レコード データ レコード データ レコード •  シャード内にほぼシーケンスナンバー順に   データが⼊入ってくる シャード データ レコード (14) データ レコード (15) データ レコード (17) データ レコード (19) データ レコード (20)
  16. 16. Kinesisアプリケーション(KCL) ストリーム シャード シャード Kinesis アプリケー ション (KCL) Kinesis アプリケー ション (KCL) ワーカー シーケンスナ ンバー AAA BBB 12345 98765 24680 データ レコード (24680) データ レコード (12345) データ レコード (98765) データブロブ パーティ ションキー シーケンス ナンバー AAA BBB DynamoDB
  17. 17. Kinesisアプリケーション(KCL) ストリーム シャード シャード Kinesis アプリケー ション (KCL) Kinesis アプリケー ション (KCL) ワーカー シーケンスナ ンバー AAA BBB 12345 98765 24680 データ レコード (24680) データ レコード (12345) データ レコード (98765) データブロブ パーティ ションキー シーケンス ナンバー AAA BBB DynamoDB 1.  KCLがシャードからデータを取得 2.  設定された間隔でシーケンスナンバーを そのワーカーのIDをキーにした DynamoDBのテーブルに格納
  18. 18. ⽬目的に応じてKinesisアプリケーションを追加 ストリーム シャード シャード Kinesis アプリ S3ストア用 Kinesis アプリ S3ストア用 データ レコード (24680) データ レコード (12345) データ レコード (98765) S3-‐‑‒1 S3-‐‑‒2 Kinesis アプリ DynamoDB ストア用 Kinesis アプリ DynamoDB ストア用 D-‐‑‒1 D-‐‑‒2
  19. 19. Amazon  Kinesis使⽤用例例
  20. 20. Raspberry  pi  +MQTT リアルタイムダッシュボード Kinesis  App   [Real=me   ETL]   Frontend   [MQTT  Proxy]   Frontend   [MQTT  Proxy]  
  21. 21. Raspberry  pi !   Raspberry  pi  +  温度度センサ(ADT7410) 21 !   I2CでRaspberry  piと温度度センサを接続 !   10秒間に1回センサからデータを取得 !   Raspberry  piから直接KinesisにPut !   Kinesis  アプリで、異異常検知とデータ格納
  22. 22. MQTT !   M2M向けのpub/subモデルの軽量量プロトコル !   メッセージの軽量量かつ⾼高速な配信に特化している !   仕様 •  http://public.dhe.ibm.com/software/dw/webservices/ws-‐‑‒ mqtt/mqtt-‐‑‒v3r1.html !   実装 •  Mosquitto  :  オープンソースのMQTTブローカー実装 •  http://mosquitto.org/ !   こちらを使ってRaspberry  piからアップロード •  MQTTプロトコルは直接受けれないのでアダプタ経由 22
  23. 23. Raspberry  pi  +MQTT リアルタイムダッシュボード Kinesis  App   [Real=me   ETL]   Frontend   [MQTT  Proxy]   Frontend   [MQTT  Proxy]   import  paho.mqtt.publish  as  publish publish.single("mqttkb/test",  "boo",  hostname=”xxxx")
  24. 24. Raspberry  pi  +MQTT   リアルタイムダッシュボード Kinesis  App   [Real=me   ETL]   Frontend   [MQTT  Proxy]   Frontend   [MQTT  Proxy]   MQTT-‐‑‒Kinesisアダプタ部分をみてみましょう
  25. 25. Raspberry  pi  +MQTT   リアルタイムダッシュボード Kinesis  App   [Real=me   ETL]   Frontend   [MQTT  Proxy]   Frontend   [MQTT  Proxy]  
  26. 26. Raspberry  pi  +MQTT リアルタイムダッシュボード Kinesis  App   [Real=me   ETL]   Frontend   [MQTT  Proxy]   Frontend   [MQTT  Proxy]   KinesisアプリケーションでDynamoDBへ 書く部分をみてみましょう
  27. 27. Raspberry  pi  +MQTT リアルタイムダッシュボード Kinesis  App   [Real=me   ETL]   Frontend   [MQTT  Proxy]   Frontend   [MQTT  Proxy]   Kinesis  Client  LibraryはPythonで はまだないんです。。。
  28. 28. では動画でみてみましょう! 28
  29. 29. Amazon  Kinesis アプリケーション開発
  30. 30. Kinesisアプリケーション開発 !   Kinesis  SDK •  最もベーシックなSDK !   Kinesis  Client  Library(KCL) •  https://github.com/awslabs/amazon-‐‑‒kinesis-‐‑‒client   !   Kinesis  Connectors •  https://github.com/awslabs/amazon-‐‑‒kinesis-‐‑‒connectors   !   Kinesis  Storm  Spout •  https://github.com/awslabs/kinesis-‐‑‒storm-‐‑‒spout   !   EMR  Connector •  EMRのAMIに同梱 30
  31. 31. Kinesis  Client  Library(KCL) !   Kinesisアプリを作りやすくするJavaフレームワーク •  DynamoDB,  CloudWatch,  AutoScalingを利利⽤用 •  ワーカーが死んだ時にオートスケール+担当シャードアサイン !   作るもの •  ブートストラップ •  IRecordProcessorFactoryを継承したファクトリー •  IRecordProcessorを継承したプロセッサー 31 ブートスト ラップ ファクトリ ー プロセッサ ー ワーカー ⽣生成 ⽣生成 ⽣生成 実⾏行行 利利⽤用
  32. 32. サンプル 32
  33. 33. Kinesis  WebHDFSコネクター作ってみた !   KinesisからEMRのHDFSに簡単にデータを送りたい !   というわけで、WebHDFSのREST経由でやってみた !   リアルタイム  TO  バッチのシームレス連携 33 RESTで送信 HTTP  PUT   http://xxx.9101/webhdfs/v1/user/ohtani/file ?op=create&user.name=hadoop Kinesis EMR Client
  34. 34. こんな感じになりました 34 ログ⽣生成側 Kinesis  WebHDFSコネクター (EC2で稼働)
  35. 35. こんな感じになりました 35 Kinesis  WebHDFSコネクター (EC2で稼働) EMR  HDFSで しっかり⽣生成されている
  36. 36. Kinesis  Connectors !   KinesisとAWSサービスの連携コネクタ 36 ITransformer • Kinesis から ユーザ が使い やすい モデル への変 換 IFilter • データの フィルタ リング。 フィルタ リングし て残った ものが バッ ファーへ ⾏行行く IBuffer • 指定のレ コード数 か、バイ ト数まで バッファ ー IEmitter • 他AWS サービ スの コール 実施 S3 DynamoDB Redshift Kinesis
  37. 37. Amazon  Kinesisと アーキテクチャ
  38. 38. AWSを使ったアーキテクチャイメージ                                     AWS  Endpoint     Kinesis     App.1       Kinesis     App.2     Redshift DynamoDB   Kinesis     App.3   Availabilit y Zone Shard  1 Shard  2 Shard  N Availabi lity Zone Availabi lity Zone RDS 企業内データ アナリスト BIツールで 統計分析 データ  as  a  Serviceを提供 エンドユーザ向けサービス提供 S3 企業データ の保存   エンドユーザへの通知 Kinesisによるストリーム保存
  39. 39. サンプルアーキテクチャ !   Streamをパイプラインのようにつなげてデータ処理理を⾏行行うパターン Data   Sources   Data   Sources   Data   Sources   Kinesis   App   Kinesis   App   Kinesis   App   Data   Sources   Data   Sources   Data   Sources   Kinesis   App   Kinesis   App   Kinesis   App   Kinesis   App   Data  Source群A Data  Source群B Data  Source群A⽤用ETL (クレンジング) Data  Source群B⽤用ETL (クレンジング) 集計
  40. 40. KinesisとEMRの組み合わせで、 リアルタイムからバッチ処理理の連動 DynamoDB RedshiftRDS EMR 提供中サービス クエリー タイプ バッチタイプ (Map-‐‑‒Reduce) 新しいサービス ストリーム タイプ Kinesis !   構造化されたデータ に対してクエリー処 理理を実⾏行行可能 !   ⼤大量量データに対する インデックス処理理を 事前に⾏行行う !   半構造化されたデー タに対してデータ処 理理を数回実⾏行行 !   事前処理理なしで実⾏行行 !   半構造化データをストリームで処理理 !   シンプルなデータ処理理 !   他システムへのデータ転送
  41. 41. 秒単位 分単位 時間 単位 ⽉月単位 データの到達速度度⾮非常に⾼高速 ⾮非常に遅い Kinesis Kinesis EMR EMR DynamoDB ElastiCache Redis S3DynamoDB ElastiCache Redis Redshift S3 Redshift EMR 変換と集積化 データサイズは増加 KinesisとEMRはデータ変換の ゲートウェイとして機能し、 各データベースは⽤用途によって変化 データ 収集 処理理単位ごとのデータ処理理ボリューム ⼤大規模⼩小規模
  42. 42. まとめ !   Kinesisが可能にした事のは・・・ •  ストリーム処理理をサービスとして提供する事で、   全く新しいアプリケーションを可能にした •  まだまだユースケースはあるはず !   Kinesis  +  AWSサービスを使うと・・・ •  ストリームのリアルタイム処理理から、バッチ処理理ま でシームレスにデータをながせる !   というわけで皆さん試してみてください! 42
  43. 43. ご清聴ありがとうございました! アマゾンデータサービスジャパン株式会社 ⼤大⾕谷  晋平 榎並  利利晃

×