リクルートライフスタイルの
データを支える技術
〜TreasureDataとAWSと私〜
Treasure Data Tech Talk
03/30 2016
山田 雄
ネットビジネス本部
データ基盤チーム
1.自己紹介
2.リクルートライフスタイルのデータ基盤
3.TreasureDataを選んだ理由
4.Sparkを使用したストリーム基盤
5.これから
本日のアジェンダ
1.自己紹介
2.リクルートライフスタイルのデータ基盤
3.TreasureDataを選んだ理由
4.Sparkを使用したストリーム基盤
5.これから
本日のアジェンダ
■山田 雄(ヤマダ ユウ)
株式会社 リクルートライフスタイル
ネットビジネス本部
データ基盤T
Twitter:@nii_yan
Blog:イクジニアブログ
・以前はフリーランスエンジニア
縁があってリクルートライフスタイルにお世話になることになった。
ビックデータ、Ruby、ビールが好き。
自己紹介
会社紹介
Engineering
for data
Business
with data
技術でビジネスを
ドライブする
Stable Infrastructure Continual Innovation+
リクルートライフスタイルにおけるエンジニアの役割
1.自己紹介
2.リクルートライフスタイルのデータ基盤
3.TreasureDataを選んだ理由
4.Sparkを使用したストリーム基盤
5.これから
本日のアジェンダ
約300人の分析者
データサイエンティスト
IBM Netezza
Amazon Redshift
TreasureData
ETLフレームワーク
リクルートライフスタイルのデータ基盤
ETLフレームワーク
フレームワークで出来ること
データの活用方法
1.自己紹介
2.リクルートライフスタイルのデータ基盤
3.TreasureDataを選んだ理由
4.Sparkを使用したストリーム基盤
5.これから
本日のアジェンダ
TreasureData以前の環境
スケールアウトしたいけど・・・
アップデートつらたん・・・
Hiveじゃ遅い・・・
それ全部解決します
スケールアウト(オンプレの場合)
サーバ何買えばいいですか?
ラックが空いてない・・・
ディスク容量が他のサーバと合わない・・・
スケールアウト(オンプレの場合)
サーバ何買えばいいですか?
ラックが空いてない・・・
ディスク容量が他のサーバと合わない・・・
辛い・・・
楽しい
スケールアウト(Treasureの場合)
アップデート(オンプレの場合)
もう1つ検証用クラスタ用意する?
データの同期どうしよう?distcpしてもmetaデータは・・・
アップデート後のselect結果が違う・・・ToT
アップデート(オンプレの場合)
もう1つ検証用クラスタ用意する?
データの同期どうしよう?distcpしてもmetaデータは・・・
アップデート後のselect結果が違う・・・ToT
辛い・・・
楽しい
アップデート(オンプレの場合)
http://www.slideshare.net/yuyamada777/cdh45-update
アップデート(Treasureの場合)
検証手伝いますよー!
データの同期は必要ないですよー!
ダウンタイムないですよー!
Hiveじゃ遅い(オンプレの場合)
Tezにしましょう
パーケットファイルにしましょう
10%早くなりました!! ToT
Hiveじゃ遅い(オンプレの場合)
Tezにしましょう
パーケットファイルにしましょう
10%早くなりました!! ToT
辛い・・・
楽しい
Hiveじゃ遅い(Treasureの場合)
About Presto
• in memoryのクエリエンジンでとにかく早い
• クエリによってはHiveの100倍とか
• with句やwindow関数使えて便利
• ANSI基準のSQL書けるがお作法がある
• count(distinct)ダメ絶対
• order_byダメ絶対
• joinは大きいテーブルを最初に
Prestoを自力で運用しようとすると・・・
• アップデートが早い
• coordinatorがSPOF
• 1つのクエリでクラスタ全体を殺せる
• アップデートにより突如クエリが動かなくなる
• Bug?デグレ?
• とあるアップデートでMySQLのDB見えなく
なったことあり
なかなか辛い・・・
Treasureへのデータ移行方法
Seque
nceFile
Seque
nceFile
TSV
distcp HIVEで変換
Treasureに今後期待すること
• UDF
• HBase
• SqoopなどのHadoopエコシステム
• PrestoでHive以外のデータソースへの連携
守りから攻めへ
• Treasureによって守り(運用工数減)は固めら
れた
• 次は攻め(開発)だ!
1.自己紹介
2.リクルートライフスタイルのデータ基盤
3.TreasureDataを選んだ理由
4.Sparkを使用したストリーム基盤
5.これから
本日のアジェンダ
荒野で生き抜くために
DynamoDB Lambda
API
Gateway
Kafka
on-premises
Configuration
Management
Monitoring
Grafana
Grand Design
DynamoDB Lambda
API
Gateway
on-premises
Configuration
Management
Monitoring
Grafana
Kafka
データハブ基盤
Lambda
API
Gateway
on-premises
Configuration
Management
Monitoring
Grafana
Kafka DynamoDB
ストリーム処理基盤
Kafka
on-premises
Configuration
Management
Monitoring
Grafana
DynamoDB Lambda
API
Gateway
データ提供部分(API)
1.自己紹介
2.リクルートライフスタイルのデータ基盤
3.TreasureDataを選んだ理由
4.Sparkを使用したストリーム基盤
5.これから
本日のアジェンダ
Kafkaを共通データハブとして活用
Kafka Redshift
Kafka,Redshift間のデータ連携に
はcamus,blueshiftを使用
td-ios-sdkを利用したデータ取得
DynamoDB Lambda
API
Gateway
Kafka
ラムダアーキテクチャに向けて
Redshift
1.自己紹介
2.リクルートライフスタイルのデータ基盤
3.TreasureDataを選んだ理由
4.Sparkを使用したストリーム基盤
5.これから
6.番外編
本日のアジェンダ
OSS
WE ARE HIRING!
ご清聴ありがとうございました

