Cloudera Director のインストール方法

原文: http://www.cloudera.com/documentation/director/latest/topics/director_get_started_aws.html



# システム要件

Cloudera Director は VPC必須。
Cloudera Director はデフォルトで無制限のアウトバウンドの接続を必要とする。
必要があれば、プロキシサーバを経由するか、必要なリポジトリのローカルミラーを使うことができる。
 
Cloudera Director を使う場合、以下の権限を持つ IAM が必須。
http://www.cloudera.com/documentation/director/latest/topics/director_iam_methods.html

Cloudera Director は専用の EC2 インスタンスが必要。
Cloudera Director は、自身が作成するインスタンスのプライベートIPアドレスにアクセスできなければいけないため、Cloudera Director サーバを、これから作成する CDH クラスタと同じサブネットにインストールすることを推奨する。
Cloudera Director は最低 8GB ストレージを必要とする。
 
デフォルトDBは組み込みH2データベースだが本番環境では MySQL 推奨。
H2データベースは /var/lib/cloudera-director-server/state.h2.db に存在する。バックアップを忘れずに。
 
## Director Server インスタンス要件
* 2 CPU
* 3.75 GB
* 8 GB ストレージ

### 推奨インスタンス
* AWS: c3.large / c4.large

推奨はこのインスタンスサイズだが、試しに使う程度ならもっと小さくても動く。筆者は t2.large で稼働させている。

## Cloudera Manager  / CDH インスタンス要件

### Cloudera Manager

* AWS: m4.xlarge / m4.4xlarge

m4.xlarge あればお試しで動かすには十分と思う。

### CDH

この辺読んで http://www.slideshare.net/Cloudera_jp/hadoopcloudera-director-20-rhcj2016/18

お試しで動かすなら以下のインスタンスタイプがオススメ

* m4.xlarge (vcpu 4, メモリ 16 GB, EBS のみ): S3 に対して直接ImpalaやSparkを実行するのならこれで十分
* r3.large (vcpu 2, メモリ 15.25 GB, ストレージ SSD 1 * 32GB) : HDFS の速度を簡単に実感するのに最適

大量のデータを使って本格的なPoCを行うならdタイプ等の大きなインスタンスを用意すること。


# 環境構築の流れ

* AWS環境をセットアップする
* VPCをセットアップする
* SSHキーペアを作成する
* AMIを選択する
* Cloudera Director 用 EC2 インスタンスを起動する
* EC2 用 SOCKS プロキシを設定する
* EC2 インスタンスに Cloudera Director サーバをインストールする
* Cloudera Manager と CDH を AWS 上にデプロイする

# VPCをセットアップする

* AWSマネジメントコンソールにログインして、目的となるリージョンにいるかどうか確認する。
* ネットワークの選択で VPC を選択。
* Start VPC Wizard を選択する。もしこのボタンが見つからない場合は VPC ダッシュボード をクリックする。
* 必要な VPC を選択する。
* 最も簡単な方法は VPC with Single Public Subnet を選択すること。
* 必要な項目を入力して Create VPC を選択する。
* VPC名及びサブネット名は適宜入力すること。そうしないと誰のVPC、サブネットかわかりづらくなる。（例：◯◯◯-vpc, ◯◯◯-snet）

## サブネットを作成する

## セキュリティグループを設定する

## 新しいセキュリティグループを作成する

# SSHキーペアを作成する

# AMIを選択する

## 利用可能なAMIを探す

# Cloudera Director 用 EC2 インスタンスを起動する

* EC2 -> Launch Instance -> AMI を選択して Select
* インスタンスを選択。 c3.large / c4.large を推奨。
* Next: Configure Instance Details をクリック。

## Next: Configure Instance Details

* 正しい VPC とサブネットを選択。
* クラスタランチャーはインターネットアクセスを必要とするので、 Auto-assign Public IP リストから Enable を選択する。
* デフォルトのシャットダウン動作は Stop にする。
* Protect against accidental termination をチェックする。
* (Optional) IAM ロールをクリックして IAM ロールを選択する。

* Next: Add Storage を選択する。Cloudera Director は最低 8GB ストレージを必要とする。
* Next: Tag Instance をクリックする。 「Name = インスタンス名」
* Next: Configure Security Group をクリックする。Create a new security group あるいは Select an existing security group を選択する。セキュリティグループの設定は上述のものと同じ。
* Review and Launch をクリックする。確認の後、Launch を押す。
* キーペアのプロンプトにおいて、 Choose an existing key pair を選択し、「SSHキーペアを作成する」で作成したキーペアを選択する。 あなたが秘密鍵にアクセスできるというチェックボックスをクリックする。
* Launch Instances をクリックする。
* 起動後、パブリックIPアドレスとプライベートIPアドレスを記録する。

# EC2 用 SOCKS プロキシを設定する

## PACファイルの作成

以下のPACファイルを作成する。


```
function regExpMatch(url, pattern) {   
  try { return new RegExp(pattern).test(url); } catch(ex) { return false; }   
}
   
function FindProxyForURL(url, host) {
    // Important: replace 172.31 below with the proper prefix for your VPC subnet
    if (shExpMatch(url, "*172.31.*")) return "SOCKS5 localhost:8157";
    if (shExpMatch(url, "*ec2*.amazonaws.com*")) return 'SOCKS5 localhost:8157';
    if (shExpMatch(url, "*.compute.internal*") || shExpMatch(url, "*://compute.internal*")) return 'SOCKS5 localhost:8157';
    if (shExpMatch(url, "*ec2.internal*")) return 'SOCKS5 localhost:8157';
    return 'DIRECT';
}
```

