SlideShare ist ein Scribd-Unternehmen logo
1 von 44
Downloaden Sie, um offline zu lesen
Copyright © BrainPad Inc. All Rights Reserved.
Sparkパフォーマンス検証
2015年5月15日
Copyright © BrainPad Inc. All Rights Reserved.
1. Spark検証環境
2
Copyright © BrainPad Inc. All Rights Reserved.
Spark 1.2.0
YARN 2.5.0
3
• クラスタマネージャ
– YARN
– Sparkはyarn-clusterモードで起動
• データストレージ
– HDFS
• OS
– Centos.6.6
Spark検証環境
HDFS 2.5.0
Centos6.6 * 13台
※回線は、検証に使ったインフラの都合上1Gbps。
Copyright © BrainPad Inc. All Rights Reserved.
 1 Resource Manager
– 16コア
– 16GB
 12 Node Manager
– 8コア
– 8GB
– HDFSのData Nodeと同居
4
YARNクラスタ
Copyright © BrainPad Inc. All Rights Reserved.
 1 Name Node
– 16コア
– 16GB
 12 Data Node
– 8コア
– 8GB
– YARNのNode Managerと同居
5
HDFSクラスタ
Copyright © BrainPad Inc. All Rights Reserved.
2. Spark検証
6
Copyright © BrainPad Inc. All Rights Reserved.
アクセスログからPVを日別に集計する時間を計測する。
PV集計は、アクセスログに含まれる日時データから日付を特定し、日付ごとのログ
件数を累計する処理。
SparkアプリケーションはScalaで実装。
7
検証内容
HDFS Spark
1. HDFSからログデータをロード 3. 標準出力へ結果を書き込み
2. Sparkで日別にPV集計処理
stdout
Copyright © BrainPad Inc. All Rights Reserved.
 データフォーマット
– csv
– カラム数
• 14
 データサイズ
– 1行あたりログサイズ
• 約370B
– 1日あたりログサイズ
• 約1GB
– 日数
• 90日
– 全体のログサイズ
• 約90GB
8
検証データ(アクセスログ)
Copyright © BrainPad Inc. All Rights Reserved.
 以下のパラメータを変動させ、それぞれの結果を取る。
1. executor-memory (512m, 1g, 2g)
• 1executorに割り当てるメモリ
2. num-executors (13, 26, 39, 52)
• Spark全体で起動するexecutorの数
3. executor-cores (1,2,3,4)
• 1executorに割り当てるコア数
4. 入力ログデータサイズ (1g, 30g, 60g, 90g)
• 入力するデータの合計サイズ
9
検証項目
Copyright © BrainPad Inc. All Rights Reserved.
3. Spark検証結果
10
Copyright © BrainPad Inc. All Rights Reserved. 11
以下パラメータは固定。
• num-executors = 13
• executor-cores = 1
• データサイズ = 90g
executor-memory
20000
30000
40000
50000
60000
70000
80000
90000
100000
512m 1g 2g 4g
実行時間 (ms)
Copyright © BrainPad Inc. All Rights Reserved. 12
以下パラメータは固定。
• executor-memory = 1g
• executor-cores = 1
• データサイズ = 90g
num-executors
20000
30000
40000
50000
60000
70000
80000
90000
100000
13 26 39 52
実行時間 (ms)
Copyright © BrainPad Inc. All Rights Reserved. 13
以下パラメータは固定。
• executor-memory = 1g
• num-executors = 13
• データサイズ = 90g
executor-cores
20000
30000
40000
50000
60000
70000
80000
90000
100000
1 2 3 4
実行時間 (ms)
Copyright © BrainPad Inc. All Rights Reserved. 14
以下パラメータは固定。
• executor-memory = 1g
• num-executors = 13
• executor-cores = 1
入力ログデータサイズ
0
10000
20000
30000
40000
50000
60000
70000
80000
90000
100000
1g 30g 60g 90g
実行時間 (ms)
Copyright © BrainPad Inc. All Rights Reserved.
 並列数は、executorの数を増やすよりもexecutorが複数のコアを使えるように
増やしたほうが改善の幅が大きい。
– 1 taskあたりのShuffle Write Timeが、コア数増加したときのほうが3倍以上速かっ
た。Executorの数が増えるとそれだけプロセス/ノードをまたぐshuffleが増えるか
ら?
• executor数を52、コア数を1にした場合のShuffle Write Time -> 142,596ms
• executor数を13、コア数を13にした場合のShuffle Write Time -> 47,517ms
 executor-memoryの増加は結果に悪影響を与えている。
– 今回のケースでは各executorが扱うデータサイズが512mに収まっており、ディスク
へのスワップも発生していないため、メモリ増加は効果がなかった。
 3ヶ月分のデータを30秒程度でさばけるのは、体感的にかなり速く感じる。
15
考察
Copyright © BrainPad Inc. All Rights Reserved.
4. Spark Streaming検証
16
Copyright © BrainPad Inc. All Rights Reserved.
アクセスログをKafkaからSpark Streamingに流して、日時別のPVを計算する。10
分程度Kafkaからログデータをストリーミングして、各ジョブの平均実行時間を見
る。
PV集計はバッチ処理と同様、アクセスログに含まれる日時データからそのログの日
時を特定し、日時別のログ件数を累計する処理。
17
検証内容
Kafka
Spark
Streaming
1. Kafkaからアクセスログを流す 3. 標準出力へ結果を随時書き込み
2. Spark Streamingでn秒ごとに、時間別PV集計処理
(updateStateByKeyを使用)
stdout
Copyright © BrainPad Inc. All Rights Reserved.
 Spark検証と同じログデータを使う。
– ログデータを10分間、一定のQPSでKafkaから流す。
18
検証データ(アクセスログ)
Copyright © BrainPad Inc. All Rights Reserved.
 以下のパラメータを変動させ、それぞれの結果を取る。
1. executor-memory (512m, 1g, 2g)
2. num-executors (13, 26, 39, 52)
3. executor-cores (1,2,3,4)
4. インターバル (5秒,15秒,30秒,60秒)
• Spark Streamingの、マイクロバッチインターバル
5. QPS (1500, 2000, 2500, 7000)
• Kafkaが1秒間に流すデータの件数
19
検証項目
Copyright © BrainPad Inc. All Rights Reserved.
 クラスタ構成
– 5 Broker
• 4コア
• 16GB
– 3 Zookeeper node
• 4コア
• 16GB
 アクセスログを流すトピック
– パーティション数1
– レプリケーション数1
 Spark Streaming側のレシーバ数
