Hadoop + Yarn Docker on SoftLayer by Rancher

[HADOOP SUMMIT 2016 SAN JOSE](http://hadoopsummit.org/san-jose/)に合わせて、RancherというDockerコンテナ管理ツールを使って、SoftLayer上にHadoop、Yarnのクラスタ環境を簡単に構築してみた記録です。

まずは、それぞれの概要を記します。

# Rancher
![racger.png](https://qiita-image-store.s3.amazonaws.com/0/61606/ef843d5b-09e2-1bf1-73fc-863c69a7fe84.png)
Rancherは、Dockerイメージとして配布されているコンテナやクラスタの管理をWebUIで簡単に行えるオープンソースのツールです。

SoftLayer、GCP、AWS、Azure、DigtalOcean、rackspaceといった、各種クラウドとのコンテナ連携が可能です。

2016年3月にバージョン1.0になり、Kubernetes、DockerSwarm、Mesos等のクラスタ環境管理機能が追加されました。


公式サイト：http://rancher.com/

# Hadoop and Yarn

## Hadoop
![hadoop.jpg](https://qiita-image-store.s3.amazonaws.com/0/61606/453d4c21-28a6-8ae3-bfaf-098e9f7c7cce.jpeg)
大規模データの蓄積、分析を並列分散処理によって、実現するオープンソースのミドルウェアです。Apacheプロジェクトとして、[Hortonworks](https://jp.hortonworks.com/)、[米Yahoo](https://www.yahoo.com/)、[Cloudera](http://www.cloudera.co.jp/)等の企業によって開発が続けられています。

公式サイト：http://hadoop.apache.org/

参考サイト：http://www.slideshare.net/hamaken/hadoop-cloudera-world-tokyo-2014

## Yarn
Yarnは、”Yet-Another-Resource-Negotiator”を意味し、Hadoopクラスタのリソース管理や、Hadoop上で動作するアプリケーションのスケジューリングを可能にするフレームワークです。

公式サイト：http://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.html

# SoftLayer
![SoftLayer.jpg](https://qiita-image-store.s3.amazonaws.com/0/61606/7e9d3bfd-dddb-2a40-7016-8e8729c832d8.jpeg)

SoftLayerは、IBMが提供する、高いパフォーマンスとセキュリティーを兼ね備えた企業向けのパブリック・クラウドです。

他のクラウドベンダーと主に違うところは、ベアメタルサーバが利用(最短30分)できるというところです。

公式サイト：http://www.ibm.com/cloud-computing/jp/ja/SoftLayer.html

#Docker
![docker.png](https://qiita-image-store.s3.amazonaws.com/0/61606/993feb28-768e-5f0d-0c8c-07898bc541b1.png)

ソフトウェアコンテナ内のアプリケーションのデプロイメントを自動化するオープンソースソフトウェアです。

公式サイト：https://www.docker.com/

参考サイト：http://www.slideshare.net/cyberblackvoom/linaction-theme-docker

* * *
HadoopとYarnの環境を物理サーバで構築となると大変ですが、Rancher、Docker、SoftLayerを使って簡単に構築して、試してみましょう！！

# SoftLayer上にRancherを構築 

RacherでHadoop + Yarn環境を構築するには、以下3個のホストが必要となります。

- Rancherのマネージャ用ホスト
- Hadoop + Yarn用ホスト1
- Hadoop + Yarn用ホスト2

3個の仮想サーバをSoftLayer上に作成します。
スペックは以下となります。
Hdoop + Yarnのホストには8GB以上のRAMが必要となります。

**Rancherのマネージャ用ホスト**
※表にない項目は全てデフォルト設定としてください。

|項目|設定内容|備考|
|:-----------------|:------------------|:------------------|
|Data Center      |SJC01 - San Jose| San Joseサミット中ということで！|
|Computing Instance|2 x 2.0 GHz Cores|-|
|RAM|4GB|-|
|Operating System|Ubuntu Linux 16.04 LTS Xenial Xerus Minimal Install (64 bit) |-|

**Hadoop + Yarn用ホスト1と2**
※表にない項目は全てデフォルト設定としてください。

|項目|設定内容|備考|
|:-----------------|:------------------|:------------------|
|Data Center      |SJC01 - San Jose| San Joseサミット中ということで！|
|Computing Instance|2 x 2.0 GHz Cores|-|
|RAM|8GB|-|
|Operating System|Ubuntu Linux 16.04 LTS Xenial Xerus Minimal Install (64 bit) |-|

SoftLayerだけでなくAWS、Azure等、他のクラウドでも同等の仮想サーバを作成することでRacher環境は構築できます。

# Rancher マネージャ用ホストの作成

SoftLayer上に作成したマネージャ用ホストにSSHでログインし、以下のコマンド操作を実施します。

1.パッケージの最新化を行います。

```lang:コマンド
# apt-get update
```
2.wgetコマンドをインストールします。

```lang:コマンド
# apt-get install wget
```
3.最新のDockerパッケージをインストールします。

```lang:コマンド
# wget -qO- https://get.docker.com/ | sh
```
4.Dockerが正しくインストールされていることを確認します。

```lang:コマンド
# docker run hello-world
```

Hello from Docker!
This message shows that your installation appears to be working correctly.

上記内容が表示されればDockerが正しくインストールされています。

5.Rancherマネージャコンテナを実行します。

```lang:コマンド
# docker run -d -p 8080:8080 rancher/server
```
6.2分程後にブラウザを起動して、http://マネージャ用ホストのIPアドレス:8080/ にアクセスすると以下の画面が表示されます。

![rancher01.png](https://qiita-image-store.s3.amazonaws.com/0/61606/50c2fee5-887a-5058-7c46-bb2933d87582.png)


7.このままでは誰でもアクセスできるため、GitHubのOAuth連携設定を行います。
上部メニューの「ADMIN」-「Access Control」を選択します。

![rancher02.png](https://qiita-image-store.s3.amazonaws.com/0/61606/ff5614d8-e6a5-5aea-ab57-4af172f224dc.png)

8.「click here」をクリックします。

![rancher03.png](https://qiita-image-store.s3.amazonaws.com/0/61606/c74846b5-38e2-397f-b95b-d84604efd234.png)

9.GitHubのログイン画面が表示されます。ログインします。
※GitHubのアカウントを持っていない場合は作成しましょう。

![rancher04.png](https://qiita-image-store.s3.amazonaws.com/0/61606/acc37357-3b8c-07b1-976b-bf186e122752.png)

10.「Register a new Application」ボタンをクリックします。
![rancher05.png](https://qiita-image-store.s3.amazonaws.com/0/61606/69ec7672-901a-74bf-5954-8e353a53fbcb.png)

11.赤枠箇所を入力し、「Register application」ボタンをクリックします。

![rancher06.png](https://qiita-image-store.s3.amazonaws.com/0/61606/b213e3d4-be89-49eb-0fbe-8bfb25bc23bd.png)

12.「Client ID」および「Client Secret」が払い出されます。

![rancher07.png](https://qiita-image-store.s3.amazonaws.com/0/61606/f6f4e1b7-f75e-d165-d5dc-876a22604c41.png)

13.GitHubから払い出された「Client ID」および「Client Secret」を入力します。

![rancher08.png](https://qiita-image-store.s3.amazonaws.com/0/61606/27f73e99-8eb1-1337-6db2-eb17e90471c2.png)

14.「Authenticate with GitHub」ボタンをクリックします。

![rancher09.png](https://qiita-image-store.s3.amazonaws.com/0/61606/a4336d68-840b-6c42-7977-655a39573612.png)

15.新たにウィンドウが開きます。[Authorize application]ボタンをクリックします。ウィンドウは自動的に閉じます。

![rancher10.png](https://qiita-image-store.s3.amazonaws.com/0/61606/6b79c6c9-d199-cd26-2cd5-c451f15e77b0.png)

16.Rancher側の画面が切り替わり「GitHub is enabled」と表示されます。

![rancher11.png](https://qiita-image-store.s3.amazonaws.com/0/61606/50e9a8e8-0639-2dde-1162-2c67d46231be.png)

# Rancher Hadoop + Yarn用ホスト1と2の作成

SoftLayer上に作成したHadoop + Yarn用ホストにSSHでログインし、以下のコマンド操作を実施します。

※2台とも同じ手順なので、1台ずつ行ってください。

1.パッケージの最新化を行います。

```lang:コマンド
# apt-get update
```
2.wgetコマンドをインストールします。

```lang:コマンド
# apt-get install wget
```
3.最新のDockerパッケージをインストールします。

```lang:コマンド
# wget -qO- https://get.docker.com/ | sh
```
4.Dockerが正しくインストールされていることを確認します。

```lang:コマンド
# docker run hello-world
```

Hello from Docker!
This message shows that your installation appears to be working correctly.

上記内容が表示されればDockerが正しくインストールされています。

5.「Add Host」ボタンをクリックします。

![rancher12.png](https://qiita-image-store.s3.amazonaws.com/0/61606/f559fa91-63b5-e81f-159e-1f3a774613f3.png)

6.画面が遷移し、赤枠のコマンドを右クリックでコピーします。

![rancher13.png](https://qiita-image-store.s3.amazonaws.com/0/61606/7f7cfaaa-3422-c7ee-b8ea-883b2ff98d57.png)

7.Hadoop + Yarn用ホストでコマンドを実行します。

```lang:コマンド
# docker run -d --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.0.2 http://RancherマネージャーホストのIPアドレス:8080/v1/scripts/D1D9CDBBC4FA3ED0BDE7:1467284400000:bwATRBPI6sILlbvHhRXQG7dFbw
```

8.Rancherの画面に戻り、「close」ボタンをクリックします。

![rancher14.png](https://qiita-image-store.s3.amazonaws.com/0/61606/d5a33734-674d-8f46-270f-6e36259fdc04.png)

9.上部メニュー「INFRASTRUCTURE」-「Hosts」を選択します。

![rancher14.png](https://qiita-image-store.s3.amazonaws.com/0/61606/38b8ded1-4509-69f8-86e0-0c273abe96cc.png)

10.Hadoop + Yarn用ホストがマネージャ用ホストの管理下に入りました。

![rancher15.png](https://qiita-image-store.s3.amazonaws.com/0/61606/234d374e-430e-7c54-e074-76565688fae4.png)

# Hadoop + Yarn 環境の構築

1.上部メニュー「CATALOG」を選択します。

2.「Hadoop + Yarn」の「View Details」ボタンをクリックします。

![rancher16.png](https://qiita-image-store.s3.amazonaws.com/0/61606/81314f35-73e5-3759-e7e1-372932044c79.png)

3.「Launch」ボタンをクリックします。

![rancher17.png](https://qiita-image-store.s3.amazonaws.com/0/61606/a14307fa-1c9a-14e8-809d-18dd80507f90.png)

4.約5分ほど待つと環境が構築されます。

![rancher18.png](https://qiita-image-store.s3.amazonaws.com/0/61606/5530ad22-caa8-90b4-53a2-da82b69c009c.png)

5.ブラウザから「Hadoop_namenode-primary_1」があるホストのIPアドレスにポート50070を指定してアクセスします。HDFS managerを確認することができます。

![rancher19.png](https://qiita-image-store.s3.amazonaws.com/0/61606/e085493e-0209-4f0d-694d-574dea26387c.png)

6.ブラウザから「Hadoop_yarn-resourcemanager_1」があるホストのIPアドレスにポート8088を指定してアクセスします。Yarn Resource managerを確認することができます。

![rancher20.png](https://qiita-image-store.s3.amazonaws.com/0/61606/99a61baf-40d3-789c-c5e4-70dfc79e97b6.png)

7.ブラウザから「Hadoop_yarn-nodemanager_1」があるホストのIPアドレスにポート8042を指定してアクセスします。Node Managerを確認することができます。

![rancher21.png](https://qiita-image-store.s3.amazonaws.com/0/61606/e5d1ca20-663e-295d-c6ac-d6f3fa70cb5f.png)

8.ブラウザから「Hadoop_jobhistory-server_1」があるホストのIPアドレスにポート19888を指定してアクセスします。Job Historyを確認することができます。

![rancher22.png](https://qiita-image-store.s3.amazonaws.com/0/61606/cf0a5f0f-fcd1-2647-32c9-675fa8560403.png)

* * *
以上でHadoop + Yarn Docker on SoftLayer by Rancherは完了となります。

Hadoop + Yarn環境をまともに構築すると大変ですが、手っ取り早く環境を構築して試してみるにはRancherが非常に便利です。

また、SoftLayerにはAWSのECS、GCPのGKE、Azure Container Serviceのようなコンテナサービス体系はないので、Rancherのようなコンテナ管理ツールが役立ちます。

Rancherは、kubernetes、Docker Swarm、Mesosといったコンテナクラスタ機能も簡単に構築できる点も非常に良いところです。

Rancherで環境構築をスムーズに行い、あらゆるOSSを試してみましょう！！

* * *
参考サイト

- [Rancherサーバーの起動からコンテナ作成まで](http://www.creationline.com/lab/9356/)
- [インフラエンジニアのためのRancherを使ったDocker運用入門](http://www.slideshare.net/zembutsu/docker-operation-and-introduciton-rancher-qpstudy-2015-06)
- [Rancher OSとRancherでDockerクラスタを組んでみた](http://tech.innovation.co.jp/2016/05/17/docker-clouster-with-rancher.html)