Sparkを実行できるWebUIをいくつか比較してみました。
対象としたのは下記の3つです。
- Apache Zeppelin
- pyspark + Jupyter(iPython Notebook)
- spark-notebook
Spark付属のSpark Web Interfaceは実行状況のモニタリングやRDDの状態が可視化されていて非常に便利なものなのですが、上記とは毛色が異なるため今回比較対象に入れていません。
Hueのnotebookやdatabricks cloudに関してはまた今度。。。
まずはそれぞれの概要を少しご紹介します。
Apache Zeppelin
Apacheが作っているnotebook形式のWeb UIで、対話型実行ができます。
この記事を書いている時点での最新バージョンは0.6.0です。
Scala, Python, SQL(Spark), SQL(Hive), Markdown, Shellなどが実行でき、簡単なグラフ表示も行えます。
pyspark + Jupyter(iPython Notebook)
iPythonが3.0から多言語(プログラミングの)に対応して進化しました。これがJupyterです。
バージョン4.0からは完全に多言語対応したJupyterのみのリリースになるそうです。
Jupyterがサポートするカーネルは下記にまとまっていました。
IPython kernels for other languages
Scalaも当然サポートされています。
pythonユーザには嬉しいiPythonですが、pysparkにオプションを付与して実行するだけで、
簡単にSparkにnotebookを提供するiPythonを起動できます。
当然、numpyやpandas, matplotlibなどのpythonライブラリが使えるので、非常に便利です。
pyspark + iPythonの便利さについてはこちらの記事にも書きました☆彡
SparkをMesosで冗長化させてIPython notebookから弄る
spark-notebook
この記事を書いている時点での最新バージョンは0.6.1です。
作った方はLearning Play! Framework 2の著者でSpark Summit 2015 EUROPEで登壇されるAndy Petrella氏です。
非常にiPythonと似た仕上がりです。
が、Andy Petrella氏らしく、中身はPlay Frameworkです。
デフォルトでD3.jsがロードされるようになっており、多彩なグラフ描画が可能となっています・
最近このブログにもレビューを書きました。
spark-notebook使ってみた
機能比較
機能比較表を作ってみました。
機能/プロダクト | Apache Zeppelin | pyspark + Jupyter | spark-notebook |
対応Sparkバージョン | 1.1.x〜最新 | 0.8.0〜最新 | 1.2.0〜最新 |
対応言語 | Scala, Python, Markdown, SQL(Spark, Hive), Shell 自分で増やせる |
Python, Scala, Haskell, Matlab, R, Julia等々49種類。 | Scala, SQL, JavaScript, Shell |
YARNクラスタ対応 | ◯ | ◯ | ◯ |
Mesos対応 | ◯ | ◯ | ◯ |
Tachyon対応 | ◯ | ◯ | ◯ |
ビジュアライゼーション | 独自js。 ・テーブル表示 ・棒グラフ ・折れ線グラフ ・パイチャート をピボット表示可能。 |
matplotlibで割りと何でも。 | D3.js。 ・テーブル表示 ・棒グラフ ・折れ線グラフ ・パイチャート ・地理情報 ・グラフ(ネットワーク) などは手軽に描画可能。 |
Sparkとのバインディング方法 | jettyベースのjavaサーブレットでSpark接続 | py4j(pyspark) | akkaベースのPlayでSpark接続 |
依存解決 | notebook上でjarをロードできる z.load(“groupId :artifactId:version”) |
Sparkクラスタに依存モジュールを全配布して再起動 | notebook上でjarをロードできる :dp org.bdgenomics.adam % adam-apis % 0.16.0 |
デメリット | ・ビジュアライゼーションが弱い(多量データでブラウザが死ぬという話もある) ・一度実行しないとnotebookに変更が保存されない |
・Sparkが動くかどうかはpyspark/py4jのでき次第。 ・ジョブ実行時の進捗状況がわからない |
・対応言語が少ない ・ジョブ実行時の進捗状況がわからない |
メリット | ・ジョブ実行時の進捗状況が表示される ・たいてい動く ・きちんとメンテナンスされている ・Apache Foundation |
・Jupyter自体は非常に安定 ・統計・数理計算に強いPythonライブラリがそのまま使える |
・サンプルがたくさんある ・D3.jsで多彩なグラフ描画 |
ご参考までに。