Apache Zeppelin入門 | Hadoop Advent Calendar 2016 #19

こんにちは、小澤です。 この記事はHadoop Advent Calendar 19日目のものとなります。

前回はSparkのMLlibについて紹介させていただきました。
今回はApache Zeppelinというものを紹介したいと思います。

Zeppelinとは

ブラウザ上でプログラムをインタラクティブに記述できるノートブックというものを作成するツールの一種です。 有名なところではJupyter notebook(IPython notebook)があるかと思いますが、それと似たツールだと想像していただければと思います。

導入

今回は簡単な方法として、Hortonworksさんが提供するHDPのsandboxを利用します。
これには、Ambariというものが入っています。これはHadoopのクラスタ構築に使えるものですが、それだけではなく構築後のクラスタに対する各種操作も行えます。
sandboxの環境構築ができたら、http://localhost:9995 にアクセスするとZeppelinが使える状態になっています。

使ってみる

利用の仕方は簡単です。ブラウザからhttp://localhost:9995にアクセスして表示されるWelcom画面で「Create new note」を選択します。適当な名前を入力して、次に表示された画面で自由にプログラムを書くことができます。

スクリーンショット 2016-11-17 15.32.54

スクリーンショット 2016-11-17 15.36.37

この画面では、Scalaだけでなく、PythonやSQLの記述もできます。
Bank Marketingデータを利用しての簡単な例を見ていきたいと思います。
zipファイルでデータを取得できるので、展開して動作環境(VM, dockerなど)のHDFSに置いてください。以下の例では、/user/zeppelin/bankにデータを置いています。

unzip bank.zip
hadoop fs -mkdir /user/zeppelin/bank
hadoop fs -put bank/* /user/zeppelin/bank

この状態であとはSparkでの処理を実装するのみとなります。

スクリーンショット 2016-11-17 16.10.23

Zeppelinの便利なところの1つはSQLは自動的に表やグラフの形式で出力してくれて、それをインタラクティブに操作することができるとこあります。 ボタンひとつで表示するグラフを変更したり、settingsで軸などの値の変更も可能です。

スクリーンショット 2016-11-17 16.12.13

スクリーンショット 2016-11-17 16.12.32

スクリーンショット 2016-11-17 16.15.36

右上のある設定によってこの一部表示にしたり、レイアウトを変更することも可能です。

スクリーンショット 2016-11-17 16.43.51

その他の機能

その他にもZeppelinには、様々な機能があります。
例えば、フォームを設置を設置するば、変数をプログラムの外から動的に扱えたりしますし、同一ノートの複数人による同時編集も可能です。

他の機能については導入した環境にサンプルがいくつか含まれていると思いますので、そちらも参考にしてみてください。

終わりに

今回は、Zepplinについて書かせていただきました。
ZeppelinはインタラクティブにSparkを利用するのにとても便利なツールです。Jupyter notebookなどと役割がかぶっている部分も多いですが、Sparkを提供しているHadoopクラスタなどにすでに導入されていばその環境をそのまま使えるなどの利点もあり、今後の活用事例も増えていくことかと思います。

明日はDeeplearning4Jというライブラリを使ってSpark上でDeep Learningを動かす方法について書かせていただく予定です。
ぜひ、お楽しみに!