【AWS学習記録】Kinesis FIrehoseにはbuffer sizeについてなど

本日勉強したことをメモします。

Kinesis Data StreamsとKinesis Firehoseの違い

Kinesis Data Streamsはproducer/consumer アプリケーションを書く必要があるが、Kinesis Firehoseは必要ない。

Kinesis Produver constructorについて

Kinesis Produver constructorには以下の設定がある。

RecordMaxBufferdTime

MaxConnections

RequestTImeout

Region

RecordMaxBufferedTimeが低すぎると、集計が効率悪くなりパフォーマンスが落ちる。

Kinesis FIrehoseにはbuffer sizeについて

Kinesis Firehoseのbuffer sizeが大きすぎるとLambda関数の呼び出しリミットエラーが発生する場合がある。その場合はbuffer sizeを下げる。

DynamoDBのglobal tableについて

(https://aws.amazon.com/jp/dynamodb/global-tables/)

グローバルテーブルは、Amazon DynamoDB のグローバルフットプリントをベースに構築され、大規模なグローバルアプリケーションのローカルでの高速な読み取りおよび書き込みパフォーマンスを実現する、フルマネージドのマルチリージョン、マルチアクティブのグローバルデータベースを提供します。グローバルテーブルは、選択する AWS リージョン全体にわたって DynamoDB テーブルを自動的にレプリケートします。

グローバルに分散したユーザーがいる場合はグローバルテーブルが有効。

グローバルテーブルでは世界中のAWSリージョンにマルチアクティブレプリケーションして、ユーザーがどこにいても低レイテンシーでデータを提供できる。

グローバルテーブルのトランザクション処理

DynamoDBのグローバルテーブルはトランザクション処理をひとつのリージョンでのみサポートしている。たとえば三つのリージョンでグローバルテーブルを有効にしていた場合、トランザクション処理を行っているリージョンのトランザクションが終了するまで残り二つのリージョンには反映されない。

トランザクション処理がコミットされてから残り二つのリージョンに反映される。これはグローバルテーブルの仕様。

AWS Iot Coreについて

AWS IoT CoreはIoTデバイスのデータを受け取ってS3に直接書き込める。IoT CoreからKinesisに送るより直接S3に送ったほうがコストを抑えることができる。

Redshift MLについて

Redshift MLというサービスがある。RedshiftでSQLを使って機械学習モデル作成から予測まで可能。

(https://dev.classmethod.jp/articles/aws-redshift-ml/)

Redshift MLからSageMakerにデータを送ることもできるが、S3からSageMakerに送ったほうがコストは安い。

Kinesis Firehoseはストリーミングデータを取得してS3に書き込むことができる。

Glueの組み込み機能

Glueでデータ変換を行うには、組み込みの機能がある。

https://docs.aws.amazon.com/ja_jp/glue/latest/dg/built-in-transforms.html

JSON形式のフィールドを持つCSVファイルをintやstringに変換する場合はUnboxが使える。

Redshiftのパフォーマンスが悪い時の対策

Redshiftのパフォーマンスが悪い時はVACUUMを実行してANALYZEを実行する。毎日。削除された行がクリーンアップされて、新しく挿入されたデータをソートし、meta dataを更新する。

【AWS学習記録】Kinesis FIrehoseにはbuffer sizeについてなど

本日勉強したことをメモします。

Kinesis Data StreamsとKinesis Firehoseの違い

Kinesis Data Streamsはproducer/consumer アプリケーションを書く必要があるが、Kinesis Firehoseは必要ない。

Kinesis Produver constructorについて

Kinesis Produver constructorには以下の設定がある。

RecordMaxBufferdTime

MaxConnections

RequestTImeout

Region

RecordMaxBufferedTimeが低すぎると、集計が効率悪くなりパフォーマンスが落ちる。

Kinesis FIrehoseにはbuffer sizeについて

Kinesis Firehoseのbuffer sizeが大きすぎるとLambda関数の呼び出しリミットエラーが発生する場合がある。その場合はbuffer sizeを下げる。

DynamoDBのglobal tableについて

(https://aws.amazon.com/jp/dynamodb/global-tables/)

グローバルテーブルは、Amazon DynamoDB のグローバルフットプリントをベースに構築され、大規模なグローバルアプリケーションのローカルでの高速な読み取りおよび書き込みパフォーマンスを実現する、フルマネージドのマルチリージョン、マルチアクティブのグローバルデータベースを提供します。グローバルテーブルは、選択する AWS リージョン全体にわたって DynamoDB テーブルを自動的にレプリケートします。

グローバルに分散したユーザーがいる場合はグローバルテーブルが有効。

グローバルテーブルでは世界中のAWSリージョンにマルチアクティブレプリケーションして、ユーザーがどこにいても低レイテンシーでデータを提供できる。

グローバルテーブルのトランザクション処理

DynamoDBのグローバルテーブルはトランザクション処理をひとつのリージョンでのみサポートしている。たとえば三つのリージョンでグローバルテーブルを有効にしていた場合、トランザクション処理を行っているリージョンのトランザクションが終了するまで残り二つのリージョンには反映されない。

トランザクション処理がコミットされてから残り二つのリージョンに反映される。これはグローバルテーブルの仕様。

AWS Iot Coreについて

AWS IoT CoreはIoTデバイスのデータを受け取ってS3に直接書き込める。IoT CoreからKinesisに送るより直接S3に送ったほうがコストを抑えることができる。

Redshift MLについて

Redshift MLというサービスがある。RedshiftでSQLを使って機械学習モデル作成から予測まで可能。

(https://dev.classmethod.jp/articles/aws-redshift-ml/)

Redshift MLからSageMakerにデータを送ることもできるが、S3からSageMakerに送ったほうがコストは安い。

Kinesis Firehoseはストリーミングデータを取得してS3に書き込むことができる。

Glueの組み込み機能

Glueでデータ変換を行うには、組み込みの機能がある。

https://docs.aws.amazon.com/ja_jp/glue/latest/dg/built-in-transforms.html

JSON形式のフィールドを持つCSVファイルをintやstringに変換する場合はUnboxが使える。

Redshiftのパフォーマンスが悪い時の対策

Redshiftのパフォーマンスが悪い時はVACUUMを実行してANALYZEを実行する。毎日。削除された行がクリーンアップされて、新しく挿入されたデータをソートし、meta dataを更新する。

【AWS学習記録】EMRのConsistent viewなど

本日勉強したことをメモします。

EMRのConsistent viewについて

docs.aws.amazon.com

Consistent viewはEMRバージョン3.2.1以降のオプションの機能。
EMRFSとS3を同期させて、書き込み後の読み取りに一貫性を持たせることができる。
Consistent viewを有効にすると、EMRはDynamoDBを使ってオブジェクトメタデータを保存しS3との一貫性を追跡する。

注意 :ドキュメントには以下の注釈があり、Consistent viewは現在あまり使う必要性はなさそう。

Amazon S3 は強力な書き込み後の読み取り整合性をサポートしているため、EMRFS の整合性のあるビューを使用する必要がなくなりました。

続きを読む

【AWS学習記録】Athenaのクエリパフォーマンスを上げる方法など

本日勉強したことをメモします。

Athenaのクエリパフォーマンスを上げる方法

S3に保存されているデータ容量が増えるにつれ、Athenaのクエリパフォーマンスが落ちる場合は以下のような対策が考えられる。
・頻繁に使うクエリ内容に応じてパーティションを作成する。
・S3に置いているファイルがCSV形式の場合はApache Parquet形式に変更する。

続きを読む