AWS Black Belt Online Seminar Amazon Kinesis アマゾンウェブサービスジャパン株式会社 ソリューションアーキテクト 内海英 一郎郎

Similar documents
PowerPoint Presentation

自 己紹介 アマゾンウェブサービス ジャパン株式会社 ソリューションアーキテクト Amazon Kinesis うちうみえいいちろう 内海英 Java LMAX Disruptor

Presentation Title Here

AWS 上でのサーバーレスアーキテクチャ 入 門 AWS Black Belt Online Seminar 2016 アマゾンウェブサービスジャパン株式会社 ソリューションアーキテクト清 水崇之 , Amazon Web Services, Inc. or its Aff

Speed matters - Amazon Kinesis が実現するストリーミングデータのリアルタイム分析

Presentation Title Here

AWS Black Belt Online Seminar Amazon Inspector アマゾンウェブサービスジャパン株式会社 セキュリティソリューションアーキテクト桐 山隼 人

Amazon Kinesis Data Streams - 開発者ガイド

Presentation Title Here

PowerPoint Presentation

_AWS-Blackbelt-Organizations

内容についての注意点! AWS クラウドのサービスは ご利利 用いただいた時間や量量により費 用が変動する従量量課 金金です そのため 事前に料料 金金確定 見見積を作成することはできない旨はご了了承ください! 特に断りがない場合 本資料料では 2014 年年 7 月 24 日現在の東京リージョンの

PowerPoint Presentation

よくある問題を解決する~ 5 分でそのままつかえるソリューション by AWS ソリューションズビルダチーム

Webhard_Users manual

自 己紹介 株式会社ネクフル 代表取締役草薙俊介 (Shunsuke Kusanagi) 1982 年年北北海道札幌市出 身 2001 年年北北海道札幌 西 高等学校卒 2005 年年明治 大学経営学部卒 2011 年年フリーター web コンサルを経て独学でプログラミングを学び株式会社ネクフル設

お客様からの依頼内容とその現状

PowerPoint Presentation

データ送信手順 2

はじめに AWS Glueは現在Preview中のサービスです 本資料に記載した内容はGA 正式リリース ま でに予告なく変更される可能性があります Twitterのハッシュタグは です 2

AWS およびパートナーサービスを使った、データの集約および活用設計パターン

iNFUSE インフューズ

_BlackBelt_ApplicationAuthPatterns

電子申告の達人とは 法人税の達人 などの 申告書作成ソフト で作成した申告 申請等データを電子申告データに変換し 署名 送信から受信確認までの一連の操作を行うことができます 2

dynamodb-deepdive-DMM勉強会[30min]1

VPCスターターパック説明資料

PowerPoint プレゼンテーション

データベースの近代化:シンプルなクロスプラットフォーム、最小のダウンタイムで実現するクラウド移行

電子申告の達人とは 申告書作成ソフト ( 達人シリーズ ) で作成した申告 申請等データを電子申告データに変換し 署名 送信からメッセージボックスの確認までの一連の操作を行うことができます

そこが知りたい!AWSクラウドのセキュリティ

自 己紹介 名前 渡邉源太 所属 アマゾンウェブサービスジャパン株式会社 技術本部レディネスソリューション部 ソリューションアーキテクト (Windows Specialist) 好きな AWS サービス Amazon WorkSpaces

AWS からのメール配信の選択肢 1. EC2 上に Mail Transfer Agent (MTA) を構築して配信 2. Amazon Simple Service (SES) の利利 用 3. 外部 配信サービスの利利 用 3. については AWS 特有の 手順はない


intra-mart Accel Platform — IM-BloomMaker プログラミングガイド   初版  

Who am I? 名前 : 江川 大地 所属 アマゾンウェブサービスジャパン株式会社 ソリューションアーキテクト 経歴 データベースエンジニア AWS テクニカルトレーナー 好きなサービス AWS サポート 2 好きなデータベース PostgreSQL

Shibboleth Office365 Education , Office365, 8 26 Office365 Shibboleth., Shibboleth, Office365,. 1.,,,,., LMS.,,, ICT,, Google App

Re-Quest 操作クイックマニュアル < 勤怠管理編 >. 承認方法. タイムシートを検索します 勤怠管理 メニューをクリックして勤怠状況画面を表示します タイムシートのステータスごとの件数が表示されています 該当するステータスをクリックして対象のタイムシートを検索します 日次の承認を行う場合

