SlideShare a Scribd company logo
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

More Related Content

PDF
Sparkストリーミング検証
BrainPad Inc.
 
PDF
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
Hadoop / Spark Conference Japan
 
PDF
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
YusukeKuramata
 
PDF
マルチテナント Hadoop クラスタのためのモニタリング Best Practice
Hadoop / Spark Conference Japan
 
PDF
Spark/MapReduceの 機械学習ライブラリ比較検証
Recruit Technologies
 
PDF
Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016
Nagato Kasaki
 
PDF
DeltaCubeにおけるユニークユーザー集計高速化(実践編)
BrainPad Inc.
 
PDF
Spark Streamingを活用したシステムの検証結果と設計時のノウハウ
Future Of Data Japan
 
Sparkストリーミング検証
BrainPad Inc.
 
Sparkによる GISデータを題材とした時系列データ処理 (Hadoop / Spark Conference Japan 2016 講演資料)
Hadoop / Spark Conference Japan
 
今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise
YusukeKuramata
 
マルチテナント Hadoop クラスタのためのモニタリング Best Practice
Hadoop / Spark Conference Japan
 
Spark/MapReduceの 機械学習ライブラリ比較検証
Recruit Technologies
 
Hive on Spark を活用した高速データ分析 - Hadoop / Spark Conference Japan 2016
Nagato Kasaki
 
DeltaCubeにおけるユニークユーザー集計高速化(実践編)
BrainPad Inc.
 
Spark Streamingを活用したシステムの検証結果と設計時のノウハウ
Future Of Data Japan
 

What's hot (20)

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

Similar to Sparkパフォーマンス検証 (20)

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

More from BrainPad Inc. (20)

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

Recently uploaded (11)

PDF
FeNO呼気分析装置市場、CAGR13.90%で成長し、2031年には290百万米ドル規模に
yhresearch
 
PDF
セットトップボックス市場:世界の産業現状、競合分析、シェア、規模、動向2025-2031年の予測
snow326214
 
PPTX
PRESENTASI IZIN OPERASIONAL SMK ISLAM KARYA MANDIRI
BAHRULALAM27
 
PPTX
BEIS ORIENTATION FOR S.Y2024 - 2025.pptx
AsmiraCo2
 
PDF
工業用ミストシステム調査レポート:市場規模、シェア、産業分析データ、最新動向2025-2031 YH Research
2418867459
 
PDF
RV車市場、CAGR2.60%で成長し、2031年には37640百万米ドル規模に
yhresearch
 
PPTX
20250729_TechTalk_QlikTalendCloud_データ品質とデータガバナンス
QlikPresalesJapan
 
PDF
ダイヤモンドスラリー市場規模の成長見通し:2031年には193百万米ドルに到達へ
yhresearch
 
PPTX
【Qlik 医療データ活用勉強会】第50回 日本医療マネジメント学会参加報告、DPCデータの活用等
QlikPresalesJapan
 
PDF
世界mPOSデバイス市場のサプライチェーン解析:上流、下流、収益モデル分析2025-2031
yhresearch
 
PDF
埋め込み型ドラッグデリバリーデバイスの成長予測:2031年には751百万米ドルに到達へ
2418867459
 
FeNO呼気分析装置市場、CAGR13.90%で成長し、2031年には290百万米ドル規模に
yhresearch
 
セットトップボックス市場:世界の産業現状、競合分析、シェア、規模、動向2025-2031年の予測
snow326214
 
PRESENTASI IZIN OPERASIONAL SMK ISLAM KARYA MANDIRI
BAHRULALAM27
 
BEIS ORIENTATION FOR S.Y2024 - 2025.pptx
AsmiraCo2
 
工業用ミストシステム調査レポート:市場規模、シェア、産業分析データ、最新動向2025-2031 YH Research
2418867459
 
RV車市場、CAGR2.60%で成長し、2031年には37640百万米ドル規模に
yhresearch
 
20250729_TechTalk_QlikTalendCloud_データ品質とデータガバナンス
QlikPresalesJapan
 
ダイヤモンドスラリー市場規模の成長見通し:2031年には193百万米ドルに到達へ
yhresearch
 
【Qlik 医療データ活用勉強会】第50回 日本医療マネジメント学会参加報告、DPCデータの活用等
QlikPresalesJapan
 
世界mPOSデバイス市場のサプライチェーン解析:上流、下流、収益モデル分析2025-2031
yhresearch
 
埋め込み型ドラッグデリバリーデバイスの成長予測:2031年には751百万米ドルに到達へ
2418867459
 

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 [email protected] Copyright © BrainPad Inc. All Rights Reserved. www.brainpad.co.jp