Amazon Redshiftを使ったデータ分析

Post on 17-Jul-2015

448 views 2 download

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

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

自己紹介

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

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

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

Amazon Redshiftとは

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

2013年6月から運用開始

Amazon Redshiftとは

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

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

Redshiftの料金

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

国内導入事例

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

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

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

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

ものが繋がる(Intenet of Things)

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

ウェアラブル

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

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

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

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

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

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

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

PostgreSQL互換インターフェース

MySQL、PostgreSQLと同じ点

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

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

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

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

MySQL, PostgreSQLとの違い

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

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

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

Redshiftを上手に使うには

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

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

Redshiftに存在する制限

同時接続数が少ない

バイナリ型が使えない

カラムの変更ができない

Redshiftが向かないシステム

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

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

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

ノード構成

データ分散方式

ノード構成図

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

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

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

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

ノードスライス

ノードスライスとは

Redshiftの並列処理単位

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

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

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

データ分散の方法

均等方式

分散キー方式

ALL 分散

均等分散

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

分散キー方式

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

ALL分散

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

再分散とは

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

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

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

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

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

データ分散の目標

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

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

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

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

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

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

分散キーのチューニング

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

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

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

AWSシステム構成例

Redshiftを使ったデモ

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

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