DockerでCloudera Managerを立ち上げる

Hadoop初心者のアメリカ在住Java女子です。
Clouderaが提供しているCloudera Quickstartのdocker imageを使ってCloudera Managerを立ち上げてみました。
- - - -
###動作環境
- Mac OS 
- Dockerインストール済み

###手順
**Cloudera Quickstart imageをインストール**
まずはターミナルから
` $ docker pull cloudera/quickstart:latest`
(結構長く待たされた・・・)

**Dockerイメージを立ち上げ**
ネットでよく見る手順書にはこのコマンドが載ってるけれども、

```
$ docker run --hostname=quickstart.cloudera \ 
   --privileged=true -t -i cloudera/quickstart:latest \
   /usr/bin/docker-quickstart`
```

これだとDocker内で立ち上がったサービスにホストOS(Mac OS)からアクセスできない。要するにブラウザからGUI操作ができない。なのでポートの設定を加えました。7180と80の２つ。
7180はCloudera managerのデフォルトポート、80はQuick start tutorial。

```
$ docker run --hostname=quickstart.cloudera \
   --privileged=true -t -i -d  -p 7180 -p 80 \
  cloudera/quickstart:latest /usr/bin/docker-quickstart
```

**Port-mapping 確認**
docker psでport mappingを確認してみると、

```
$ docker ps
CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS              PORTS                                                                     NAMES
f99fd392c809        cloudera/quickstart:latest   "/usr/bin/docker-quic"   33 minutes ago      Up 33 minutes       0.0.0.0:32800->80/tcp, 0.0.0.0:32799->7180/tcp    amazing_engelbart
```
7180は32799, 80は32800にマッピングされてる。
Dockerが自動でホストOSの空いているポートを割り当ててくれてる。

で、上記のdocker runコマンドを実行するとコンテナが立ち上がり、自動でサービスを開始してくれる。

**クイックスタートガイドにアクセスしてみる**

起動プロセスが一通り終わったら、まずはクイックスタートガイドにアクセスしてみる。
Docker HostのIPアドレスを調べると、

```
$ docker-machine ip default
192.168.99.100
```
うむ、192.168.99.100だ。さっきのdocker psによると、ポート80は32800にマッピングされてた。
なのでMacのブラウザから192.168.99.100:32800にアクセスしてみる。
<img width="1260" alt="Screen Shot 2016-03-24 at 1.37.39 AM.png" src="https://qiita-image-store.s3.amazonaws.com/0/118126/327600bc-1f3d-23c8-b9c1-b03e3c5660ee.png">

Yay! 

**Cloudera Managerを起動**
チュートリアルをすっ飛ばして、Cloudera Managerを立ち上げる。

```
[root@quickstart cloudera]# sudo /home/cloudera/cloudera-manager --force --express
[QuickStart] Shutting down CDH services via init scripts...
[QuickStart] Disabling CDH services on boot...
[QuickStart] Starting Cloudera Manager daemons...
[QuickStart] Waiting for Cloudera Manager API...　<<< ここでかなり待たされる
[QuickStart] Configuring deployment...
[QuickStart] Deploying client configuration...
[QuickStart] Starting Cloudera Management Service...
[QuickStart] Enabling Cloudera Manager daemons on boot...

Success! You can now log into Cloudera Manager from the QuickStart VM's browser:

    http://quickstart.cloudera:7180

    Username: cloudera
    Password: cloudera
```
親切に、usernameとpassword表示して起動が終わった。
「ブラウザからhttp://quickstart.cloudera:7180 にアクセスしてみな！」って書いてあるけど、Docker内で動いているのでこのURLは使えない。

さっきのdocker psによるとポート7180はMac OSのポート32799にマッピングされてるので、ブラウザから192.168.99.100:32799にアクセス。
<img width="1341" alt="Screen Shot 2016-03-24 at 1.24.36 AM.png" src="https://qiita-image-store.s3.amazonaws.com/0/118126/6b4f86af-592d-f424-b905-a3cd32711806.png">
UsernameとPasswordは"cloudera"でログイン出来る。
(なんとなくクセでadminって入力しちゃってるけど・・汗)
入力後のCloudera Managerの画面。

<img width="1345" alt="Screen Shot 2016-03-24 at 1.24.48 AM.png" src="https://qiita-image-store.s3.amazonaws.com/0/118126/ddfce0ff-a88d-0e83-5dd8-1e3e2824e2ec.png">

###ハマった点
ドキュメントに「Quickstart tutorialを起動しない場合は、docker runコマンドに /bin/bash を渡せばいいよ」と書いてあったので、下記のコマンドを実行。

```
$ docker run --hostname=quickstart.cloudera --privileged=true \
  -t -i -d  -p 7180 -p 80 cloudera/quickstart:latest /bin/bash
```
無事にdockerは起動できたものの、HDFSにエラーが出てるし、Cloudera Managerも全くアクセスできない泣

Quickstart tutorialは全てのサービスを自動で起動してくれてるので、それをすっとばすとHDFS, Hive, Sparkなど手動で起動しないといけない模様T−T