読者です 読者をやめる 読者になる 読者になる

Amazon Redshiftとビッグデータ分析

Adways Advent Calendar 9日目の記事です。

http://blog.engineer.adways.net/entry/advent_calendar/archive


こんにちは、データ分析エンジニアの石丸です。
最近、分析業務に取り組んでいるので、エンジニアのPrefixに「データ分析」と付けてみました。

さて、前回MHAの記事を書いてからいつの間にか3年過ぎてしまいましたが、
今回は、「Redshiftとビッグデータ分析」について書きたいと思います。

ビッグデータとは?

一般的には、「大量のデータ」という意味合いで使っていることが多いでしょう。
(「大量」の定義も人それぞれでしょうが、とりあえず今回は触れません)

Redshiftとは?

Amazonのデータウェアハウス(DWH)

データウェアハウスとは?

情報分析と意思決定を行うための大規模データベース

Redshiftの特徴

  • 価格が安い
  • カラムナーデータベース(列指向)
  • 大規模データの集計処理が速い
  • 豊富な圧縮エンコード
  • 基本的なクエリ(DML)がMySQL等とほぼ同じなので簡単
  • MySQL等のようなミリ秒単位でのレスポンスは不可能

Redshiftの雑感

私のチームでは、Redshiftを2013年6月頃から利用を開始し、
現在では数TB程度のデータを扱っています。
レコード数でいうと、数百億レコードを超えるテーブルも出てきました。

では、どれぐらいのレコード数であれば高速に集計できるのか。

対象Rowが10億レコード程度ぐらいまでなら、特にそれ程意識しなくても
高速(1分かからない程度)に集計できます。

また、100億レコードを超えてくると、Sort KeyやDist Keyを真面目に考えないと
処理が厳しくなる印象です。

Redshiftの処理速度

せっかくの機会なので、少しクエリを叩いてみました。

項目
環境 ds2.xlarge 1 node
対象テーブルのレコード数  約57億レコード
Sort Key date
select count(*) from hoge_table;
→ 31sec

select hoge_col, count(*) from hoge_table group by hoge_col;
→ 4min 45sec

select hoge_col, count(*) from hoge_table where date >= '2016-12-01' group by hoge_col;
→ 5sec

50億レコードぐらいになると、Sort Keyでの絞り込みがないとかなり時間がかかってしまいますが、
MySQLなどでは、ほぼ確実に応答が返ってこないボリュームなので、Redshiftは凄いですね。
しかも簡単で安い!

ビッグデータ分析の仕事

ビッグデータの分析ってどんな仕事をするんだろう?
何か難しそう?

なんて思うかもしれませんが、基本的には、以下の手順で分析するので、
Excelで行うような処理と同じようなものです。

  1. データクレンジング
    • ノイズ(ゴミ)データの削除
    • 名寄せなどデータを取り出し易い形式に加工
  2. 単純集計
  3. クロス集計
  4. 各単相関分析
  5. 高度な統計的な分析(多変量や機械学習等)

少し難しいことも書いていますが、データ分析の仕事は、
概ね上記の手順3ぐらいまででなんとかなり、ビジネス側に活かせるように、
システムでロジックを組んだり、グラフなどで可視化したりする業務が多いです。

やや難易度の高い分析業務については長くなりそうなので、また次回ということで。


次は湯浅さんの記事です!

http://blog.engineer.adways.net/entry/advent_calendar/10