Sparkの可視化ツール
Sparkの実行情報を可視化する"trace-analysis"というツールがDatabricksのBlogの前書きにあるリンク先で紹介されていましたので使ってみました。
準備
trace-analysisを用意します。環境はWindows8.1を使っています。
git clone https://github.com/kayousterhout/trace-analysis.git
可視化するSparkのイベントログはDatabricksが公開しているものを使うことにしました。(注意:そのままリンクをクリックすると約300MBのテキストが表示されてしまうので、右クリックで保存をお勧めします)
通常の環境ではspark.eventLog.enabledとspark.eventLog.dirが適切に設定されていれば指定ディレクトリの下に"EVENT_LOG_1"の名前で作成されます。
pdfcairoを含むgnuplotのインストール
pdfcairoが含まれているgnuplotが必要のようです。
もしもなければ、trace-analysisが生成したgnuplotファイルを編集しなおす手間が必要になります。
面倒に思ったので私は今あるgnuplotをアンインストールしてから最新版をインストールしなおしました。
ジョブ毎に可視化する
$ python parse_logs.py 2015_03_01_bdb_sf5_48g_memory_event_log --waterfall-only
Traceback (most recent call last):
File "parse_logs.py", line 4, in <module>
import numpy
ImportError: No module named numpy
numpyがないと怒られましたので、numpyをインストールして再実行したところうまくいきました。
$ python parse_logs.py 2015_03_01_bdb_sf5_48g_memory_event_log --waterfall-only
...
Job 84 has stages: [226, 227, 228]
['229: 2192 tasks', '230: 1 tasks']
Stages to combine: set([])
Job 85 has stages: [229, 230]
['232: 200 tasks', '233: 1 tasks', '231: 2192 tasks']
Stages to combine: set([])
Job 86 has stages: [232, 233, 231]
pdfを作成する
gnuplotからpdfを作成します。
$ gnuplot 2015_03_01_bdb_sf5_48g_memory_event_log_0_waterfall.gp
(gnuplot.exe:5800): Pango-WARNING **: couldn't load font "Times Not-Rotated 220", falling back to "Sans Not-Rotated 220", expect ugly output.
エラーは出ましたが、一つ上のフォルダにpdfが作られました。
ただ、フォントが重なっていて見づらいです。
そこで、gpファイルをいじってサイズを大きくするとずいぶんと見やすくなりました。
目的のgpファイルの一行目を以下のように変更しました。
set terminal pdfcairo font 'Times,22' linewidth 4 rounded dashlength 2 size 5,5
#sizeを修正
set terminal pdfcairo font 'Times,22' linewidth 4 rounded dashlength 2 size 10,10
全体の実行を可視化する
parse_log.pyのオプションを--parse-as-single-jobに変えると全体の実行時間を一つのグラフに表示することができます。
ただ、サイズを100,100にしても小さすぎて判別できない上に、一回のpdf化に30分以上かかることもあって調整はあきらめました。