– 1で固定
20
Kafka
Copyright © BrainPad Inc. All Rights Reserved.
5. Spark Streaming検証結果
21
Copyright © BrainPad Inc. All Rights Reserved. 22
以下パラメータは固定。
• num-executors = 13
• executor-cores = 1
• インターバル = 5秒
• QPS = 1500
executor-memory
200
250
300
350
400
450
500
550
600
650
700
512m 1g 2g 4g
実行時間 (ms)
Copyright © BrainPad Inc. All Rights Reserved. 23
num-executors
200
250
300
350
400
450
500
550
600
650
700
13 26 39 52
実行時間 (ms)
以下パラメータは固定。
• executor-memory = 1g
• executor-cores = 1
• インターバル = 5秒
• QPS = 1500
Copyright © BrainPad Inc. All Rights Reserved. 24
executor-cores
200
250
300
350
400
450
500
550
600
650
700
1 2 3 4
実行時間 (ms)
以下パラメータは固定。
• executor-memory = 1g
• num-executors = 13
• インターバル = 5秒
• QPS = 1500
Copyright © BrainPad Inc. All Rights Reserved. 25
インターバル
0
10
20
30
40
50
60
0
200
400
600
800
1000
1200
1400
5 15 30 60
1秒あたりの実行時間(ms)
実行時間(ms)
実行時間 (ms) 1秒あたりの実行時間 (ms)
以下パラメータは固定。
• executor-memory = 1g
• num-executors = 13
• executor-cores = 1
• QPS = 1500
Copyright © BrainPad Inc. All Rights Reserved. 26
QPS
200
250
300
350
400
450
500
550
600
650
700
1500 2000 2500 7000
実行時間 (ms)
以下パラメータは固定。
• executor-memory = 1g
• num-executors = 13
• executore-cores = 1
• インターバル = 5秒
Copyright © BrainPad Inc. All Rights Reserved.
 並列数の増加は結果に悪影響を与えている。
– タスクごとの実行時間は、並列数を増やすと増加していた。
• Shuffle Readのサイズも増えており、並列数が増えることにより無駄なShuffleが発生してい
たのかもしれない。
– タスクが複雑になったり、マイクロバッチの処理するデータサイズが増えれば並列数の
効果が効いてくるんでは?(未検証)
 メモリの増加は結果に影響を与えていない。
– Sparkの検証と同じく、512mに収まっているため。
 インターバルが長いほうが、より効率的に処理出来ている。
– バッチ実行回数が減るため。アプリケーションの要求とメモリの制約の中で、できるだ
け長いインターバルを設定するのがベターか。
 今回の実装だと、7000QPS(2500kb / sec)程度ならさばける。
– 5秒インターバルなら単純計算で、22MB / secまでさばける。
• (7000qps * 370b) * (5000ms / 550ms) / 1024 / 1024 ≒ 22MB
27
考察
Copyright © BrainPad Inc. All Rights Reserved.
6. Spark Streamingデモアプリ検証
28
Copyright © BrainPad Inc. All Rights Reserved.
Spark, MLlib, Spark streamingを使ってコンバージョン予測デモアプリを作成し、
そのパフォーマンスを測定する。
デモアプリは、以下2つのコンポーネントから成る。
1. Spark Streamingでの特徴量作成〜モデル取得〜予測
2. Spark & MLlibでのモデル構築
29
デモアプリ
Copyright © BrainPad Inc. All Rights Reserved. 30
デモアプリイメージ図
Kafka Spark Streaming
HDFS
Spark
特徴量
特徴量 モデル
モデル 予測結果
アクセスログ
1. アクセスログから特徴量を抽出
2. モデルをロードして、アクセスしたユーザーの
コンバージョン予測
1. 特徴量からモデルを作成
2. モデルをHDFSに保存
Copyright © BrainPad Inc. All Rights Reserved.
1. Spark Streamingでの特徴量作成〜モデル取得〜予測
– 処理内容
• データは先の検証と同じくアクセスログを使用
• 特徴量はCSVテキスト形式でユーザーID・累計訪問回数・累計ページビュー数・コンバージョ
ンフラグを出力(10秒ごと)
• HDFSからモデルを取得し、ユーザーIDごとに特徴量を作成して予測を実施
– すなわち、ユーザーごとのコンバージョン予測を行っている。
– 今回の検証ではレイテンシに焦点を当てているため、予測精度については特に突き詰めていない。
– 検証項目
• QPS (1000, 2000, 3000)
2. バッチでの学習
– 処理内容
• ストリーミング処理で出力されたCSVデータを取得
• CSVデータから特徴ベクトルを作成し、RandomForestで学習
• 作成されたモデルをHDFSに保存
– 検証項目
• 特徴量の行数 (250万, 500万, 1000万)
• 特徴量の列数 (100, 200, 300)
31
検証内容
Copyright © BrainPad Inc. All Rights Reserved.
 Kafka
– Broker数 5
– パーティション数 5
 Spark
– num-executors 13
– executor-cores 4
– executor-memory 6GB
– driver-memory 6GB
 Spark Streaming
– num-executors 5
– executor-cores 4
– Executor-memory 512m
– Driver-memory 512m
– Kafkaレシーバ数 5
– インターバル 10秒
32
動作環境
Copyright © BrainPad Inc. All Rights Reserved.
7. Spark Streamingデモアプリ検証結果
33
Copyright © BrainPad Inc. All Rights Reserved. 34
ストリーミングでの特徴量作成 – モデル取得 – 予測
0
200
400
600
800
1000
1200
1400
0 1000 2000 3000 4000 5000 6000 7000
QPS
実行時間 (ms)
各ジョブの平均実行時間を計測。
Copyright © BrainPad Inc. All Rights Reserved. 35
バッチでのモデル構築 (入力データ行数を変動)
0
10
20
30
40
50
60
0 2 4 6 8 10 12 14
特徴量行数(100万行)
実行時間 (秒)
Copyright © BrainPad Inc. All Rights Reserved. 36
バッチでのモデル構築 (特徴量の数を変動)
0
20
40
60
80
100
120
140
160
180
200
0 100 200 300 400 500 600
特徴量の数
実行時間 (秒)
Copyright © BrainPad Inc. All Rights Reserved.
 ストリーミング
– HDFSへの書き込みやモデルを使った予測など、ある程度複雑な処理をしても
QPS4000程度なら1秒以内にさばける。
 バッチ(データサイズの増加)
– ストリーミング側が細かいファイルを多く吐き出すので、どこかでマージするか
HBaseを使うなどしたほうがよさそう。
– 今回のように1行あたりのデータが小さいと、データ容量よりはファイル数のほうが影
響あり?
 バッチ(特徴量数の増加)
– 計測できた範囲では、特徴量数の増加に比例して処理時間が伸びる。
– 特徴量数が大きくなるとOOMが発生する。
• メモリに依存しているのでしょうがないというのはある。
– 今回はExperimentalな実装であるRandomForestを使っていたため、アルゴリズムに
よって結果は変わりそう。
37
考察
Copyright © BrainPad Inc. All Rights Reserved.
 検証内容
– デモアプリの特徴量や予測結果書き込み先をHDFSからHBaseに変えてみる。
– 細かいパフォーマンスというよりは、SparkからHBaseを使う例が欲しかった。
• 実際はHDFSではなくHBaseなどのヘビーライトに耐えられるストレージを使うことになると
思われるので。
 HBase (0.98.6)
