Apache Zeppelinでデータ分析を分散処理する - Part 1: データ分析のライフサイクル

## このシリーズ

* [Apache Zeppelinでデータ分析を分散処理する - Part 1: データ分析のライフサイクル](http://qiita.com/masato/items/b66930a2ab8d888df5ff)
* [Apache Zeppelinでデータ分析を分散処理する - Part 2: Ambari on DockerにZeppelinをセットアップする](http://qiita.com/masato/items/911e06fd31202181f0fd)
* [Apache Zeppelinでデータ分析を分散処理する - Part 3: ZeppelinでHiveを使えるようにする](http://qiita.com/masato/items/78a45cf9b6984552d4d9)
* [Apache Zeppelinでデータ分析を分散処理する - Part 4: Ambari on Dockerのambari-functionsを使ってみる](http://qiita.com/masato/items/b879b84486aeb7d3d6d8)


## Apache Zeppelinの特徴

### ライフサイクル

　[Apache Zeppelin](https://zeppelin.incubator.apache.org/)は[IPython Notebook](http://ipython.org/notebook.html)に代表されるWebブラウザからインタラクティブに使え、データ分析と可視化、重要なレポーティングが1つのノートブックになるツールです。幾つか定義がありますが、データ分析はデータ準備、データの探索、可視化、モデル構築、レポート、運用といったライフサイクルを回す必要があります。レポーティングやコラボレーションも含めて1つのインタフェースで行えるのは魅力的です。

　作成したノートブックは[ZeppelinHub](https://www.zeppelinhub.com/)に公開すると共有したり共同作業することができます。新しい技術を勉強するときは誰かの[動くコード](https://www.zeppelinhub.com/viewer/notebooks/aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2hvcnRvbndvcmtzLWdhbGxlcnkvemVwcGVsaW4tbm90ZWJvb2tzL21hc3Rlci8yQVM1VFk2QVEvbm90ZS5qc29u)を真似るのが習得の近道です。

### 分散処理基盤

　SparkとHadoopの分散環境をバックエンドに採用しているため大規模データのインタラクティブな分析に向いています。[LINE](http://developers.linecorp.com/blog/ja/?p=3533)や、[Naver](http://www.slideshare.net/deview/214-data-science-with-apache-zeppelin)、[Cloudbreak](http://hortonworks.com/hadoop/cloudbreak/)の[SequencIQ](http://sequenceiq.com/)を買収した[Hortonworks](http://hortonworks.com/)などで採用されています。Zeppelinの開発会社で関連のサービスやツールを提供している[NFLabs](http://www.nflabs.com/)など韓国で人気がありそうです。

### Alternatives

　同じカテゴリーには以下のようなツールがあります。

* [IPython Notebook](http://ipython.org/notebook.html)
* Rの[Shiny](http://shiny.rstudio.com/)
* Polyglotな[Beaker](http://beakernotebook.com/)
* Polyglotな[Jupyter](http://jupyter.org/)
* Clojureの[Gorilla](http://gorilla-repl.org/)
* [Scala Notebook](https://github.com/Bridgewater/scala-notebook)
* [PySpark](https://spark.apache.org/docs/1.5.1/programming-guide.html)のIPython Notebook

　他のツールに比べて大規模の分散処理ができること、最近注目が高まっている[MLlib](http://spark.apache.org/mllib/)の機械学習ライブラリが使えることが特徴です。個人的にはScalaやSQLで分析したコードと合わせてドキュメントをMarkdownで書けるのがうれしいです。PySparkとIPythonを手動で[インストール](http://ramhiser.com/2015/02/01/configuring-ipython-notebook-support-for-pyspark/)する手間も省けます。


## Hadoopクラスタの管理

　SparkとHadoopの面倒な構成管理はHortonworksが[Ambari](https://ambari.apache.org/)の[Blueprint](https://cwiki.apache.org/confluence/display/AMBARI/Blueprints)を提供しています。NFLabsの[Z-Manager](http://nflabs.github.io/z-manager/)というワンライナーインストールがあるので、最近では比較的簡単にインストールできます。[次回](http://qiita.com/masato/items/911e06fd31202181f0fd)はDocker上にAmbari Shellを使ってHadoopクラスタの構築とZeppelinのインストールを試してみたいと思います。

## 参考

### AmbariとZeppelin

* [Data Science lifecycle with Apache Zeppelin and Spark](http://www.slideshare.net/SparkSummit/data-science-lifecycle-with-apache-zeppelin-and-spark-by-moonsoo-lee)
* [Introduction to Data Science with Apache Spark](http://hortonworks.com/blog/introduction-to-data-science-with-apache-spark/)
* [Ambari service for Apache Zeppelin notebook](https://github.com/hortonworks-gallery/ambari-zeppelin-service#option-2-automated-deployment-of-a-fresh-hdp-cluster-that-includes-zeppelin-via-blueprints)
* [Multi-node Hadoop cluster on Docker](http://blog.sequenceiq.com/blog/2014/06/19/multinode-hadoop-cluster-on-docker/)
* [Install Apache Hadoop And Spark On Docker (aim for cluster)](http://blog.iamtao.me/2015/08/13/Install-Apache-Hadoop-And-Spark-On-Docker/)


### データ分析のライフサイクル

* [ビッグデータは企業に何をもたらすのか?](http://news.mynavi.jp/series/bigdata/003/)
* [第3章 “CRISP-DM”に基づくデータマイニングの進め方](http://news.mynavi.jp/series/bigdata/003/)
* [「データのライフ・サイクル」で考えるHadoopの使いどころ](https://thinkit.co.jp/story/2010/06/18/1619)
* [データサイエンスとその組織化について](http://statics.iiijii.com/?p=110)
* [シゴトで使える「データサイエンティスト」に必要なスキルセットってどんなもの？](http://www.atmarkit.co.jp/ait/articles/1303/25/news006.html)