だいたいゼロから始めるApache Zeppelin(インストール・起動・停止編)



## シリーズのリンク

1. [機能紹介編](https://qiita.com/muterion111/items/d141557e8c551c556de6 "だいたいゼロから始めるApache Zeppelin(機能紹介編)")(一度はお読みください)
1. インストール・起動・停止編
1. [設定編](https://qiita.com/muterion111/items/c6547b444bbbac6c4737 "だいたいゼロから始めるApache Zeppelin(設定編)")
1. [Sparkインタープリタ編](https://qiita.com/muterion111/items/557197d58a5eaee2af86 "だいたいゼロから始めるApache Zeppelin(Sparkインタープリタ編)")
1. [その他インタープリタ編](http://qiita.com "だいたいゼロから始めるApache Zeppelin(その他インタープリタ編用)")(予定)

## 要約
- Apache Zeppelinはバイナリ解凍/Dockerイメージのプル/HomeBrew/ソースのビルド等でインストールできる。
- Apache ZeppelinはAmazon EMR/Cloud Dataprocにもインストールできる。

## Apache Zeppelinのインストール方法
Apache Zeppelinでは以下の方法でインストールできます。

- バイナリ解凍によるインストール
- Dockerイメージのプルによるインストール
- HomeBrewによるインストール
- ソースのビルドによるインストール

またローカルPCやIaaSといった自分で運用する環境以外にも
下記にインストールできます。

- [Amazon EMR](https://docs.aws.amazon.com/ja_jp/emr/latest/ReleaseGuide/emr-zeppelin.html)
- [Cloud Dataproc](https://cloud.google.com/dataproc/docs/concepts/components/zeppelin?hl=ja)

それぞれの方法について説明していきます。

## バイナリ解凍の場合
解凍するバイナリのダウンロードは[このページ](http://zeppelin.apache.org/download.html)から行います。
このページからは全インタープリタ入りのものか
Sparkインタープリタだけ入っていて後にコマンドで他のを追加できる
２種類のバイナリをダウンロードできます。
個人的に工数の関係上前者がお勧めなので
これによるインストール方法を例示いたします。
下記画像で表示されている２つの青いボタンのうち、
`zeppelin-(バージョン)-bin-all.tgz`とのような文字列が
表示されている方をクリックします。
クリック後に別ページに遷移しますが、
ここで表示されるミラーサイトへのリンクを
クリックしてバイナリをダウンロードします。
![バイナリダウンロードのページ](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556213/ba5cb08a-23ec-5a60-c302-4a51baa151da.png)  
Apache Zeppelinをインストールしたいディレクトリにバイナリを移動させた後、
そのディレクトリにてダウンロードしたバイナリを下記のコマンドで解凍します。

```sh
tar -xzvf zeppelin-(バージョン)-bin-all.tgz
```

起動等のコマンドは以下の通りです。

```sh
# インストールしたディレクトリに移動
cd zeppelin-(バージョン)-bin-all

# 起動
./bin/zeppelin-daemon.sh start

# 停止
./bin/zeppelin-daemon.sh stop

# 再起動
./bin/zeppelin-daemon.sh restart
```

## Dockerイメージのプルの場合
このインストール方法の場合にはあらかじめ下記をインストールする必要があります。

|OS|インストール対象物|  
|:-:|:-:|  
|MacOS|[Docker Desktop for Mac](https://docs.docker.com/docker-for-mac/)|    
|Windows|[Docker Desktop for Windows](https://docs.docker.com/docker-for-windows/)|  
|Linux|[Docker Engine](https://docs.docker.com/install/)|  

下記のコマンドのようにApache Zeppelinの
Dockerイメージをプルすることでインストールできます。

```sh
docker pull apache/zeppelin:(バージョン)
```

起動等のコマンドは以下の通りです。

```sh
# 起動
docker run \
-p 8080:8080 \
-d \
--rm \
-v (ログを格納するディレクトリのパス)/logs:/logs \
-v (ノートブックを格納するディレクトリのパス)/notebook:/notebook \
-e ZEPPELIN_ADDR='0.0.0.0' \
-e ZEPPELIN_LOG_DIR='/logs' \
-e ZEPPELIN_NOTEBOOK_DIR='/notebook' \
--name zeppelin \
apache/zeppelin:(バージョン)

# 停止
docker stop zeppelin
```

## HomeBrewの場合
このインストール方法の場合にはあらかじめ下記のように
環境のOSに応じた方法でHomebrewをインストールする必要があります。
Windowsでは[WSL](https://docs.microsoft.com/ja-jp/windows/wsl/wsl2-index)でのみこの方法に対応しています。

|OS|インストール方法記載ページ|  
|:-:|:-:|  
|MacOS|https://brew.sh/index_ja|    
|Windows・Linux|https://docs.brew.sh/Homebrew-on-Linux|  

下記のコマンドを実行することでインストールできます。

```sh
brew install apache-zeppelin
```

起動等のコマンドは以下の通りです。

```sh
# インストールしたディレクトリに移動
cd /usr/local/Cellar/apache-zeppelin/(バージョン)

# 起動
./bin/zeppelin-daemon.sh start

# 停止
./bin/zeppelin-daemon.sh stop

# 再起動
./bin/zeppelin-daemon.sh restart
```

## ソースのビルドの場合
このインストール方法の場合にはあらかじめ下記をインストールしておく必要があります。

- [git](https://git-scm.com/)
- [Maven](https://maven.apache.org/)
- [Node.js](https://nodejs.org/ja/)

下記のようなコマンドを実行することでインストールできます。
なおこのインストールにおいてはMavenの
設定ファイルであるpom.xmlでの指定の関係上、
JDKは1.8、Scalaは2.11にバージョンを切り替えております。
それぞれのパッケージのバージョンは何が適切なのかは
ローカルリポジトリのディレクトリにて
コマンド`mvn help:all-profiles`を実行して
各プロファイルを確認する必要があります。
Apache Zeppelinのバージョン0.8.2においては
それぞれ下記バージョンを指定してインストールできます。

```sh
# zeppelinのリポジトリをクローン
git clone -b v(バージョン) https://github.com/apache/zeppelin.git

# Apache Zeppelinのローカルリポジトリに移動
cd ~/zeppelin

# 全てのpom.xmlで指定されているScalaのバージョンを2.11に変更
./dev/change_scala_version.sh 2.11

# ソースコードをビルド
mvn clean package \
-DskipTests \
-Pspark-2.4 \
-Phadoop2 \
-Pscala-2.11
```

起動等のコマンドは以下の通りです。

```sh
# Apache Zeppelinのローカルリポジトリに移動
cd ~/zeppelin

# 起動
./bin/zeppelin-daemon.sh start

# 停止
./bin/zeppelin-daemon.sh stop

# 再起動
./bin/zeppelin-daemon.sh restart
```

## Amazon EMRでのインストール
あらかじめ下記を用意しておきます。

- [EC2 キーペア](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-key-pairs.html)

EMRコンソールの下記画像の`クラスターを作成`の青いボタンをクリックします。
![EMRコンソール](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556213/aa9be92f-4c5e-d7fb-d48c-cbabe551eb62.png)  

遷移後のページにて`詳細オプションに移動する`のリンクをクリックします。
これで表示された下記画像の画面の上部にある`ソフトウェア設定`のチェックボックスのうち
Hadoop、Spark、Zeppelinを選択します(必要あればその他を選択します)。
あとはそれ以外の設定はデフォルトのままで構いませんので
ステップ4に遷移するまで`次へ`との文字列の青いボタンを同様にクリックしていきます。
ステップ4に遷移した際にあらかじめ作成しておいたEC2キーペアを選択して
`クラスターを作成`の青いボタンをクリックしてクラスタを作成します。
![EMRクラスタ作成ページ](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556213/2c8bb574-b8ee-9601-1013-d4bc0e2f5740.png)  

クラスタ作成完了後に下記コマンドを実行して
ローカルポートフォワーディングをします(Windowsの場合はWSLを用いてください)。
こうすることでブラウザで`http://localhost:(未使用のローカルポート)`の
URLを指定することでApache Zeppelinにアクセスできます。

```sh
ssh -i (作成したEC2キーペアへのパス) \
-NL (未使用のローカルポート):(クラスタのマスタのパブリックDNS):8890 \
hadoop@(クラスタのマスタのパブリックDNS)
```

このsshの接続は応答を返さないため、
作業が終わったら強制終了してください。

## Cloud Dataprocでのインストール
GCPコンソールでCloud Dataprocの画面を開いて
下記画像の`クラスタを作成`のリンクをクリックしてクラスタ作成を行います。
![Dataprocクラスタ作成ページ](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556213/d5f0983d-d7a9-74ec-b5c4-058ff8ecf057.png)  

遷移後の画面下部にある下記画像の
`コンポーネントゲートウェイ`のチェックボックスを選択し、
さらに`詳細オプション`のリンクをクリックします。
![詳細オプション](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556213/d0cd4d4f-d502-c9e6-b8a8-e776439c0c57.png)  

クリック後に下記画像の`コンポーネントを選択`のボタンをクリックします。
![コンポーネントの選択](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556213/f3962aee-b596-1f86-29ff-cdea60fb4688.png)  

表示されるパネルで下記画像のように`Zeppelin Notebook`のチェックボックスを選択し、
パネル下部にある`選択`の青いボタンをクリックします。
戻った画面下部にある`作成`の青いボタンをクリックすることでクラスタを作成します。
![選択パネル](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556213/c943fa32-0dc7-835d-3567-b6792f654bdd.png)  

クラスタ作成完了後にGCPコンソールでCloud Dataprocの`クラスタ`の一覧を表示し
生成したクラスタの名前のリンクをクリックします。
遷移後に下記画像の`ウェブインターフェース`のリンクをクリックします。
![ウェブインターフェース](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556213/c382f4fb-58e7-cf0a-4d02-9e091a235622.png)  

表示後に下記画像の`コンポーネントゲートウェイ`以下にある
`Zeppelin`のリンクをクリックすることでApache Zeppelinにアクセスできます。
![コンポーネントゲートウェイ](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556213/bf05e11c-ed14-840c-00c5-ce6923382e3a.png)  

## つづき
次回は[設定編](https://qiita.com/muterion111/items/c6547b444bbbac6c4737 "だいたいゼロから始めるApache Zeppelin(設定編)")です。