– クラスタ
• Master1台(Name Nodeと同居)
• Regsion Server12台(Data Nodeと同居)
– ヒープサイズ 2GB
– テーブル
• 特徴量テーブル
– ストリーミングから特徴量データを書き込むテーブル。
– 1 Column Familyに、各特徴量ごとにカラムを分けて書き込み
– RowKeyは、{バケットID}-{リバースタイムスタンプ}-{ユーザーID}
– Regsion数13に事前分割
• コンバージョン予測結果テーブル
– ストリーミングからユーザーごとのコンバージョン予測結果を書き込むテーブル。
– RowkeyはユーザーID
– カラムはコンバージョンフラグの1つのみ。
– Region数は13に事前分割
38
HBaseを使った追加検証
Copyright © BrainPad Inc. All Rights Reserved. 39
ストリーミングでの特徴量作成 – モデル取得 – 予測
0
200
400
600
800
1000
1200
1400
1500 3000 6000
QPS
HBase HDFS
各ジョブの平均実行時間を計測。
Copyright © BrainPad Inc. All Rights Reserved. 40
バッチでのモデル構築 (入力データ行数を変動)
0
10
20
30
40
50
60
0 2 4 6 8 10 12 14
特徴量行数(100万行)
HBase HDFS
Copyright © BrainPad Inc. All Rights Reserved.
 データ量が少ないうちは差が出ないが、データ量が増えるにしたがってHBaseを
使ったほうが書き込みケース(ストリーミング)、読み込みケース(バッチ)と
もに、処理時間の伸びが鈍い。
– HBaseは実際にデータをHDFSに書き込むまでラグがある(MemStoreに貯める)の
で、直にHDFSに書き込むのに比べて速いのだろう。
– 読み込みは、HDFS経由の場合は大量の小さなファイルを読み込むことになるが(スト
リーミング側が数秒ごとに出力するため)、HBaseはそうはならないのでHDFSに比べ
て良い結果がでているのだろう。
 MLlibは内部で(RDDの)collectをコールするなど、メモリを圧迫する処理を
複数回行うため、以下の対応が必要だった。
– trainする前にpersistする。
– driverのメモリサイズを大きくする。
41
考察
Copyright © BrainPad Inc. All Rights Reserved.
8. まとめ
42
Copyright © BrainPad Inc. All Rights Reserved.
 並列数のチューニングがパフォーマンスを決定している。
– 1 executorに複数コアを割り当てたほうが高速化する。
– 一方、ストリーミングのケースのように、並列数を増やすうことで処理が悪化するケー
スもある。(メモリについても同じ)
– 処理の内容やデータサイズに合わせて、適切なポイントを選ぶ必要がある。
 パフォーマンスを出すには、書き方の工夫が必要。
– このスライドには現れていないが、(RDDオブジェクトの)repartitionやpersistな
ど、適宜タスク数を調整したりキャッシュを入れたりする必要がある。
 MLlibは内部でcollectなどメモリを圧迫する処理を複数回行うため、以下の対応
が必要。
– trainする前にpersistする。
– driverのメモリサイズを調整する。
 管理UIが使いやすく、チューニングをするのに非常に助かる。
– どのタスクがどのくらい時間をとっているか、など。
43
まとめ
Copyright © BrainPad Inc. All Rights Reserved.
株式会社ブレインパッド
〒108-0071 東京都港区白金台3-2-10 白金台ビル3F
TEL:03-6721-7001
FAX:03-6721-7010
info@brainpad.co.jp
Copyright © BrainPad Inc. All Rights Reserved.
www.brainpad.co.jp

Weitere ähnliche Inhalte

Was ist angesagt?

20190314 PGStrom Arrow_Fdw
20190314 PGStrom Arrow_Fdw20190314 PGStrom Arrow_Fdw
20190314 PGStrom Arrow_FdwKohei KaiGai
 
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとは
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとはdb tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとは
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとはKoji Shinkubo
 
Hive on Spark の設計指針を読んでみた
Hive on Spark の設計指針を読んでみたHive on Spark の設計指針を読んでみた
Hive on Spark の設計指針を読んでみたRecruit Technologies
 
ゼロから始めるSparkSQL徹底活用!
ゼロから始めるSparkSQL徹底活用!ゼロから始めるSparkSQL徹底活用!
ゼロから始めるSparkSQL徹底活用!Nagato Kasaki
 
Apache Sparkについて
Apache SparkについてApache Sparkについて
Apache SparkについてBrainPad Inc.
 
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)Noritaka Sekiyama
 
Amazon Elastic MapReduceやSparkを中心とした社内の分析環境事例とTips
Amazon Elastic MapReduceやSparkを中心とした社内の分析環境事例とTipsAmazon Elastic MapReduceやSparkを中心とした社内の分析環境事例とTips
Amazon Elastic MapReduceやSparkを中心とした社内の分析環境事例とTipsyuichi_komatsu
 
Spark 2.0 What's Next (Hadoop / Spark Conference Japan 2016 キーノート講演資料)
Spark 2.0 What's Next (Hadoop / Spark Conference Japan 2016 キーノート講演資料)Spark 2.0 What's Next (Hadoop / Spark Conference Japan 2016 キーノート講演資料)
Spark 2.0 What's Next (Hadoop / Spark Conference Japan 2016 キーノート講演資料)Hadoop / Spark Conference Japan
 
SparkやBigQueryなどを用いた モバイルゲーム分析環境
SparkやBigQueryなどを用いたモバイルゲーム分析環境SparkやBigQueryなどを用いたモバイルゲーム分析環境
SparkやBigQueryなどを用いた モバイルゲーム分析環境yuichi_komatsu
 
Is spark streaming based on reactive streams?
Is spark streaming based on reactive streams?Is spark streaming based on reactive streams?
Is spark streaming based on reactive streams?chibochibo
 
Deep Dive into Spark SQL with Advanced Performance Tuning
Deep Dive into Spark SQL with Advanced Performance TuningDeep Dive into Spark SQL with Advanced Performance Tuning
Deep Dive into Spark SQL with Advanced Performance TuningTakuya UESHIN
 
(LT)Spark and Cassandra
(LT)Spark and Cassandra(LT)Spark and Cassandra
(LT)Spark and Cassandradatastaxjp
 
20111215_第1回EMR勉強会発表資料
20111215_第1回EMR勉強会発表資料20111215_第1回EMR勉強会発表資料
20111215_第1回EMR勉強会発表資料Kotaro Tsukui
 
2016-02-08 Spark MLlib Now and Beyond@Spark Conference Japan 2016
2016-02-08 Spark MLlib Now and Beyond@Spark Conference Japan 20162016-02-08 Spark MLlib Now and Beyond@Spark Conference Japan 2016
2016-02-08 Spark MLlib Now and Beyond@Spark Conference Japan 2016Yu Ishikawa
 
Spark Streamingを使ってみた ~Twitterリアルタイムトレンドランキング~
Spark Streamingを使ってみた ~Twitterリアルタイムトレンドランキング~Spark Streamingを使ってみた ~Twitterリアルタイムトレンドランキング~
Spark Streamingを使ってみた ~Twitterリアルタイムトレンドランキング~sugiyama koki
 
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)Hadoop / Spark Conference Japan
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームKouhei Sutou
 
CDHの歴史とCDH5新機能概要 #at_tokuben
CDHの歴史とCDH5新機能概要 #at_tokubenCDHの歴史とCDH5新機能概要 #at_tokuben
CDHの歴史とCDH5新機能概要 #at_tokubenCloudera Japan
 