## SwitchySharp のセットアップ

* Chrome App の Proxy SwitchySharp をインストールする。
* SwitchySharp Options 内で、 Proxy Profiles タブをクリックして以下の操作を行う。
* Profile Name フィールドに AWS-Cloudera と入力する。
* Automatic Configuration をクリックする。
* Import PAC File をクリックして、先ほど作成したPACファイルをインポートする。
* Save をクリックする。
* General タブをクリックして以下の操作を行う。
* Quick Switch をクリックする。
* Direct Connection と AWS-Cloudera をドラッグして Cycled Profiles エリアに投入する。
* Startup Profile を Direct Connection に設定する。
* Save をクリックする。

## SOCKS プロキシをSSH に設定する

* 以下のコマンドで、SOCKSを使って SSH 接続が可能。

```
ssh -i <key-file.pem> -CND 8157 ec2-user@instance_running_director_server
```

オプションの意味は以下の通り。

* -C: 圧縮の設定
* -N 接続を確立したらコマンド実行の表示を省略
* -D 8157: SOCS 5 プロキシをポート番号に設定

注: PACファイルを使うなら必ず 8157 ポートを使うこと。


# EC2 インスタンスに Cloudera Director サーバをインストールする

Cloudera Director は、自身が作成するインスタンスのプライベートIPアドレスにアクセスできなければいけないため、Cloudera Director サーバを、これから作成する CDH クラスタと同じサブネットにインストールすることを推奨する。
以下の操作には root 権限あるいは sudo 権限が必要。

## RHEL 7 / CentOS 7

* ec2-user でインストール先の EC2 インスタンスにアクセスする。
* VPN あるいは AWS Direct Connect があれば、プライベートIPアドレスにアクセスする。そうでない場合はパブリックIPアドレスにアクセスする。
* サポートバージョンの Oracle JDK をインストールする。
* 以下のコマンドを使って Cloudera Director をダウンロードする。

```
sudo curl "http://archive.cloudera.com/director/redhat/7/x86_64/director/cloudera-director.repo" \
-o /etc/yum.repos.d/cloudera-director.repo
```

以下のコマンドで Cloudera Director をインストールする。 

```
yum install cloudera-director-server
```

Cloudera Director を起動する。 

```
service cloudera-director-server start
```

ファイアウォールを停止する。 

```
sudo systemctl disable firewalld
sudo systemctl stop firewalld
```

## RHEL 6 / CentOS 6

## Ubuntu

# Cloudera Manager と CDH を AWS 上にデプロイする

Web ブラウザを開いて Cloudera Director のインスタンスにアクセスする。 

```
http://<Cloudera Director の IPアドレス>:7189/
```

* Cloudera Director のログインスクリーンで、ユーザ名/パスワードを admin/admin で入力する。
* Welcome スクリーンで Let's get started をクリックする。ウィザードが開かれて、環境の追加、Cloudera Manager の追加、CDH クラスタの追加ができるようになる。

## 環境の追加

Add Environment スクリーンで以下の操作を行う。

* Environment Name フィールドに環境名を入力する。
* Cloud Provider から Amazon Web Services (AWS) を選択する。
* Access key ID と Secret access key フィールドに AWS credential を入力する。
* EC2 region フィールドで、Cloudera Director インスタンスが稼働しているリージョンと同じものを選択する。
* SSH Credentials セクションで以下を入力する。
* Username に ec2-user を入力する。
* 「Cloudera Director 用 EC2 インスタンスを起動する」で作成した秘密鍵を登録する。
* Continueをクリックする。

## Cloudera Manager の作成

* Add Cloudera Manager スクリーンで以下を入力する。
* Cloudera Manager name フィールドに Cloudera Manager のデプロイメント名を入力する。
* Instance Template フィールドで、 Create New Instance Template を選択する。

### インスタンステンプレートの作成

Instance Template モーダルスクリーンで、以下を入力する。

* Instance Template name フィールドにテンプレート名を入力する。
* Instance type フィールドに、 m4.large / m4.xlarge を入力する。
* Image (AMI) ID フィールドに、「Cloudera Director 用 EC2 インスタンスを起動する」で選択した AMI を入力するか、同一 OS の他の AMI を選択する。
* Security group IDs フィールドに、「新しいセキュリティグループを作成する」で作成したセキュリティグループIDを入力する。
* VPC subnet ID フィールドに、「サブネットを作成する」で作成したVPCサブネットIDを入力する。
* Save changes をクリックする。

### Cloudera Manager の作成(続き)

* Add Cloudera Manager スクリーンで、 Cloudera Manager Configurations をクリックする。
* Cloudera Manager Configurations モーダルスクリーンで、以下を設定する。
* Scope フィールドで以下を入力する。
* Host Monitor を選択し、Name / Value として firehose_heapsize / 1073741824 を追加する。
* Service Monitor を選択し、Name / Value として firehose_heapsize / 1073741824 を追加する。
* Save Changes をクリックする。
* Add Cloudera Manager スクリーンで、Continue をクリックする。
* Confirmation プロンプトで、OK をクリックする。

## クラスタの作成

* Add Cluster スクリーンで以下を入力する。
* Cluster name フィールドにクラスタ名を入力する。
* Version フィールドで CDH のバージョンを選択する。
* Services セクションで、インストールしたいサービスを選択する。
* Instance groups エリアで、そのグループのための新しいテンプレートを作成し、必要な分だけのインスタンス数を入力する。

## 最終確認

* Continue をクリックする。
* Confirmation プロンプトで、OK をクリックすると、Cloudera Director はステータススクリーンを表示する。
* クラスタが準備完了になったら、Continue をクリックする。