Amazon Redshiftを使ったデータ分析
-
Upload
tomohiro-yamaguchi -
Category
Data & Analytics
-
view
448 -
download
2
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で可視化する