A Benchmark Test on Presto, Spark Sql and Hive on Tez
A Benchmark Test on Presto, Spark Sql and Hive on TezA Benchmark Test on Presto, Spark Sql and Hive on Tez
A Benchmark Test on Presto, Spark Sql and Hive on TezGw Liu
 

Was ist angesagt? (20)

20190314 PGStrom Arrow_Fdw
20190314 PGStrom Arrow_Fdw20190314 PGStrom Arrow_Fdw
20190314 PGStrom Arrow_Fdw
 
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとは
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとはdb tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとは
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとは
 
Hive on Spark の設計指針を読んでみた
Hive on Spark の設計指針を読んでみたHive on Spark の設計指針を読んでみた
Hive on Spark の設計指針を読んでみた
 
ゼロから始めるSparkSQL徹底活用!
ゼロから始めるSparkSQL徹底活用!ゼロから始めるSparkSQL徹底活用!
ゼロから始めるSparkSQL徹底活用!
 
Apache Sparkについて
Apache SparkについてApache Sparkについて
Apache Sparkについて
 
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
 
Amazon Elastic MapReduceやSparkを中心とした社内の分析環境事例とTips
Amazon Elastic MapReduceやSparkを中心とした社内の分析環境事例とTipsAmazon Elastic MapReduceやSparkを中心とした社内の分析環境事例とTips
Amazon Elastic MapReduceやSparkを中心とした社内の分析環境事例とTips
 
Spark 2.0 What's Next (Hadoop / Spark Conference Japan 2016 キーノート講演資料)
Spark 2.0 What's Next (Hadoop / Spark Conference Japan 2016 キーノート講演資料)Spark 2.0 What's Next (Hadoop / Spark Conference Japan 2016 キーノート講演資料)
Spark 2.0 What's Next (Hadoop / Spark Conference Japan 2016 キーノート講演資料)
 
SparkやBigQueryなどを用いた モバイルゲーム分析環境
SparkやBigQueryなどを用いたモバイルゲーム分析環境SparkやBigQueryなどを用いたモバイルゲーム分析環境
SparkやBigQueryなどを用いた モバイルゲーム分析環境
 
Is spark streaming based on reactive streams?
Is spark streaming based on reactive streams?Is spark streaming based on reactive streams?
Is spark streaming based on reactive streams?
 
Deep Dive into Spark SQL with Advanced Performance Tuning
Deep Dive into Spark SQL with Advanced Performance TuningDeep Dive into Spark SQL with Advanced Performance Tuning
Deep Dive into Spark SQL with Advanced Performance Tuning
 
(LT)Spark and Cassandra
(LT)Spark and Cassandra(LT)Spark and Cassandra
(LT)Spark and Cassandra
 
20111215_第1回EMR勉強会発表資料
20111215_第1回EMR勉強会発表資料20111215_第1回EMR勉強会発表資料
20111215_第1回EMR勉強会発表資料
 
hscj2019_ishizaki_public
hscj2019_ishizaki_publichscj2019_ishizaki_public
hscj2019_ishizaki_public
 
2016-02-08 Spark MLlib Now and Beyond@Spark Conference Japan 2016
2016-02-08 Spark MLlib Now and Beyond@Spark Conference Japan 20162016-02-08 Spark MLlib Now and Beyond@Spark Conference Japan 2016
2016-02-08 Spark MLlib Now and Beyond@Spark Conference Japan 2016
 
Spark Streamingを使ってみた ~Twitterリアルタイムトレンドランキング~
Spark Streamingを使ってみた ~Twitterリアルタイムトレンドランキング~Spark Streamingを使ってみた ~Twitterリアルタイムトレンドランキング~
Spark Streamingを使ってみた ~Twitterリアルタイムトレンドランキング~
 
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォーム
 
CDHの歴史とCDH5新機能概要 #at_tokuben
CDHの歴史とCDH5新機能概要 #at_tokubenCDHの歴史とCDH5新機能概要 #at_tokuben
CDHの歴史とCDH5新機能概要 #at_tokuben
 
A Benchmark Test on Presto, Spark Sql and Hive on Tez
A Benchmark Test on Presto, Spark Sql and Hive on TezA Benchmark Test on Presto, Spark Sql and Hive on Tez
A Benchmark Test on Presto, Spark Sql and Hive on Tez
 

Ähnlich wie Sparkパフォーマンス検証

アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングYosuke Mizutani
 
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...Insight Technology, Inc.
 
機械学習 / Deep Learning 大全 (4) GPU編
機械学習 / Deep Learning 大全 (4) GPU編機械学習 / Deep Learning 大全 (4) GPU編
機械学習 / Deep Learning 大全 (4) GPU編Daiyu Hatakeyama
 
[C31]世界最速カラムナーDBは本物だ! by Daisuke Hirama
[C31]世界最速カラムナーDBは本物だ! by Daisuke Hirama[C31]世界最速カラムナーDBは本物だ! by Daisuke Hirama
[C31]世界最速カラムナーDBは本物だ! by Daisuke HiramaInsight Technology, Inc.
 
SDN Japan: ovs-hw
SDN Japan: ovs-hwSDN Japan: ovs-hw
SDN Japan: ovs-hwykuga
 
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティスAmazon Web Services Japan
 
PGXのレスポンスとリソース消費
PGXのレスポンスとリソース消費PGXのレスポンスとリソース消費
PGXのレスポンスとリソース消費Tatsumi Akinori
 
Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)Yoshinori Matsunobu
 
リアルタイムゲームサーバーの ベンチマークをとる方法
リアルタイムゲームサーバーの ベンチマークをとる方法リアルタイムゲームサーバーの ベンチマークをとる方法
リアルタイムゲームサーバーの ベンチマークをとる方法モノビット エンジン
 
YAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web service
YAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web serviceYAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web service
YAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web serviceKazuho Oku
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) Akihiro Kuwano
 
分散メモリ環境におけるシェルスクリプトの高速化手法の提案
分散メモリ環境におけるシェルスクリプトの高速化手法の提案分散メモリ環境におけるシェルスクリプトの高速化手法の提案
分散メモリ環境におけるシェルスクリプトの高速化手法の提案Keisuke Umeno
 
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編Fixstars Corporation
 
インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門Akihiro Kuwano
 
Craft CMSに最適なサーバはどんな環境?
Craft CMSに最適なサーバはどんな環境?Craft CMSに最適なサーバはどんな環境?
Craft CMSに最適なサーバはどんな環境?Kei Mikage
 
[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)
[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)
[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)Insight Technology, Inc.
 
GMOメディア RHEV-S-事例紹介
GMOメディア RHEV-S-事例紹介GMOメディア RHEV-S-事例紹介
GMOメディア RHEV-S-事例紹介Dai Utsui
 
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化シスコシステムズ合同会社
 

Ähnlich wie Sparkパフォーマンス検証 (20)

アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
 
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
[db tech showcase Tokyo 2017] D21: ついに Red Hat Enterprise Linuxで SQL Serverが使...
 
機械学習 / Deep Learning 大全 (4) GPU編
機械学習 / Deep Learning 大全 (4) GPU編機械学習 / Deep Learning 大全 (4) GPU編
機械学習 / Deep Learning 大全 (4) GPU編
 
