(レポート) DAT308: Yahoo!がAmazon Redshiftで毎日大量のイベントを分析する方法 #reinvent
こんにちは&こんばんは!しんや@サンフランシスコ滞在中です。
当エントリでは、AWS re:Invent 2015のセッションの1つ、Yahoo!のAmazon Redshiftを含めたデータの連携方法等について簡潔にまとめてみたいと思います。
Yahooでの分析
- Yahooにとって『分析』は何を意味するのか?
- ETLプロセスを学ぶ
- Amazon Redshiftアーキテクチャについて学ぶ
- やるべき事、やってはいけない事、Amazon Redshiftに於けるベストプラクティス等
- 分析応用編/どのように我々がユーザー保持を定義し、レポートしているか
Hadoopの稼働状況
- 14クラスタ
- 42000ノード
- 3つのデータセンター
- 500PBのデータ量
- Hiveの印象:遅い、使いづらい、共有しづらい、繰り返ししにくい。
- その他のHadoop系サービス(Apache Drill, Spark, TEZ, Cloudera IMPALA, druid)も同様
YahooでのAmazon Redshiftの活用状況
- dc1.8xlarge 21ノード
- 1日あたりのイベント数:2B(20億)
- 1日あたりのクエリ数:1200
- データ量:27TB
アーキテクチャ
- ETL処理:Hadoop(Pig) → S3(Airflow) → Amazon Redshift(Looker)というフロー。
- Welcome to Apache Pig!
- Airflow: a workflow management platform - Airbnb Engineering
- Looker | Business intelligence for the people who create data-driven companies.
- upstreamのフロー
- Hadoop: Clickstreamデータを1時間毎にバッチプロセス(Oozie)でHDFSへ
- 中間ストレージとなっている(HDFS)からカスタムアップローダ(python/boto)でS3へ
- downstreamのフロー
- S3からAmazon Redshiftへのデータフロー。処理及び再分割が行われている。
- Airflowの活用。実行中及び完了したタスクの可視化。
- スキーマ
- 夜間のETL
- 全ての日次集計及びお掃除/VACUUMコマンドを実行
やるべき事&べからず集
- 【やる】データのサマリー化
- 【やる】最適なソートキーを指定
- 【やる】VACUUM処理は夜間に実施
- 【やる】可能な限り『JOIN』を避ける(そして結合しなければいけない場合の緩和戦略について学ぶ)
- JOIN時の緩和:レコードが同じ場所に配置されると、結合が最も早くなる。
- 【やる】自動化
- 【やってはいけない】クラスタのデータ領域を埋めてしまう
- 【やってはいけない】デフォルトキューでETLを実施(WLMを上手く使おう)
- 【やってはいけない】恒久的なテーブルに対し、CREATE TABLE AS構文を使う
まとめ
Yahoo!におけるAmazon Redshiftの活用法に関するまとめでした。Amazon Redshiftのべき&べからず集についても参考になりましたが、個人的にはAirflowやLookerと言った関連ツールの内容が気になりました。時間のある時に調べてみようと思います。こちらからは以上です。