リクルートライフスタイルのデータを支える技術

Editor's Notes

  • #6 1年前のデータなので少し古いです じゃらんやホットペッパーなどのサービスを持っていて、そこそこ売り上げあって3000人くらい従業員いて、かわいいお姉さんのいる会社です。 弊社のサービス使ったことある方? 我々のミッションは赤枠で囲われたことです。 これを叶えるためのデータ基盤を構築しています。
  • #7 弊社の特徴として、エンジニアがビジネスのとても近くにいるというのがあります。 図のようにエンジニアの役割は技術によってビジネスをドライブさせることになります。 エンジニアからビジネス側へ提案することが多くある。 あとは、毎年エンジニアがビジネスプランを発表するコンテストもありますし、技術とビジネス両方学べる良い環境だと思います。 リクルートライフスタイルとエンジニアが結びつかない人も多数いるとは思いますが、技術でビジネスをドライブしてる実績が認められ最近はエンジニアを増やすことに注力しています。
  • #8  ----- 会議メモ (16/03/24 19:38) ----- 弊社のデータ基盤を紹介します
  • #9 こちらが、現在の共通分析基盤となります。 RawデータをTreasureに入れている サイカタのデータはでかすぎて入らないのでHadoopに入れていた。 全てのデータをredshiftに入れるとコスト的に辛い Tresureのデータは現在2000億件以上。毎月100億件増えている
  • #10 ETLフレームワークを独自実装
  • #11 様々な部署からの要望に応えられるよう構築
  • #12 OneToOneメールの配信 サイト表示順の最適化 検索結果の最適化 BIツールでのvisualization、営業レポート
  • #14 オンプレのMapRで運用していた
  • #15 EMRも考えたが、コスト的にTREASUREだった
  • #28  Zip,シーケンスファイルなので、TDにcopyできず オンプレのデータをdistcpでS3にコピー EMRでファイルフォーマット修正 TDへbulkimport PrestoでHive以外のデータソースへの連携
  • #29  Hadoopに対する知見は付かないので、Treasureも一つの選択肢として、オンプレ、EMRなどとも比較して選ぶと良いと思います。
  • #30  トレジャーで防御を固めつつ、攻めをする準備が整った KinesisじゃなくてkafkaやEMRじゃなくてEC2は色々知れるために。基礎を知るために。  荒野に投げ出されても大丈夫なように
  • #32 突然の荒野なのですが、弊社でストリーム基盤を構築するにあたっての選定基準として、荒野でも生き抜ける技術力というのがありました。 弊社ではAWSを使用しています。 AWSと言うとkinesis使えばすぐストリーム処理出来るとは思うのですが、先ほどオンプレとの比較でもあったようにありものを使いすぎると楽なのですが、ですがその環境でないと生き延びれなくなってしまいます。 なので、あえてkinesisではなくてkafkaを選択しました。 また、Sparkの環境はEMRじゃなくてEC2を選択しています。
  • #33 Waterプロジェクトで実現したいことをグランドデザインとして検討しました 作らない技術 構成管理にはANSIBLE SparkなどのmonitoringにはGrafana InfluxDB
  • #34 まず、データハブ基盤です。 オンプレミス環境にあるデータはFluentdを介してAWSクラウド上に送られます。 Fluentdから送られたデータはKafkaに保存され、ここがデータハブとして機能しています。 Kafka 0.8 SSL対応してないため、publisherとaggrigator用意 今後は0.9を使ってsslで通信
  • #35 次にKafkaに保存されたデータを、Spark Streamingが取り出し、データを加工・集計します。 ここがストリーム処理基盤として機能しています。
  • #36 Spark-Streamingが加工・集計したデータは、DynamoDBに保存され、Key-Valueの形で保存されます。 エンドユーザーとなるデータ利用者は、APIゲートウェイ・Lambdaを介して取得することで リクエストに対するキャパシティを担保した状態でデータを提供することが可能となります。
  • #39 Sdk使用してiOSのデータをほぼリアルタイムに取得しています。
  • #40  Iphoneのログはsdk使ってリアルタイムで取れてきている。 データハブをkafkaに集中させる ----- 会議メモ (16/03/23 15:00) ----- スライドを時系列に分ける。 リアルタイムと、バッチを分けれるように ユーザが自由にアドホックとリアルを選べる環境に
  • #43 弊社のエンジニアのコンセプト