[C31]世界最速カラムナーDBは本物だ! by Daisuke Hirama
[C31]世界最速カラムナーDBは本物だ! by Daisuke Hirama[C31]世界最速カラムナーDBは本物だ! by Daisuke Hirama
[C31]世界最速カラムナーDBは本物だ! by Daisuke Hirama
 
SDN Japan: ovs-hw
SDN Japan: ovs-hwSDN Japan: ovs-hw
SDN Japan: ovs-hw
 
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
 
PGXのレスポンスとリソース消費
PGXのレスポンスとリソース消費PGXのレスポンスとリソース消費
PGXのレスポンスとリソース消費
 
Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)
 
リアルタイムゲームサーバーの ベンチマークをとる方法
リアルタイムゲームサーバーの ベンチマークをとる方法リアルタイムゲームサーバーの ベンチマークをとる方法
リアルタイムゲームサーバーの ベンチマークをとる方法
 
YAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web service
YAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web serviceYAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web service
YAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web service
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
 
分散メモリ環境におけるシェルスクリプトの高速化手法の提案
分散メモリ環境におけるシェルスクリプトの高速化手法の提案分散メモリ環境におけるシェルスクリプトの高速化手法の提案
分散メモリ環境におけるシェルスクリプトの高速化手法の提案
 
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
 
インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門
 
Craft CMSに最適なサーバはどんな環境?
Craft CMSに最適なサーバはどんな環境?Craft CMSに最適なサーバはどんな環境?
Craft CMSに最適なサーバはどんな環境?
 
CPUの同時実行機能
CPUの同時実行機能CPUの同時実行機能
CPUの同時実行機能
 
[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)
[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)
[INSIGHT OUT 2011] A12 ひとつのデータベース技術では生き残れない part1 カラムナーデータベース(Shinkubo)
 
GMOメディア RHEV-S-事例紹介
GMOメディア RHEV-S-事例紹介GMOメディア RHEV-S-事例紹介
GMOメディア RHEV-S-事例紹介
 
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
 
Isca13 study
Isca13 studyIsca13 study
Isca13 study
 

Mehr von BrainPad Inc.

Business utilization of real estate image classification system using deep le...
Business utilization of real estate image classification system using deep le...Business utilization of real estate image classification system using deep le...
Business utilization of real estate image classification system using deep le...BrainPad Inc.
 
ブレインパッドにおける機械学習プロジェクトの進め方
ブレインパッドにおける機械学習プロジェクトの進め方ブレインパッドにおける機械学習プロジェクトの進め方
ブレインパッドにおける機械学習プロジェクトの進め方BrainPad Inc.
 
機械学習システムのアーキテクチャアラカルト
機械学習システムのアーキテクチャアラカルト機械学習システムのアーキテクチャアラカルト
機械学習システムのアーキテクチャアラカルトBrainPad Inc.
 
機械学習システム開発案件の事例紹介
機械学習システム開発案件の事例紹介機械学習システム開発案件の事例紹介
機械学習システム開発案件の事例紹介BrainPad Inc.
 
れこめん道~とあるエンジニアの苦闘の日々
れこめん道~とあるエンジニアの苦闘の日々 れこめん道~とあるエンジニアの苦闘の日々
れこめん道~とあるエンジニアの苦闘の日々 BrainPad Inc.
 
DMPの分析機能を実現する技術
DMPの分析機能を実現する技術DMPの分析機能を実現する技術
DMPの分析機能を実現する技術BrainPad Inc.
 
機械学習システムを受託開発 する時に気をつけておきたい事
機械学習システムを受託開発 する時に気をつけておきたい事機械学習システムを受託開発 する時に気をつけておきたい事
機械学習システムを受託開発 する時に気をつけておきたい事BrainPad Inc.
 
システム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシ
システム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシシステム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシ
システム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシBrainPad Inc.
 
Python研修の作り方 - teaching-is_learning-
Python研修の作り方 - teaching-is_learning-Python研修の作り方 - teaching-is_learning-
Python研修の作り方 - teaching-is_learning-BrainPad Inc.
 
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かうBrainPad Inc.
 
2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料
2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料
2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料BrainPad Inc.
 
GKEとgRPCで実装する多言語対応・スケーラブルな内部API
GKEとgRPCで実装する多言語対応・スケーラブルな内部APIGKEとgRPCで実装する多言語対応・スケーラブルな内部API
GKEとgRPCで実装する多言語対応・スケーラブルな内部APIBrainPad Inc.
 
実証実験報告セミナー資料 20180328(抜粋版)
実証実験報告セミナー資料 20180328(抜粋版)実証実験報告セミナー資料 20180328(抜粋版)
実証実験報告セミナー資料 20180328(抜粋版)BrainPad Inc.
 
エンジニア勉強会資料_⑥エンジニアが主導する組織マネジメントや開発体制の継続的改善
エンジニア勉強会資料_⑥エンジニアが主導する組織マネジメントや開発体制の継続的改善エンジニア勉強会資料_⑥エンジニアが主導する組織マネジメントや開発体制の継続的改善
エンジニア勉強会資料_⑥エンジニアが主導する組織マネジメントや開発体制の継続的改善BrainPad Inc.
 
エンジニア勉強会資料_⑤広告プロダクトとプラットフォームの開発
エンジニア勉強会資料_⑤広告プロダクトとプラットフォームの開発エンジニア勉強会資料_⑤広告プロダクトとプラットフォームの開発
エンジニア勉強会資料_⑤広告プロダクトとプラットフォームの開発BrainPad Inc.
 
エンジニア勉強会資料_④Rtoaster×Myndエンジンによる興味キーワード分析機能開発事例
エンジニア勉強会資料_④Rtoaster×Myndエンジンによる興味キーワード分析機能開発事例エンジニア勉強会資料_④Rtoaster×Myndエンジンによる興味キーワード分析機能開発事例
エンジニア勉強会資料_④Rtoaster×Myndエンジンによる興味キーワード分析機能開発事例BrainPad Inc.
 
エンジニア勉強会資料_③Rtoasterの11年
エンジニア勉強会資料_③Rtoasterの11年エンジニア勉強会資料_③Rtoasterの11年
エンジニア勉強会資料_③Rtoasterの11年BrainPad Inc.
 
エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発
エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発
エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発BrainPad Inc.
 
エンジニア勉強会資料_①ブレインパッドの中で僕たちは何を開発しているのか?
エンジニア勉強会資料_①ブレインパッドの中で僕たちは何を開発しているのか?エンジニア勉強会資料_①ブレインパッドの中で僕たちは何を開発しているのか?
エンジニア勉強会資料_①ブレインパッドの中で僕たちは何を開発しているのか?BrainPad Inc.
 

Mehr von BrainPad Inc. (20)

Oss LT会_20210203
Oss LT会_20210203Oss LT会_20210203
Oss LT会_20210203
 
Business utilization of real estate image classification system using deep le...
Business utilization of real estate image classification system using deep le...Business utilization of real estate image classification system using deep le...
Business utilization of real estate image classification system using deep le...
 
