Your SlideShare is downloading. ×
Amazon kinesisで広がるリアルタイムデータプロセッシングとその未来
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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

5,738
views

Published on

Published in: Technology

0 Comments
26 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
5,738
On Slideshare
0
From Embeds
0
Number of Embeds
14
Actions
Shares
0
Downloads
79
Comments
0
Likes
26
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Amazon  Kinesisで広がる リアルタイムデータ プロセッシングとその未来 アマゾンデータサービスジャパン株式会社 ⼤大⾕谷  晋平 榎並  利利晃
  • 2. ⾃自⼰己紹介 !  名前:⼤大⾕谷  晋平 •  ohtani@amazon.co.jp •  @shot6 !  仕事: •  お客様のクラウド活⽤用アーキテクチャ⽀支援 •  エマージングソリューション部 !  担当技術分野 •  ビッグデータ、データベース、分散システム
  • 3. ⾃自⼰己紹介 !   名前:  榎並  利利晃  (えなみ  としあき) !   現職:  Partner  Solution  Architect !   前職:  通信キャリア、電機メーカ、ゲーム会社でのシス テム構築・サービス運⽤用経験 !   3年年間  AWSユーザとしてサービス運⽤用 !   好きな  AWS  のサービス  :  Kinesis、S3
  • 4. Kinesisとは フルマネージドな リアルタイムデータ処理理サービス
  • 5. AWSが提供する ビックデータソリューションとKinesisのポジション DynamoDB RedshiftRDS EMR 提供中サービス クエリー タイプ バッチタイプ (Map-‐‑‒Reduce) 新しいサービス ストリーム タイプ Kinesis !   構造化されたデータ に対してクエリー処 理理を実⾏行行可能 !   ⼤大量量データに対する インデックス処理理を 事前に⾏行行う !   半構造化されたデー タに対してデータ処 理理を数回実⾏行行 !   事前処理理なしで実⾏行行 !   半構造化データをストリームで処理理 !   シンプルなデータ処理理 !   他システムへのデータ転送
  • 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. 今すぐ始められる⼿手軽さ !   Management  Consoleで簡単セットアップ ウィザード形式で Streamが作成できる キャパシティ、レイテン シーをモニタリング。 Cloud  Watchで監視も可能 (*)  APIでも操作可能!
  • 8. Amazon  Kinesisの仕組み
  • 9. Kinesisはどのように動いているか? ストリーム シャード シャード データ レコード データ レコード データ レコード データ 送信側 Kinesis   アプリケーション   Kinesis   アプリケーション   Kinesis アプリケー ション Kinesis
  • 10. データレコード、ストリーム、シャード ストリーム シャード シャード データ レコード データ レコード データ レコード
  • 11. データレコード、ストリーム、シャード ストリーム シャード シャード データ レコード データ レコード データ レコード パーティションキーをハッシュ化 (MD5)した値を基にシャードに 分配する Max:  256Byte データブロブ パーティ ションキー シーケンス ナンバー Max:  50KB アプリケーションで指定 Kinesisで指定
  • 12. データレコード、ストリーム、シャード ストリーム シャード シャード データ レコード データ レコード データ レコード •  ストリームの中にシャードがある •  ストリームにPutされたデータは複数DC に複製されて24時間保存される •  シャードは固定化されたキャパシティ
  • 13. データレコード、ストリーム、シャード ストリーム シャード シャード データ レコード データ レコード データ レコード •  シャード毎にキャパシティが決まっている •  READ  :  5  TPS  or  2MB/sec •  WRITE  :  1000  TPS  or  1MB/sec •  スケールはこのシャードを追加することで 増加する事が可能
  • 14. データレコード、ストリーム、シャード ストリーム シャード シャード データ レコード データ レコード データ レコード 0 MD5  Range 2128 シャード-‐‑‒1 (2128/2  -‐‑‒  2128) データ レコード MD5 (パーティションキー) シャード-‐‑‒0 (0  -‐‑‒  2128/2)
  • 15. シャードとシーケンスナンバーの関係 ストリーム シャード シャード データ レコード データ レコード データ レコード •  シャード内にほぼシーケンスナンバー順に   データが⼊入ってくる シャード データ レコード (14) データ レコード (15) データ レコード (17) データ レコード (19) データ レコード (20)
  • 16. Kinesisアプリケーション(KCL) ストリーム シャード シャード Kinesis アプリケー ション (KCL) Kinesis アプリケー ション (KCL) ワーカー シーケンスナ ンバー AAA BBB 12345 98765 24680 データ レコード (24680) データ レコード (12345) データ レコード (98765) データブロブ パーティ ションキー シーケンス ナンバー AAA BBB DynamoDB
  • 17. Kinesisアプリケーション(KCL) ストリーム シャード シャード Kinesis アプリケー ション (KCL) Kinesis アプリケー ション (KCL) ワーカー シーケンスナ ンバー AAA BBB 12345 98765 24680 データ レコード (24680) データ レコード (12345) データ レコード (98765) データブロブ パーティ ションキー シーケンス ナンバー AAA BBB DynamoDB 1.  KCLがシャードからデータを取得 2.  設定された間隔でシーケンスナンバーを そのワーカーのIDをキーにした DynamoDBのテーブルに格納
  • 18. ⽬目的に応じてKinesisアプリケーションを追加 ストリーム シャード シャード Kinesis アプリ S3ストア用 Kinesis アプリ S3ストア用 データ レコード (24680) データ レコード (12345) データ レコード (98765) S3-‐‑‒1 S3-‐‑‒2 Kinesis アプリ DynamoDB ストア用 Kinesis アプリ DynamoDB ストア用 D-‐‑‒1 D-‐‑‒2
  • 19. Amazon  Kinesis使⽤用例例
  • 20. Raspberry  pi  +MQTT リアルタイムダッシュボード Kinesis  App   [Real=me   ETL]   Frontend   [MQTT  Proxy]   Frontend   [MQTT  Proxy]  
  • 21. Raspberry  pi !   Raspberry  pi  +  温度度センサ(ADT7410) 21 !   I2CでRaspberry  piと温度度センサを接続 !   10秒間に1回センサからデータを取得 !   Raspberry  piから直接KinesisにPut !   Kinesis  アプリで、異異常検知とデータ格納
  • 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. 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. Raspberry  pi  +MQTT   リアルタイムダッシュボード Kinesis  App   [Real=me   ETL]   Frontend   [MQTT  Proxy]   Frontend   [MQTT  Proxy]   MQTT-‐‑‒Kinesisアダプタ部分をみてみましょう
  • 25. Raspberry  pi  +MQTT   リアルタイムダッシュボード Kinesis  App   [Real=me   ETL]   Frontend   [MQTT  Proxy]   Frontend   [MQTT  Proxy]  
  • 26. Raspberry  pi  +MQTT リアルタイムダッシュボード Kinesis  App   [Real=me   ETL]   Frontend   [MQTT  Proxy]   Frontend   [MQTT  Proxy]   KinesisアプリケーションでDynamoDBへ 書く部分をみてみましょう
  • 27. Raspberry  pi  +MQTT リアルタイムダッシュボード Kinesis  App   [Real=me   ETL]   Frontend   [MQTT  Proxy]   Frontend   [MQTT  Proxy]   Kinesis  Client  LibraryはPythonで はまだないんです。。。
  • 28. では動画でみてみましょう! 28
  • 29. Amazon  Kinesis アプリケーション開発
  • 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. Kinesis  Client  Library(KCL) !   Kinesisアプリを作りやすくするJavaフレームワーク •  DynamoDB,  CloudWatch,  AutoScalingを利利⽤用 •  ワーカーが死んだ時にオートスケール+担当シャードアサイン !   作るもの •  ブートストラップ •  IRecordProcessorFactoryを継承したファクトリー •  IRecordProcessorを継承したプロセッサー 31 ブートスト ラップ ファクトリ ー プロセッサ ー ワーカー ⽣生成 ⽣生成 ⽣生成 実⾏行行 利利⽤用
  • 32. サンプル 32
  • 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 ログ⽣生成側 Kinesis  WebHDFSコネクター (EC2で稼働)
  • 35. こんな感じになりました 35 Kinesis  WebHDFSコネクター (EC2で稼働) EMR  HDFSで しっかり⽣生成されている
  • 36. Kinesis  Connectors !   KinesisとAWSサービスの連携コネクタ 36 ITransformer • Kinesis から ユーザ が使い やすい モデル への変 換 IFilter • データの フィルタ リング。 フィルタ リングし て残った ものが バッ ファーへ ⾏行行く IBuffer • 指定のレ コード数 か、バイ ト数まで バッファ ー IEmitter • 他AWS サービ スの コール 実施 S3 DynamoDB Redshift Kinesis
  • 37. Amazon  Kinesisと アーキテクチャ
  • 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. サンプルアーキテクチャ !   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. KinesisとEMRの組み合わせで、 リアルタイムからバッチ処理理の連動 DynamoDB RedshiftRDS EMR 提供中サービス クエリー タイプ バッチタイプ (Map-‐‑‒Reduce) 新しいサービス ストリーム タイプ Kinesis !   構造化されたデータ に対してクエリー処 理理を実⾏行行可能 !   ⼤大量量データに対する インデックス処理理を 事前に⾏行行う !   半構造化されたデー タに対してデータ処 理理を数回実⾏行行 !   事前処理理なしで実⾏行行 !   半構造化データをストリームで処理理 !   シンプルなデータ処理理 !   他システムへのデータ転送
  • 41. 秒単位 分単位 時間 単位 ⽉月単位 データの到達速度度⾮非常に⾼高速 ⾮非常に遅い Kinesis Kinesis EMR EMR DynamoDB ElastiCache Redis S3DynamoDB ElastiCache Redis Redshift S3 Redshift EMR 変換と集積化 データサイズは増加 KinesisとEMRはデータ変換の ゲートウェイとして機能し、 各データベースは⽤用途によって変化 データ 収集 処理理単位ごとのデータ処理理ボリューム ⼤大規模⼩小規模
  • 42. まとめ !   Kinesisが可能にした事のは・・・ •  ストリーム処理理をサービスとして提供する事で、   全く新しいアプリケーションを可能にした •  まだまだユースケースはあるはず !   Kinesis  +  AWSサービスを使うと・・・ •  ストリームのリアルタイム処理理から、バッチ処理理ま でシームレスにデータをながせる !   というわけで皆さん試してみてください! 42
  • 43. ご清聴ありがとうございました! アマゾンデータサービスジャパン株式会社 ⼤大⾕谷  晋平 榎並  利利晃

×