Amazon Redshiftを使ったデータ分析

32
Amazon Redshift を使ったデータ分析 モンスター・ラボ 島根開発拠点 山口友洋

Transcript of Amazon Redshiftを使ったデータ分析

Page 1: Amazon Redshiftを使ったデータ分析

Amazon Redshift を使ったデータ分析モンスター・ラボ 島根開発拠点 山口友洋

Page 2: Amazon Redshiftを使ったデータ分析

自己紹介

株式会社モンスター・ラボ サービス開発事業部所属

Webアプリケーション開発(Ruby, PHP,AWS)

2014年7月3日に、島根開発拠点立ち上げ(松江テルサ別館)

Page 3: Amazon Redshiftを使ったデータ分析

Amazon Redshiftとは

Amazon Web Serviceで提供されいている、大規模データ分析用途向け分散RDB

2013年6月から運用開始

Page 4: Amazon Redshiftを使ったデータ分析

Amazon Redshiftとは

億円単位で導入していたDWHが、年額100万円~で利用可能に

スタートアップなどの小規模なビジネスでもビッグデータ分析が可能に

Page 5: Amazon Redshiftを使ったデータ分析

Redshiftの料金

月額3万円程度から、スタートできる

Page 6: Amazon Redshiftを使ったデータ分析

国内導入事例

広告配信、ソーシャルゲーム

クックパッド「たべみる」

クラウド会計ソフト「freee」

Page 7: Amazon Redshiftを使ったデータ分析

2015年のアプリ・モバイルトピック

ものが繋がる(Intenet of Things)

Beacon/ロケーションサービス

ウェアラブル

Page 8: Amazon Redshiftを使ったデータ分析

データの分析と活用がさらに進む

人間の身体に関わるデータ

人間の行動に関わるデータ

自動車・家電その他から得られるデータ

Page 9: Amazon Redshiftを使ったデータ分析

分散RDBとはどういうものか

10億~100億行以上の巨大なデータを扱い高速にレスポンスを返す

1.2TBのデータサイズに対して約150秒のレスポンスタイム(hadoopの10倍)

PostgreSQL互換インターフェース

Page 10: Amazon Redshiftを使ったデータ分析

MySQL、PostgreSQLと同じ点

ODBCやJDBCから接続しSQLを実行できる

テーブルを結合(JOIN)できる

INSERT,SELECT,UPDATE,DELETEのSQL実行できる

O/Rマッパからでも使える

Page 11: Amazon Redshiftを使ったデータ分析

MySQL, PostgreSQLとの違い

複数のノードを1つのデータベースとして扱う

データが各ノードに分散配置される

ノードを増やすとクエリ性能が向上する

Page 12: Amazon Redshiftを使ったデータ分析

Redshiftを上手に使うには

ミドルウェアが持つ制限を知る

アーキテクチャーを理解して、設定・チューニングを行う

Page 13: Amazon Redshiftを使ったデータ分析

Redshiftに存在する制限

同時接続数が少ない

バイナリ型が使えない

カラムの変更ができない

Page 14: Amazon Redshiftを使ったデータ分析

Redshiftが向かないシステム

たくさんのユーザが同時接続し、多くのクエリを発行するシステム

柔軟なデータ型が求められるシステム

Page 15: Amazon Redshiftを使ったデータ分析

おさえておきたいアーキテクチャ

ノード構成

データ分散方式

Page 16: Amazon Redshiftを使ったデータ分析

ノード構成図

Page 17: Amazon Redshiftを使ったデータ分析

リーダーノードとコンピュートノード

Page 18: Amazon Redshiftを使ったデータ分析

リーダーノードとコンピュートノード

リーダーノードは接続を受付、コンピュートノードに実行プログラムを配布する

コンピュートノードはデータを保持し、プログラムを実行する

Page 19: Amazon Redshiftを使ったデータ分析

ノードスライス

Page 20: Amazon Redshiftを使ったデータ分析

ノードスライスとは

Redshiftの並列処理単位

CPUコア数=ノードスライス数

ノードスライスは独自にCPUコア、メモリ、ストレージを持つ

ノードスライス間では、データ共有できない

Page 21: Amazon Redshiftを使ったデータ分析

データ分散の方法

均等方式

分散キー方式

ALL 分散

Page 22: Amazon Redshiftを使ったデータ分析

均等分散

テーブルが結合に関与しない場合に向いている

Page 23: Amazon Redshiftを使ったデータ分析

分散キー方式

列の値が一致するとき 物理的に同じ場所に格納される

Page 24: Amazon Redshiftを使ったデータ分析

ALL分散

更新頻度・範囲が少ないデータに適している

Page 25: Amazon Redshiftを使ったデータ分析

再分散とは

異なるノードスライス間でJOINするとき、 一時テーブルに、必要な全データを転送する処理

Page 26: Amazon Redshiftを使ったデータ分析

再分散が発生するケース(低速)

結合に使うキーと分散キーが異なる場合

Page 27: Amazon Redshiftを使ったデータ分析

再分散が発生しないケース(高速)

結合に使うキーと分散キーが同じ場合

Page 28: Amazon Redshiftを使ったデータ分析

データ分散の目標

ノード間でワークロードを均等に分散させる

クエリ実行中のデータ移動を最小限にとどめる

Page 29: Amazon Redshiftを使ったデータ分析

パフォーマンス・チューニング

1. 最適な分散方式の選択

2. 最適な分散キーの選択

3. 最適なソートキーの選択

Page 30: Amazon Redshiftを使ったデータ分析

分散キーのチューニング

特定のノードに行が集中しないように、偏りのないカラムを分散キーにする(CPU)

同じノードに配置されたデータでJOINできるように、結合キーを分散キーにする(ネットワーク)

同じノードに配置されたデータで集約できるように、GROUP BYに使うカラムを分散キーにする(ネットワーク)

Page 31: Amazon Redshiftを使ったデータ分析

AWSシステム構成例

Page 32: Amazon Redshiftを使ったデータ分析

Redshiftを使ったデモ

松江市人口統計データを S3経由でRedshiftにインポートし、

ビジュアライズツールtableauで可視化する