ブレインパッドにおける機械学習プロジェクトの進め方
ブレインパッドにおける機械学習プロジェクトの進め方ブレインパッドにおける機械学習プロジェクトの進め方
ブレインパッドにおける機械学習プロジェクトの進め方
 
機械学習システムのアーキテクチャアラカルト
機械学習システムのアーキテクチャアラカルト機械学習システムのアーキテクチャアラカルト
機械学習システムのアーキテクチャアラカルト
 
機械学習システム開発案件の事例紹介
機械学習システム開発案件の事例紹介機械学習システム開発案件の事例紹介
機械学習システム開発案件の事例紹介
 
れこめん道~とあるエンジニアの苦闘の日々
れこめん道~とあるエンジニアの苦闘の日々 れこめん道~とあるエンジニアの苦闘の日々
れこめん道~とあるエンジニアの苦闘の日々
 
DMPの分析機能を実現する技術
DMPの分析機能を実現する技術DMPの分析機能を実現する技術
DMPの分析機能を実現する技術
 
機械学習システムを受託開発 する時に気をつけておきたい事
機械学習システムを受託開発 する時に気をつけておきたい事機械学習システムを受託開発 する時に気をつけておきたい事
機械学習システムを受託開発 する時に気をつけておきたい事
 
システム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシ
システム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシシステム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシ
システム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシ
 
Python研修の作り方 - teaching-is_learning-
Python研修の作り方 - teaching-is_learning-Python研修の作り方 - teaching-is_learning-
Python研修の作り方 - teaching-is_learning-
 
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
 
2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料
2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料
2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料
 
GKEとgRPCで実装する多言語対応・スケーラブルな内部API
GKEとgRPCで実装する多言語対応・スケーラブルな内部APIGKEとgRPCで実装する多言語対応・スケーラブルな内部API
GKEとgRPCで実装する多言語対応・スケーラブルな内部API
 
実証実験報告セミナー資料 20180328(抜粋版)
実証実験報告セミナー資料 20180328(抜粋版)実証実験報告セミナー資料 20180328(抜粋版)
実証実験報告セミナー資料 20180328(抜粋版)
 
エンジニア勉強会資料_⑥エンジニアが主導する組織マネジメントや開発体制の継続的改善
エンジニア勉強会資料_⑥エンジニアが主導する組織マネジメントや開発体制の継続的改善エンジニア勉強会資料_⑥エンジニアが主導する組織マネジメントや開発体制の継続的改善
エンジニア勉強会資料_⑥エンジニアが主導する組織マネジメントや開発体制の継続的改善
 
エンジニア勉強会資料_⑤広告プロダクトとプラットフォームの開発
エンジニア勉強会資料_⑤広告プロダクトとプラットフォームの開発エンジニア勉強会資料_⑤広告プロダクトとプラットフォームの開発
エンジニア勉強会資料_⑤広告プロダクトとプラットフォームの開発
 
エンジニア勉強会資料_④Rtoaster×Myndエンジンによる興味キーワード分析機能開発事例
エンジニア勉強会資料_④Rtoaster×Myndエンジンによる興味キーワード分析機能開発事例エンジニア勉強会資料_④Rtoaster×Myndエンジンによる興味キーワード分析機能開発事例
エンジニア勉強会資料_④Rtoaster×Myndエンジンによる興味キーワード分析機能開発事例
 
エンジニア勉強会資料_③Rtoasterの11年
エンジニア勉強会資料_③Rtoasterの11年エンジニア勉強会資料_③Rtoasterの11年
エンジニア勉強会資料_③Rtoasterの11年
 
エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発
エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発
エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発
 
エンジニア勉強会資料_①ブレインパッドの中で僕たちは何を開発しているのか?
エンジニア勉強会資料_①ブレインパッドの中で僕たちは何を開発しているのか?エンジニア勉強会資料_①ブレインパッドの中で僕たちは何を開発しているのか?
エンジニア勉強会資料_①ブレインパッドの中で僕たちは何を開発しているのか?
 