Agentless_UID_Win2003_RevB

Presentation Title Here

最新 IoT デザインパターン 〜AWS IoT と AWS Greengrass を用いた構築パターン〜

ITdumpsFree Get free valid exam dumps and pass your exam test with confidence

データセンターの効率的な資源活用のためのデータ収集・照会システムの設計

オージス総研0707セミナー

電子申告の達人とは 申告書作成ソフト ( 達人シリーズ ) で作成した申告 申請等データを電子申告データに変換し 署名 送信からメッセージボックスの確認までの一連の操作を行うことができます 2

PowerPoint プレゼンテーション

目次 A-SaaS クライアントのセットアップ手順 A-SaaS クライアントをダウンロードする P3 A-SaaS クライアントをインストールする P5 A-SaaS にログインする P5 A-SaaS クライアントのバージョンアップ手順 最新バージョンの確認方法 P6 A-SaaS クライアント

IBM Sametime 9 構成とアプリ開発 - テクてく Lotus 技術者夜会 年年 7 月 25 日 東京ソフトウェア開発研究所第 一 ECM 製品開発 小野充志 日本アイ ビー エム株式会社 ICS 事業部 ICS 第 一テクニカルセールス 別当類 2014 IBM Corp

Oracle Un お問合せ : Oracle Data Integrator 11g: データ統合設定と管理 期間 ( 標準日数 ):5 コースの概要 Oracle Data Integratorは すべてのデータ統合要件 ( 大量の高パフォーマンス バッチ ローブンの統合プロセスおよ

自 己紹介 桑野 章弘(くわの あきひろ) ソリューションアーキテクト 主にメディア系のお客様を担当しております 渋 谷のインフラエンジニア 仮 しておりました 好きなAWSのサービス ElastiCache 好きなデータストア MongoDB 2

投資信託の種類を理解しよう インデックス型とアクティブ型の 2 種類があります インデックス型 ( パッシブ型 ) 特定の指数 例えば 日経平均株価や原油などの値動きに連動するように設計された投資信託 アクティブ型 インデックス型以上の投資収益 ( リターン ) を目標として運用するタイプの投資信託

最新アップデート AWS IoT Solution 〜 事例とサービスアップデート 〜

Microsoft PowerPoint - AWS-RatesSystem-JP_ pptx

koboデスクトップアプリ ユーザーガイド

Presentation Title Here

JP1 Version 11

Agenda Complex Processing (CEP) とは CEP の適 用事例例 BRMS について CEP について 2

C. Web ページから CSV ファイルをインポート 管理者メニューから 先生アイコンをクリックします CSV インポートボタンを押した後 確認画面がでます 内容を確認後 インポートを押して取り込みを行ってください 1 人づつ登録する場合 A. 先生一覧のボタンから 一人づつ登録することもできます

AWS Black Belt Online Seminar AWS OpsWorks アマゾンウェブサービスジャパン株式会社 ソリューションアーキテクト 舟崎健治

9 WEB監視

アカウント管理者 操作ドキュメント

intra-mart Accel Platform — IM-Repository拡張プログラミングガイド   初版  

新製品 Arcserve Backup r17.5 のご紹介 (SP1 対応版 ) Arcserve Japan Rev. 1.4

ログイン / ボリューム選択

tokyo_t3.pdf

2014 QBR: Campaign Marketing

Microsoft PowerPoint - 【HULFT】効果的なHULFT活用講座(①機能編)( )2.pptx

内容についての注意点 本資料料では 2016 年年 9 月 28 日時点のサービス内容および価格についてご説明しています 最新の情報は AWS 公式ウェブサイト ( にてご確認ください 資料料作成には 十分注意しておりますが 資料料内の価格と AWS 公式

サーバレスアーキテクチャで実現した M-1 グランプリ敗者復活戦投票システム

intra-mart Accel Platform

Transcription:

AWS Black Belt Online Seminar Amazon Kinesis アマゾンウェブサービスジャパン株式会社 ソリューションアーキテクト 内海英 一郎郎 2016.08.10

自 己紹介 アマゾンウェブサービス ジャパン株式会社 ソリューションアーキテクト Amazon Kinesis うちうみえいいちろう 内海英 一郎郎 @eiichirouchiumi Java LMAX Disruptor

内容についての注意点 本資料料では 2016 年年 8 月 10 日時点のサービス内容および価格についてご説明しています 最新の情報は 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.

Agenda Amazon Kinesis 概要 Amazon Kinesis アプリケーション の開発 Amazon Kinesis の運 用

Amazon Kinesis 概要

Amazon Kinesis ストリーミングデータを収集 処理理 配信するためのマネージドサービス群 Amazon Kinesis Streams ストリーミングデータを 処理理 分析するための アプリケーションを 独 自に構築 Amazon Kinesis Firehose ストリーミングデータを Amazon S3, Amazon Redshift, Amazon ES へ 簡単にロード Amazon Kinesis Analytics プレビュー ストリーミングデータを 標準的な SQL クエリーで簡単に分析

ストリーミングデータの 利利 用シナリオ シナリオ データの収集と ETL 継続的なメトリクス計算 リアルタイム分析と応答 データタイプ アプリケーションログ / コンピューターメトリクス / クリックストリーム / センサーデータ / マーケットデータ... 広告 / マーケティング 配信や 入札データの収集 コンバージョンレート / 収益 / カバレージの計算 ユーザー 行行動に応じた 配信 入札エンジンの最適化 IoT テレメトリーデータの収集 デバイスやサーバーの 稼働状態の計算 稼働状態予測や アラート 通知の発 行行 ゲーム 顧客 行行動データの収集 成功率率率 / トランジションレート / クリックレートの計算 リーダーボードや マッチメイクの最適化 コンシューマー 向け 顧客 行行動データの収集 ページビュー / クリックレートの計算 レコメンデーションエンジンの 最適化

Amazon Kinesis の 特 長 プロビジョニングと管理理が容易易 伸縮 自在のスケーラビリティ リアルタイム処理理 前払いなしの従量量課 金金制 ユースケースに応じたサービスラインナップ

Kinesis Streams ストリーミングデータを処理理 分析するためのアプリケーションを独 自に構築 管理理が容易易 必要なキャパシティをセットしてストリームを作成するだけで利利 用可能 スループットやデータ量量の変化に応じてスケール 独 自のリアルタイムアプリケーション Amazon Kinesis Client Library, Apache Spark/Storm, AWS Lambda 等を利利 用してストリーム処理理を実装 低コスト あらゆるスケールのワークロードで 高いコスト効果

Kinesis Streams の アーキテクチャ 複数のアプリケーションから 同時アクセス可能な 順序つきイベントストリーム 集約して S3 にアーカイブ 数百万のソースが 1 時間あたり数百 TB の データを 生成 リアルタイムダッシュボード / アラート Front End point end 認証 認可 AZ AZ AZ 機械学習 / スライディングウィンドウ分析 3 アベイラビリティゾーンの 永続ストレージに強い整合性でデータを複製 データウェアハウスにロード AWS リージョン

Kinesis Streams の 主要なコンセプト データ レコード Kinesis Streams エンドポイント ストリーム シャード 0 シャード 1 シャード..N Amazon S3 DynamoDB Amazon Redshift Amazon EMR データ送信側 データ処理理側 データの種類や処理理の 用途に応じて ストリーム を作成 ストリームは 1 つ以上の シャード で構成 保存されるデータの単位を データレコード と呼び 保持期間はデフォルトで 24 時間 / 最 長で 7 日間 1 データレコードの最 大サイズは 1 MB データ送信側のキャパシティは 1 シャードあたり秒間 1 MB もしくは 1,000 PUT レコード データ処理理側のキャパシティは 1 シャードあたり秒間 2 MB もしくは 5 回の読み取りトランザクション ストリーム内のシャード数を増減することでスループットをコントロール

Kinesis Streams における データレコードの分散 データ データレコード パーティションキー パーティションキーのハッシュで分散 * ストリーム シャード 0 "HashKeyRange" { "EndingHashKey": "170141183460469231731687303715884105727", "StartingHashKey": "0" } シャード 1 "HashKeyRange" { "EndingHashKey": "340282366920938463463374607431768211455", "StartingHashKey": "170141183460469231731687303715884105728" } 0 ハッシュキーの範囲 2^128-1 * ハッシュキーを直接指定することも可能 データ 入 力力時に指定するパーティションキー ( 最 長 256 文字 ) で保存先のシャードが決定 MD5 ハッシュ関数でパーティションキーを 128 ビット整数値のハッシュキーに変換 ハッシュキーの範囲に対応したシャードにデータレコードをマップ

Kinesis Streams における データレコードの順序性 ストリーム SequenceNumber 32 SequenceNumber 26 SequenceNumber 25 SequenceNumber 17 シャード 0 データレコード データレコード SequenceNumber 35 SequenceNumber 15 SequenceNumber 12 SequenceNumber 11 シャード 1 データレコード 全てのデータレコードにはシーケンス番号がアサインされる ストリーム内の全シャード間でユニーク シャード内で時間の経過とともに単調増加 ( シャード間では単調増加しない ) データ処理理時にシーケンス番号でレコード取得開始ポジションを指定可能

Kinesis Streams をサポートする プロデューサー / コンシューマー プロデューサー ( データ送信側 ) コンシューマー ( データ処理理側 ) AWS SDK Kinesis Producer Library Kinesis Agent Get* API Kinesis Client Library Kinesis Analytics AWS IoT Kinesis Log4j Appender Fluentd AWS Lambda Amazon EMR Apache Storm

Kinesis Streams の 料料 金金 項 目 シャード時間 ( 取得 1 MB/ 秒 送信 2 MB/ 秒 ) PUT ペイロードユニット (25 KB) 1,000,000 ユニットごと 拡張データ保持期限 ( 最 大 7 日間 ) シャード時間ごと 料料 金金 ( 東京リージョン ) $0.0195 $0.0215 $0.026

Kinesis Firehose ストリーミングデータを Amazon S3, Amazon Redshift, Amazon ES へ 簡単にロード 管理理不不要 アプリケーションの実装やインフラストラクチャーの管理理を 一切切 行行わずに Amazon S3 / Amazon Redshift / Amazon ES にデータを配信可能 データストアとダイレクトに統合 シンプルな設定でストリーミングデータのバッチ化 圧縮 暗号化が可能 最短 60 秒でデータを配信 シームレスにスケール データのスループットに応じて 自動的にスケール

Kinesis Firehose の 主要なコンセプト データ レコード Kinesis Firehose エンドポイント Amazon S3 配信ストリーム Amazon Redshift 配信ストリーム Amazon ES 配信ストリーム Amazon S3 Amazon Redshift Amazon ES データ送信側 配信先に応じて 配信ストリーム を作成 シャードの作成やパーティションキーの指定不不要 1 データレコードの最 大サイズは 1 MB 制限なしにスケールするよう設計 米国東部 ( バージニア北北部 )/ 米国 西部 ( オレゴン )/ 欧州 ( アイルランド ) リージョンで利利 用可能

Kinesis Firehose の 料料 金金 項 目 PUT ペイロードサイズ GB ごと 料料 金金 ( バージニア北北部リージョン ) $0.035

Kinesis Analytics プレビュー ストリーミングデータを標準的な SQL クエリーで簡単に分析 SQL をストリームに適 用 簡単にデータストリームへ接続し 標準的な SQL を適 用可能 リアルタイムアプリケーションを構築 秒以下のレイテンシーでストリーミングデータを連続的に処理理 弾 力力的にスケール データのスループットに応じて弾 力力的にスケール オペレーションの介 入不不要

Amazon Kinesis アプリケーションの開発

Kinesis Streams の セットアップ 以下の情報を 入 力力 ストリーム名 シャード数

PutRecord API による Kinesis Streams への単 一レコード送信 # AWS CLI の例例 $ aws kinesis put-record --stream-name mystream data mydata' \ --partition-key $RANDOM { "ShardId": "shardid-000000000013", "SequenceNumber": "49541296383533603670305612607160966548683674396982771921" } ストリーム名 データ パーティションキーを指定して送信 送信成功時にはシャード ID とシーケンス番号が返却される

PutRecords API による Kinesis Streams への複数レコード 一括送信 // Java の例例 AmazonKinesisClient amazonkinesisclient = new AmazonKinesisClient(credentialsProvider); PutRecordsRequest putrecordsrequest = new PutRecordsRequest(); putrecordsrequest.setstreamname( mystream"); List<PutRecordsRequestEntry> putrecordsrequestentrylist = new ArrayList<>(); for (int i = 0; i < 100; i++) { PutRecordsRequestEntry putrecordsrequestentry = new PutRecordsRequestEntry(); putrecordsrequestentry.setdata(bytebuffer.wrap(string.valueof(i).getbytes())); putrecordsrequestentry.setpartitionkey(string.format("partitionkey-%d", i)); putrecordsrequestentrylist.add(putrecordsrequestentry); } putrecordsrequest.setrecords(putrecordsrequestentrylist); PutRecordsResult putrecordsresult = amazonkinesisclient.putrecords(putrecordsrequest); System.out.println("Put Result" + putrecordsresult); 1 リクエストとして設定できるデータレコードの合計件数は最 大 500 件 1 リクエストとして設定できるデータレコードの合計サイズは最 大 5 MB 一部のデータレコードの送信のみが失敗する可能性あり

Kinesis Producer Library による Kinesis Streams へのレコード送信 KinesisProducer kinesis = new KinesisProducer(); List<Future<UserRecordResult>> putfutures = new LinkedList<Future<UserRecordResult>>(); for (int i = 0; i < 100; i++) { ByteBuffer data = ByteBuffer.wrap("myData".getBytes("UTF-8")); putfutures.add( kinesis.adduserrecord("mystream", "mypartitionkey", data)); } // 応答を待機し 送信結果をチェック for (Future<UserRecordResult> f : putfutures) { UserRecordResult result = f.get();... } 複数のレコードをバッファリングして送信し キャパシティ超過時のリトライをサポート タイムアウト時間や送信時に利利 用するコネクション数を設定可能 複数件のデータを 1 データレコードに集約して送信可能 パフォーマンスメトリクスを CloudWatch に 自動送信

Kinesis Firehose のセットアップ (Amazon S3 配信 ) 以下の情報を 入 力力 配信ストリーム名 S3 バケット バケット名 プレフィックス名

Kinesis Firehose のセットアップ (Amazon S3 配信 ) 以下の情報を 入 力力 バッファサイズ バッファインターバル 圧縮オプション 暗号化オプション エラーログ出 力力の是 非 IAM ロール

Kinesis Firehose のセットアップ (Amazon Redshift 配信 ) 以下の情報を 入 力力 配信ストリーム名 S3 バケット バケット名 プレフィックス名 Redshift クラスター データベース名 テーブル名 カラム名 ユーザー名 パスワード COPY コマンドオプション リトライ許容時間

Kinesis Firehose のセットアップ (Amazon Redshift 配信 ) 以下の情報を 入 力力 バッファサイズ バッファインターバル 圧縮オプション 暗号化オプション エラーログ出 力力の是 非 IAM ロール

Kinesis Firehose のセットアップ (Amazon ES 配信 ) 以下の情報を 入 力力 配信ストリーム名 Elasticsearch ドメイン インデックス名 ローテーション間隔 タイプ名 リトライ許容時間 バックアップモード S3 バケット名 S3 プレフィックス名

Kinesis Firehose のセットアップ (Amazon ES 配信 ) 以下の情報を 入 力力 バッファサイズ バッファインターバル 圧縮オプション 暗号化オプション エラーログ出 力力の是 非 IAM ロール

PutRecord API による Kinesis Firehose への単 一レコード送信 # Python の例例 import boto3 client = boto3.client('firehose') data = "mydata\n" response = client.put_record( DeliveryStreamName='my-stream', Record={ 'Data': data } ) print(response) { "RecordId": "..." } パーティションキーの指定不不要 送信成功時にはレコード ID が返却される 複数レコードの 一括送信には PutRecordBatch API を利利 用

Kinesis Agent による Kinesis Streams/Firehose へのレコード送信 /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" } ] } エージェントにてモニタリングするファイルのパターンと送信先ストリームを指定 CloudWatch へのメトリクス送信やファイル 行行の変換 送信前のバッファリングが可能 Kinesis Streams と Kinesis Firehose へ同時送信可能

GetRecords API による Kinesis Streams からのレコード取得 # AWS CLI の例例 $ aws kinesis get-shard-iterator --shard-id shardid-000000000000 --shard-iterator-type TRIM_HORIZON --stream-name Foo { "ShardIterator": "AAAAAAAAAAHS..." } $ aws kinesis get-records shard-iterator AAAAAAAAAAHS... { "Records":[ { "Data":"dGVzdGRhdGE=", "PartitionKey":"123, "ApproximateArrivalTimestamp": 1.441215410867E9, "SequenceNumber":"49544985256907370027570885864065577703022652638596431874" } ], "MillisBehindLatest":24000, "NextShardIterator":"AAAAAAAAAAED..." } ストリーム名 シャード ID を指定してシャードイテレーターを取得 シャードイテレーターを指定してデータレコードを取得 データレコードはシーケンス番号順に返却される 返却された NextShardIterator を利利 用して後続のレコードセットを取得

シャードイテレーターの 種類 Timestamp T + 2 Timestamp T SequenceNumber N AT_SEQUENCE_NUMBER (of N) AT_TIMESTAMP (of T + 1) AFTER_SEQUENCE_NUMBER (of N) TRIM_HORIZON LATEST AT_SEQUENCE_NUMBER 指定したシーケンス番号のデータレコードから読み取りを開始 AFTER_SEQUENCE_NUMBER 指定したシーケンス番号のデータレコードの直後から読み取りを開始 AT_TIMESTAMP 指定したタイムスタンプ以後のデータレコードから読み取りを開始 TRIM_HORIZON シャード内に保持している最も古いデータレコードから読み取りを開始 LATEST シャード内に保持している最も新しいデータレコードから読み取りを開始

Kinesis Client Library による Kinesis Streams のレコード処理理 // Java の例例 public class AmazonKinesisApplicationSampleRecordProcessor implements IRecordProcessor { @Override public void processrecords(list<record> records, IRecordProcessorCheckpointer checkpointer) {... // レコードの処理理 checkpointer.checkpoint();... public class AmazonKinesisApplicationRecordProcessorFactory implements IRecordProcessorFactory { } @Override public IRecordProcessor createprocessor() { return new AmazonKinesisApplicationSampleRecordProcessor(); } IRecordProcessor および IRecordProcessorFactory の実装クラスを作成 データレコードの処理理完了了後 チェックポイントを更更新 Kinesis Client Library 内部で Kinesis Streams からレコードが取得される

Kinesis Client Library による Kinesis Streams のレコード処理理 // Java の例例 String workerid = InetAddress.getLocalHost().getCanonicalHostName() + : + UUID.randomUUID(); KinesisClientLibConfiguration kinesisclientlibconfiguration = new KinesisClientLibConfiguration(SAMPLE_APPLICATION_NAME, SAMPLE_APPLICATION_STREAM_NAME, credentialsprovider, workerid); kinesisclientlibconfiguration.withinitialpositioninstream(initialpositioninstream.latest); IRecordProcessorFactory recordprocessorfactory = new AmazonKinesisApplicationRecordProcessorFactory(); Worker worker = new Worker(recordProcessorFactory, kinesisclientlibconfiguration); try { worker.run(); ワーカー ID を決定 コンフィギュレーションを作成し レコード取得開始ポジションを指定 ワーカーインスタンスを作成し 実 行行

Kinesis Client Library の ステート管理理 Worker -A shardid check point lease Owner lease Counter... 6 3 1 Shard-0 Shard-0 TRIM _HORIZON Worker-A 2... 8 7 5 Shard-1 Worker -B Shard-1 4 Worker-B 16... Amazon DynamoDB テーブルを利利 用してアプリケーションの状態を追跡 シャードとワーカーのマッピングを調整 処理理されたレコードのチェックポイントを作成 ワーカーインスタンスの増減やシャードの分割 / 結合に追従

Amazon EMR (Spark Streaming) による Kinesis Streams からのレコード取得 // Scala の例例 import org.apache.spark.streaming.kinesis.kinesisutils val ssc = new StreamingContext(sparkConfig, batchinterval) // シャードごとに DStream を作成 val kinesisdstreams = (0 until numshards).map { i => KinesisUtils.createStream(ssc, appname, streamname, endpointurl, regionname, InitialPositionInStream.LATEST, kinesischeckpointinterval, StorageLevel.MEMORY_AND_DISK_2) } // Dstream を統合 val uniondstreams = ssc.union(kinesisdstreams) // Dstream に対する Transformation val words = uniondstreams.flatmap(bytearray => new String(byteArray).split( ))... KinesisUtils を利利 用して DStream を作成 DStream 内部で Kinesis Client Library が実 行行される

AWS Lambda による Kinesis Streams からのレコード取得 # Node.js の例例 console.log('loading function'); exports.handler = function(event, context, callback) { event.records.foreach(function(record) { // Base64 でデータをデコード var payload = new Buffer(record.kinesis.data, 'base64').tostring('ascii'); console.log('decoded payload:', payload); }); callback(null, "success"); }; パラメータの event からデータレコードの配列列を取得 Base64 でデータをデコード ( ランタイムが Node.js および Python の場合 ) AWS Lambda サービス内部でチェックポイントが管理理される レコード取得開始ポジションは LATEST もしくは TRIM_HORIZON のみ指定可能

Amazon Kinesis の運 用

シャード数の 算出例例 1 2 つのプロデューサーがそれぞれ 2 KB のレコードを秒間 500 回送信するケース 1 MB 500 PUT 1 MB 500 PUT 2 MB 送信側キャパシティ 秒間 2 MB 1,000 PUT 処理理側キャパシティ 秒間 2 MB 最 小シャード数 2

シャード数の 算出例例 2 2 つの異異なるコンシューマーアプリケーションを追加する場合 1 MB 500 PUT 2 MB 2 MB 1 MB 500 PUT 2 MB 送信側キャパシティ 秒間 2 MB 1,000 PUT 処理理側キャパシティ 秒間 6 MB 最 小シャード数 3

シャード数の 算出例例 3 2 つのプロデューサーそれぞれの送信レートが秒間 600 回に増加した場合 1.2 MB 600 PUT 2.4 MB 2.4 MB 1.2 MB 600 PUT 2.4 MB 送信側キャパシティ 秒間 2.4 MB 1,200 PUT 処理理側キャパシティ 秒間 7.2 MB 最 小シャード数 4

SplitShard API による シャードの分割 // Java の例例 SplitShardRequest splitshardrequest = new SplitShardRequest(); splitshardrequest.setstreamname(mystreamname); splitshardrequest.setshardtosplit(shard.getshardid()); BigInteger startinghashkey = new BigInteger(shard.getHashKeyRange().getStartingHashKey()); BigInteger endinghashkey = new BigInteger(shard.getHashKeyRange().getEndingHashKey()); String newstartinghashkey = startinghashkey.add(endinghashkey).divide(new BigInteger("2")).toString(); splitshardrequest.setnewstartinghashkey(newstartinghashkey); client.splitshard(splitshardrequest); シャードの分割によりストリームのキャパシティを拡 大 親シャードの HashKeyRange から 子シャードの StartingHashKey を決定 1 オペレーションで隣隣接する 2 シャードのみへ分割可能

MergeShards API による シャードの結合 // Java の例例 MergeShardsRequest mergeshardsrequest = new MergeShardsRequest(); mergeshardsrequest.setstreamname(mystreamname); mergeshardsrequest.setshardtomerge(shard1.getshardid()); mergeshardsrequest.setadjacentshardtomerge(shard2.getshardid()); client.mergeshards(mergeshardsrequest); シャードの結合によりストリームのキャパシティを縮 小 1 オペレーションで隣隣接する 2 シャードのみ結合可能

Kinesis Streams の 推奨メトリクス メトリクス説明 用途 GetRecords.IteratorAgeMilliseconds 現在の時刻と GetRecords 呼び出しの最後のレコードがストリームに書き込まれた時間の差 値が 大きい場合 シャードの分割とコンシューマーのスケールアウトを検討 ReadProvisionedThroughputExceeded スロットリングされた GetRecords 呼び出しの回数 断続的に発 生している場合 シャードの分割とコンシューマーのスケールアウトを検討 WriteProvisionedThroughputExceeded スロットリングされた PutRecord および PutRecords 呼び出しの回数 断続的に発 生している場合 シャードの分割を検討 PutRecord.Success, PutRecords.Success 成功した PutRecord 呼び出しの回数および少なくとも 1 レコードが成功した PutRecords 呼び出しの回数 ストリームへの送信失敗を検出 GetRecords.Success 成功した GetRecords 呼び出しの回数ストリームからの受信失敗を検出

Kinesis Streams の 基本ストリームレベルメトリクス メトリクス説明 用途 GetRecords.Bytes ストリームから取得したバイト数 連続して 一定値を上回った場合はシャードの分割を検討し 連続して 一定値を下回った場合はシャードの結合を検討 GetRecords.Records シャードから取得したレコード数 連続して 一定値を上回った場合はシャードの分割を検討し 連続して 一定値を下回った場合はシャードの結合を検討 IncomingBytes ストリームに正常に送信されたバイト数 連続して 一定値を上回った場合はシャードの分割を検討し 連続して 一定値を下回った場合はシャードの結合を検討 IncomingRecords ストリームに正常に送信されたレコード数 連続して 一定値を上回った場合はシャードの分割を検討し 連続して 一定値を下回った場合はシャードの結合を検討 PutRecord.Bytes PutRecord オペレーションでストリームに送信されたバイト数 連続して 一定値を上回った場合はシャードの分割を検討し 連続して 一定値を下回った場合はシャードの結合を検討

Kinesis Streams の 基本ストリームレベルメトリクス メトリクス説明 用途 PutRecords.Bytes PutRecords オペレーションでストリームに送信されたバイト数 連続して 一定値を上回った場合はシャードの分割を検討し 連続して 一定値を下回った場合はシャードの結合を検討 PutRecords.Records PutRecords オペレーションで正常に送信されたレコード数 連続して 一定値を上回った場合はシャードの分割を検討し 連続して 一定値を下回った場合はシャードの結合を検討

Kinesis Streams の 拡張シャードレベルメトリクス メトリクス説明 用途 IncomingBytes シャードに正常に送信されたバイト数 分割 / 結合対象シャードの決定 連続して 一定値を上回った場合はシャードの分割を検討し 連続して 一定値を下回った場合はシャードの結合を検討 IncomingRecords シャードに正常に送信されたレコード数 分割 / 結合対象シャードの決定 連続して 一定値を上回った場合はシャードの分割を検討し 連続して 一定値を下回った場合はシャードの結合を検討 IteratorAgeMilliseconds 現在の時刻と GetRecords 呼び出しの最後のレコードがシャードに書き込まれた時間の差 分割対象シャードの決定 値が 大きい場合 シャードの追加とコンシューマーのスケールアウトを検討 OutgoingBytes シャードから取得したバイト数 分割 / 結合対象シャードの決定 連続して 一定値を上回った場合はシャードの分割を検討し 連続して 一定値を下回った場合はシャードの結合を検討 OutgoingRecords シャードから取得したレコード数 分割 / 結合対象シャードの決定 連続して 一定値を上回った場合はシャードの分割を検討し 連続して 一定値を下回った場合はシャードの結合を検討

Kinesis Streams の 拡張シャードレベルメトリクス メトリクス説明 用途 ReadProvisionedThroughputExceeded シャードでスロットリングされた GetRecords 呼び出しの回数 分割対象シャードの決定 断続的に発 生している場合 シャードの分割とコンシューマーのスケールアウトを検討 WriteProvisionedThroughputExceeded シャードでスロットリングされた PutRecord および PutRecords 呼び出しの回数 分割対象シャードの決定 断続的に発 生している場合 シャードの分割を検討 EnableEnhancedMonitoring API にて有効化 Amazon CloudWatch の追加料料 金金が必要

Kinesis Firehose の メトリクス メトリクス説明 用途 DeliveryToElasticsearch.Success 正常にインデックスが作成されたレコード数 Amazon ES への配信失敗を検出 DeliveryToRedshift.Success 正常に実 行行された Amazon Redshift COPY コマンド数 Amazon Redshift への配信失敗を検出 DeliveryToS3.Success 正常に実 行行された Amazon S3 put コマンド数 Amazon S3 への配信失敗を検出

オンラインセミナー資料料の配置場所 AWS クラウドサービス活 用資料料集 http://aws.amazon.com/jp/aws- jp- introduction/ AWS Solutions Architect ブログ 最新の情報 セミナー中の Q&A 等が掲載されています http://aws.typepad.com/sajp/

公式 Twitter/Facebook AWS の最新情報をお届けします @awscloud_ jp 検索索 もしくは http://on.fb.me/1vr8ywm 最新技術情報 イベント情報 お役 立立ち情報 お得なキャンペーン情報などを 日々更更新しています!

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