Cloudera QuickStart VMs (Docker)をAWS上で動かす


# はじめに
Cloudera QuickStart VMs を触ってみます。

# 前提条件
環境：t2.xlargeのEC2インスタンス(EIP設定済み)
OS：Amazon Linux

```bash
$ uname -a
Linux ip-hoge-hoge-hoge-hoge 4.9.58-18.51.amzn1.x86_64 #1 SMP Tue Oct 24 22:44:07 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
```

# インスタンス初期設定
まずは以下のように初期設定を行っておきます。

```bash
# yum update
$ sudo yum update

# タイムゾーン設定(UTC -> JST)
$ sudo mv /etc/localtime /etc/localtime.org
$ sudo ln -s  /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
```

# Docker インストール
Dockerをインストールします。

```bash
# dockerインストール&サービス起動
$ sudo yum install -y docker
$ sudo service docker start

# dockerグループにec2-userを追加
$ sudo usermod -a -G docker ec2-user
$ cat /etc/group |grep docker
docker:x:497:ec2-user
```

ログアウト & 再度ログイン

```bash
$ docker info
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: 17.03.2-ce
Storage Driver: overlay2
 Backing Filesystem: extfs
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host macvlan null overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 4ab9917febca54791c5f071a9d1f404867857fcc
runc version: 54296cf40ad8143b62dbcaa1d90e520a2136ddfe
init version: 949e6fa
Security Options:
 seccomp
  Profile: default
Kernel Version: 4.9.51-10.52.amzn1.x86_64
Operating System: Amazon Linux AMI 2017.09
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 15.67 GiB
Name: ip-hoge-hoge-hoge-hoge
ID: 4AKT:BX72:LWYE:7KFY:ZWX2:TW2I:374J:C7XP:D6QZ:QYHO:RSAC:TKEB
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false
```

# Cloudera Quick Start Docker Image取り込み
以下のドキュメントを参考にDocker Imageを取り込みます。
https://www.cloudera.com/documentation/enterprise/5-6-x/topics/quickstart_docker_container.html

イメージはあらかじめ[cloudera.com](https://www.cloudera.com/)からダウンロードしたものをEC2インスタンスへアップロードしておきます。
※「Downloads > QuickStart VMs > Docker Image」からダウンロード

```bash
# Cloudera Quick Start Dockerイメージ展開
$ tar xzf cloudera-quickstart-vm-*-docker.tar.gz

# Dockerイメージ取り込み
$ docker import - cloudera/quickstart:latest < cloudera-quickstart-vm-*-docker/*.tar
```

# Cloudera Quick Start 起動
Cloudera Quick Startを起動します。

```bash
# 起動
$ docker run --hostname=quickstart.cloudera --privileged=true -t -i -d -p 7180:7180 -p 80:80 -p 8888:8888 -p 3306:3306 -p 10000:10000 cloudera/quickstart:latest /usr/bin/docker-quickstart

# コンテナ情報を調べる
$ docker ps
CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS              PORTS                                                                                                                  NAMES
4ad6c4325d1c        cloudera/quickstart:latest   "/usr/bin/docker-q..."   8 seconds ago       Up 8 seconds        0.0.0.0:80->80/tcp, 0.0.0.0:3306->3306/tcp, 0.0.0.0:7180->7180/tcp, 0.0.0.0:8888->8888/tcp, 0.0.0.0:10000->10000/tcp   agitated_albattani
```

コンテナ情報から、コンテナ側のポートがホスト側のポートにマップされたことが分かります。

|ポート|利用対象|
|---|---|
|80|QuickStart VM ガイドページ|
|3306|MySQL|
|7180|Cloudera Manager|
|8888|Hue|
|10000|Hive|

以下でQuickStart VMのガイドページが表示されます。
http://[EC2インスタンスのEIP]
![image](https://qiita-image-store.s3.amazonaws.com/0/138821/efe3c9e9-2db9-7d7e-d2c0-143ab514cff1.png)

# Cloudera Manager 起動
Cloudera Managerはデフォルトでは起動しないそうなので、下記の通り起動させます。
注意点として、ntpサービスが動いていないとステータス画面でエラーが出るので、事前に起動させておきます。

```bash
# コンソールにログイン
$ docker attach fb4d3b01b00b

# nptサービスが動いていないので、事前に動かす
$ service ntpd start

# Cloudera Managerを起動 (起動には時間が掛かります)
$ /home/cloudera/cloudera-manager --enterprise
[QuickStart] Shutting down CDH services via init scripts...
(略)
Success! You can now log into Cloudera Manager from the QuickStart VM's browser:

    http://quickstart.cloudera:7180

    Username: cloudera
    Password: cloudera

# コンソールから抜けるときはCtrl+P⇒Ctrl+Q
```

無事に起動したら、先ほどdocker psでみた情報を元にマッピングされたポートにアクセスします。
http://[EC2インスタンスのEIP]:7180

情報保証ポリシーに同意します。
![Cloudera Manager Agreement](https://qiita-image-store.s3.amazonaws.com/0/138821/9b51c261-1c96-f4d9-e7bb-c580141cde4e.png)

先程のUsername/Passwordであるcloudera/clouderaでログイン
![Cloudera Manager Login](https://qiita-image-store.s3.amazonaws.com/0/138821/b662a23c-0544-c35e-5d31-971973ceb09a.png)

ホーム画面が表示されました。
![Cloudera Manager Home](https://qiita-image-store.s3.amazonaws.com/0/138821/f07a944e-7d99-c9ba-4204-a919a44c32b6.png)

ステータスにある通り、Hueも起動しているのでログインしてみます。
http://[EC2インスタンスのEIP]:8888
![image](https://qiita-image-store.s3.amazonaws.com/0/138821/d47cb767-2668-2bee-60de-9a94bfcbe869.png)

あとはHueからテーブルを作成したり、データを投入したりして試してみることができます。

# 参考
・[DockerでCloudera Managerを立ち上げる](https://qiita.com/junko_urata/items/7f292cbb8a57b099536b)

・[CDH5版Hiveのインストール手順](https://qiita.com/bwtakacy/items/306afa1b8261f2d4d76e)

・[AWSのEC2でDockerを試してみる](https://qiita.com/yumatsud/items/33bc22f7d8f640a286f4)