Sparkパフォーマンス検証

  • 1. Copyright © BrainPad Inc. All Rights Reserved. Sparkパフォーマンス検証 2015年5月15日
  • 2. Copyright © BrainPad Inc. All Rights Reserved. 1. Spark検証環境 2
  • 3. Copyright © BrainPad Inc. All Rights Reserved. Spark 1.2.0 YARN 2.5.0 3 • クラスタマネージャ – YARN – Sparkはyarn-clusterモードで起動 • データストレージ – HDFS • OS – Centos.6.6 Spark検証環境 HDFS 2.5.0 Centos6.6 * 13台 ※回線は、検証に使ったインフラの都合上1Gbps。
  • 4. Copyright © BrainPad Inc. All Rights Reserved.  1 Resource Manager – 16コア – 16GB  12 Node Manager – 8コア – 8GB – HDFSのData Nodeと同居 4 YARNクラスタ
  • 5. Copyright © BrainPad Inc. All Rights Reserved.  1 Name Node – 16コア – 16GB  12 Data Node – 8コア – 8GB – YARNのNode Managerと同居 5 HDFSクラスタ
  • 6. Copyright © BrainPad Inc. All Rights Reserved. 2. Spark検証 6
  • 7. Copyright © BrainPad Inc. All Rights Reserved. アクセスログからPVを日別に集計する時間を計測する。 PV集計は、アクセスログに含まれる日時データから日付を特定し、日付ごとのログ 件数を累計する処理。 SparkアプリケーションはScalaで実装。 7 検証内容 HDFS Spark 1. HDFSからログデータをロード 3. 標準出力へ結果を書き込み 2. Sparkで日別にPV集計処理 stdout
  • 8. Copyright © BrainPad Inc. All Rights Reserved.  データフォーマット – csv – カラム数 • 14  データサイズ – 1行あたりログサイズ • 約370B – 1日あたりログサイズ • 約1GB – 日数 • 90日 – 全体のログサイズ • 約90GB 8 検証データ(アクセスログ)
  • 9. Copyright © BrainPad Inc. All Rights Reserved.  以下のパラメータを変動させ、それぞれの結果を取る。 1. executor-memory (512m, 1g, 2g) • 1executorに割り当てるメモリ 2. num-executors (13, 26, 39, 52) • Spark全体で起動するexecutorの数 3. executor-cores (1,2,3,4) • 1executorに割り当てるコア数 4. 入力ログデータサイズ (1g, 30g, 60g, 90g) • 入力するデータの合計サイズ 9 検証項目
  • 10. Copyright © BrainPad Inc. All Rights Reserved. 3. Spark検証結果 10
  • 11. Copyright © BrainPad Inc. All Rights Reserved. 11 以下パラメータは固定。 • num-executors = 13 • executor-cores = 1 • データサイズ = 90g executor-memory 20000 30000 40000 50000 60000 70000 80000 90000 100000 512m 1g 2g 4g 実行時間 (ms)
  • 12. Copyright © BrainPad Inc. All Rights Reserved. 12 以下パラメータは固定。 • executor-memory = 1g • executor-cores = 1 • データサイズ = 90g num-executors 20000 30000 40000 50000 60000 70000 80000 90000 100000 13 26 39 52 実行時間 (ms)
  • 13. Copyright © BrainPad Inc. All Rights Reserved. 13 以下パラメータは固定。 • executor-memory = 1g • num-executors = 13 • データサイズ = 90g executor-cores 20000 30000 40000 50000 60000 70000 80000 90000 100000 1 2 3 4 実行時間 (ms)
  • 14. Copyright © BrainPad Inc. All Rights Reserved. 14 以下パラメータは固定。 • executor-memory = 1g • num-executors = 13 • executor-cores = 1 入力ログデータサイズ 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 1g 30g 60g 90g 実行時間 (ms)
  • 15. Copyright © BrainPad Inc. All Rights Reserved.  並列数は、executorの数を増やすよりもexecutorが複数のコアを使えるように 増やしたほうが改善の幅が大きい。 – 1 taskあたりのShuffle Write Timeが、コア数増加したときのほうが3倍以上速かっ た。Executorの数が増えるとそれだけプロセス/ノードをまたぐshuffleが増えるか ら? • executor数を52、コア数を1にした場合のShuffle Write Time -> 142,596ms • executor数を13、コア数を13にした場合のShuffle Write Time -> 47,517ms  executor-memoryの増加は結果に悪影響を与えている。 – 今回のケースでは各executorが扱うデータサイズが512mに収まっており、ディスク へのスワップも発生していないため、メモリ増加は効果がなかった。  3ヶ月分のデータを30秒程度でさばけるのは、体感的にかなり速く感じる。 15 考察
  • 16. Copyright © BrainPad Inc. All Rights Reserved. 4. Spark Streaming検証 16
  • 17. Copyright © BrainPad Inc. All Rights Reserved. アクセスログをKafkaからSpark Streamingに流して、日時別のPVを計算する。10 分程度Kafkaからログデータをストリーミングして、各ジョブの平均実行時間を見 る。 PV集計はバッチ処理と同様、アクセスログに含まれる日時データからそのログの日 時を特定し、日時別のログ件数を累計する処理。 17 検証内容 Kafka Spark Streaming 1. Kafkaからアクセスログを流す 3. 標準出力へ結果を随時書き込み 2. Spark Streamingでn秒ごとに、時間別PV集計処理 (updateStateByKeyを使用) stdout
  • 18. Copyright © BrainPad Inc. All Rights Reserved.  Spark検証と同じログデータを使う。 – ログデータを10分間、一定のQPSでKafkaから流す。 18 検証データ(アクセスログ)
  • 19. Copyright © BrainPad Inc. All Rights Reserved.  以下のパラメータを変動させ、それぞれの結果を取る。 1. executor-memory (512m, 1g, 2g) 2. num-executors (13, 26, 39, 52) 3. executor-cores (1,2,3,4) 4. インターバル (5秒,15秒,30秒,60秒) • Spark Streamingの、マイクロバッチインターバル 5. QPS (1500, 2000, 2500, 7000) • Kafkaが1秒間に流すデータの件数 19 検証項目
  • 20. Copyright © BrainPad Inc. All Rights Reserved.  クラスタ構成 – 5 Broker • 4コア • 16GB – 3 Zookeeper node • 4コア • 16GB  アクセスログを流すトピック – パーティション数1 – レプリケーション数1  Spark Streaming側のレシーバ数 – 1で固定 20 Kafka
  • 21. Copyright © BrainPad Inc. All Rights Reserved. 5. Spark Streaming検証結果 21
  • 22. Copyright © BrainPad Inc. All Rights Reserved. 22 以下パラメータは固定。 • num-executors = 13 • executor-cores = 1 • インターバル = 5秒 • QPS = 1500 executor-memory 200 250 300 350 400 450 500 550 600 650 700 512m 1g 2g 4g 実行時間 (ms)
  • 23. Copyright © BrainPad Inc. All Rights Reserved. 23 num-executors 200 250 300 350 400 450 500 550 600 650 700 13 26 39 52 実行時間 (ms) 以下パラメータは固定。 • executor-memory = 1g • executor-cores = 1 • インターバル = 5秒 • QPS = 1500
  • 24. Copyright © BrainPad Inc. All Rights Reserved. 24 executor-cores 200 250 300 350 400 450 500 550 600 650 700 1 2 3 4 実行時間 (ms) 以下パラメータは固定。 • executor-memory = 1g • num-executors = 13 • インターバル = 5秒 • QPS = 1500
  • 25. Copyright © BrainPad Inc. All Rights Reserved. 25 インターバル 0 10 20 30 40 50 60 0 200 400 600 800 1000 1200 1400 5 15 30 60 1秒あたりの実行時間(ms) 実行時間(ms) 実行時間 (ms) 1秒あたりの実行時間 (ms) 以下パラメータは固定。 • executor-memory = 1g • num-executors = 13 • executor-cores = 1 • QPS = 1500
  • 26. Copyright © BrainPad Inc. All Rights Reserved. 26 QPS 200 250 300 350 400 450 500 550 600 650 700 1500 2000 2500 7000 実行時間 (ms) 以下パラメータは固定。 • executor-memory = 1g • num-executors = 13 • executore-cores = 1 • インターバル = 5秒
  • 27. Copyright © BrainPad Inc. All Rights Reserved.  並列数の増加は結果に悪影響を与えている。 – タスクごとの実行時間は、並列数を増やすと増加していた。 • Shuffle Readのサイズも増えており、並列数が増えることにより無駄なShuffleが発生してい たのかもしれない。 – タスクが複雑になったり、マイクロバッチの処理するデータサイズが増えれば並列数の 効果が効いてくるんでは?(未検証)  メモリの増加は結果に影響を与えていない。 – Sparkの検証と同じく、512mに収まっているため。  インターバルが長いほうが、より効率的に処理出来ている。 – バッチ実行回数が減るため。アプリケーションの要求とメモリの制約の中で、できるだ け長いインターバルを設定するのがベターか。  今回の実装だと、7000QPS(2500kb / sec)程度ならさばける。 – 5秒インターバルなら単純計算で、22MB / secまでさばける。 • (7000qps * 370b) * (5000ms / 550ms) / 1024 / 1024 ≒ 22MB 27 考察
  • 28. Copyright © BrainPad Inc. All Rights Reserved. 6. Spark Streamingデモアプリ検証 28
  • 29. Copyright © BrainPad Inc. All Rights Reserved. Spark, MLlib, Spark streamingを使ってコンバージョン予測デモアプリを作成し、 そのパフォーマンスを測定する。 デモアプリは、以下2つのコンポーネントから成る。 1. Spark Streamingでの特徴量作成〜モデル取得〜予測 2. Spark & MLlibでのモデル構築 29 デモアプリ
  • 30. Copyright © BrainPad Inc. All Rights Reserved. 30 デモアプリイメージ図 Kafka Spark Streaming HDFS Spark 特徴量 特徴量 モデル モデル 予測結果 アクセスログ 1. アクセスログから特徴量を抽出 2. モデルをロードして、アクセスしたユーザーの コンバージョン予測 1. 特徴量からモデルを作成 2. モデルをHDFSに保存
  • 31. Copyright © BrainPad Inc. All Rights Reserved. 1. Spark Streamingでの特徴量作成〜モデル取得〜予測 – 処理内容 • データは先の検証と同じくアクセスログを使用 • 特徴量はCSVテキスト形式でユーザーID・累計訪問回数・累計ページビュー数・コンバージョ ンフラグを出力(10秒ごと) • HDFSからモデルを取得し、ユーザーIDごとに特徴量を作成して予測を実施 – すなわち、ユーザーごとのコンバージョン予測を行っている。 – 今回の検証ではレイテンシに焦点を当てているため、予測精度については特に突き詰めていない。 – 検証項目 • QPS (1000, 2000, 3000) 2. バッチでの学習 – 処理内容 • ストリーミング処理で出力されたCSVデータを取得 • CSVデータから特徴ベクトルを作成し、RandomForestで学習 • 作成されたモデルをHDFSに保存 – 検証項目 • 特徴量の行数 (250万, 500万, 1000万) • 特徴量の列数 (100, 200, 300) 31 検証内容
  • 32. Copyright © BrainPad Inc. All Rights Reserved.  Kafka – Broker数 5 – パーティション数 5  Spark – num-executors 13 – executor-cores 4 – executor-memory 6GB – driver-memory 6GB  Spark Streaming – num-executors 5 – executor-cores 4 – Executor-memory 512m – Driver-memory 512m – Kafkaレシーバ数 5 – インターバル 10秒 32 動作環境
  • 33. Copyright © BrainPad Inc. All Rights Reserved. 7. Spark Streamingデモアプリ検証結果 33
  • 34. Copyright © BrainPad Inc. All Rights Reserved. 34 ストリーミングでの特徴量作成 – モデル取得 – 予測 0 200 400 600 800 1000 1200 1400 0 1000 2000 3000 4000 5000 6000 7000 QPS 実行時間 (ms) 各ジョブの平均実行時間を計測。
  • 35. Copyright © BrainPad Inc. All Rights Reserved. 35 バッチでのモデル構築 (入力データ行数を変動) 0 10 20 30 40 50 60 0 2 4 6 8 10 12 14 特徴量行数(100万行) 実行時間 (秒)
  • 36. Copyright © BrainPad Inc. All Rights Reserved. 36 バッチでのモデル構築 (特徴量の数を変動) 0 20 40 60 80 100 120 140 160 180 200 0 100 200 300 400 500 600 特徴量の数 実行時間 (秒)
  • 37. Copyright © BrainPad Inc. All Rights Reserved.  ストリーミング – HDFSへの書き込みやモデルを使った予測など、ある程度複雑な処理をしても QPS4000程度なら1秒以内にさばける。  バッチ(データサイズの増加) – ストリーミング側が細かいファイルを多く吐き出すので、どこかでマージするか HBaseを使うなどしたほうがよさそう。 – 今回のように1行あたりのデータが小さいと、データ容量よりはファイル数のほうが影 響あり?  バッチ(特徴量数の増加) – 計測できた範囲では、特徴量数の増加に比例して処理時間が伸びる。 – 特徴量数が大きくなるとOOMが発生する。 • メモリに依存しているのでしょうがないというのはある。 – 今回はExperimentalな実装であるRandomForestを使っていたため、アルゴリズムに よって結果は変わりそう。 37 考察
  • 38. Copyright © BrainPad Inc. All Rights Reserved.  検証内容 – デモアプリの特徴量や予測結果書き込み先をHDFSからHBaseに変えてみる。 – 細かいパフォーマンスというよりは、SparkからHBaseを使う例が欲しかった。 • 実際はHDFSではなくHBaseなどのヘビーライトに耐えられるストレージを使うことになると 思われるので。  HBase (0.98.6) – クラスタ • Master1台(Name Nodeと同居) • Regsion Server12台(Data Nodeと同居) – ヒープサイズ 2GB – テーブル • 特徴量テーブル – ストリーミングから特徴量データを書き込むテーブル。 – 1 Column Familyに、各特徴量ごとにカラムを分けて書き込み – RowKeyは、{バケットID}-{リバースタイムスタンプ}-{ユーザーID} – Regsion数13に事前分割 • コンバージョン予測結果テーブル – ストリーミングからユーザーごとのコンバージョン予測結果を書き込むテーブル。 – RowkeyはユーザーID – カラムはコンバージョンフラグの1つのみ。 – Region数は13に事前分割 38 HBaseを使った追加検証
  • 39. Copyright © BrainPad Inc. All Rights Reserved. 39 ストリーミングでの特徴量作成 – モデル取得 – 予測 0 200 400 600 800 1000 1200 1400 1500 3000 6000 QPS HBase HDFS 各ジョブの平均実行時間を計測。
  • 40. Copyright © BrainPad Inc. All Rights Reserved. 40 バッチでのモデル構築 (入力データ行数を変動) 0 10 20 30 40 50 60 0 2 4 6 8 10 12 14 特徴量行数(100万行) HBase HDFS
  • 41. Copyright © BrainPad Inc. All Rights Reserved.  データ量が少ないうちは差が出ないが、データ量が増えるにしたがってHBaseを 使ったほうが書き込みケース(ストリーミング)、読み込みケース(バッチ)と もに、処理時間の伸びが鈍い。 – HBaseは実際にデータをHDFSに書き込むまでラグがある(MemStoreに貯める)の で、直にHDFSに書き込むのに比べて速いのだろう。 – 読み込みは、HDFS経由の場合は大量の小さなファイルを読み込むことになるが(スト リーミング側が数秒ごとに出力するため)、HBaseはそうはならないのでHDFSに比べ て良い結果がでているのだろう。  MLlibは内部で(RDDの)collectをコールするなど、メモリを圧迫する処理を 複数回行うため、以下の対応が必要だった。 – trainする前にpersistする。 – driverのメモリサイズを大きくする。 41 考察
  • 42. Copyright © BrainPad Inc. All Rights Reserved. 8. まとめ 42
  • 43. Copyright © BrainPad Inc. All Rights Reserved.  並列数のチューニングがパフォーマンスを決定している。 – 1 executorに複数コアを割り当てたほうが高速化する。 – 一方、ストリーミングのケースのように、並列数を増やすうことで処理が悪化するケー スもある。(メモリについても同じ) – 処理の内容やデータサイズに合わせて、適切なポイントを選ぶ必要がある。  パフォーマンスを出すには、書き方の工夫が必要。 – このスライドには現れていないが、(RDDオブジェクトの)repartitionやpersistな ど、適宜タスク数を調整したりキャッシュを入れたりする必要がある。  MLlibは内部でcollectなどメモリを圧迫する処理を複数回行うため、以下の対応 が必要。 – trainする前にpersistする。 – driverのメモリサイズを調整する。  管理UIが使いやすく、チューニングをするのに非常に助かる。 – どのタスクがどのくらい時間をとっているか、など。 43 まとめ
  • 44. Copyright © BrainPad Inc. All Rights Reserved. 株式会社ブレインパッド 〒108-0071 東京都港区白金台3-2-10 白金台ビル3F TEL:03-6721-7001 FAX:03-6721-7010 info@brainpad.co.jp Copyright © BrainPad Inc. All Rights Reserved. www.brainpad.co.jp