Apache Ambari でクラスタ構築

こちらの記事の続きになります。
[Apache Ambari を Docker でインストール](https://qiita.com/blueskyarea/items/dfc86531acc14638f839)

Ambari サーバーのコンテナにログインしているものとします。
#### 事前準備
##### ssh のインストール
Ambari では各ノードへのアクセス時に ssh コマンドを使用するため、インストールしておきます。
（Docker イメージ作成時にインストールしておいた方がよかった）

```bash
yum -y install openssh-server
yum -y install openssh-clients
# パスワードなしで接続できるようにしておきます
ssh-keygen -q -N "" -t dsa -f /etc/ssh/ssh_host_dsa_key
ssh-keygen -q -N "" -t rsa -f /etc/ssh/ssh_host_rsa_key
ssh-keygen -q -N "" -t rsa -f /root/.ssh/id_rsa
cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
# ssh サービスを起動します
systemctl start sshd.service
```

##### https://[hostname]:8440 is not reachable の回避
このままセットアップを続けていくと、Ambari でのクラスタの登録時に以下のようなエラーに出くわす可能性があります。

```bash
INFO 2019-MM-dd 02:07:50,730 NetUtil.py:70 - Connecting to https://host01.blueskyarea:8440/ca
ERROR 2019-MM-dd 02:07:50,735 NetUtil.py:96 - EOF occurred in violation of protocol (_ssl.c:618)
ERROR 2019-MM-dd 02:07:50,735 NetUtil.py:97 - SSLError: Failed to connect. Please check openssl library versions. 
Refer to: https://bugzilla.redhat.com/show_bug.cgi?id=1022468 for more details.
WARNING 2019-MM-dd 02:07:50,736 NetUtil.py:124 - Server at https://host01.blueskyarea:8440 is not reachable, sleeping for 10 seconds...
```

この状況を避けるため、以下の対応しておきます。
<b>certificate validation の無効化</b>

```bash
vi /etc/python/cert-verification.cfg
# -> verify=diable
```

<b>2. ambari-agent のコンフィグ設定</b>

```bash
vi /etc/ambari-agent/conf/ambari-agent.ini
# -> [security]
# force_https_protocol=PROTOCOL_TLSv1_2
```

#### クラスタ構築を開始する
##### ambari サーバースタート
ambari サーバーをスタートします。

```bash
[root@host01 /]# ambari-server start
Using python  /usr/bin/python
Starting ambari-server
Ambari Server running with administrator privileges.
Organizing resource files at /var/lib/ambari-server/resources...
(中略）
```

##### サインイン & Install Wizard 開始
起動後、http://[hostname or ipaddress]:8080/ にアクセスし、サインインします。
![ambari-login.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63951/8800ec3e-553b-f213-55c8-ead890701a55.png)

構築を開始します。"Launch Install Wizard" をクリックします。
![ambari-start.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63951/a94ef007-7b50-a5ad-b5ca-4451306c2aae.png)

##### クラスタ命名
好きなクラスタ名を付けます。（ここでは、MyCluster）
![ambari-cluster-name.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63951/8e60cd80-ebfd-8c40-54d9-e21c46ad58b9.png)

##### HDPバージョン選択
せっかくなので、ここで選べる最新版を選択します。
※そもそもインストールしたHDPのバージョンがこの執筆時点での最新ではないです
パブリックリポジトリからソフトウェアをインストールするため、"Use Public Repository"が選択されている状態で次に進みます。

![ambari-select-version.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63951/8aaafc87-87ee-a88d-3a8e-5d12ed2513e5.png)

##### インストール対象サーバーのホスト名および、秘密鍵の設定
とりあえず、1台構成でチャレンジしてみたいと思います。
host01.blueskyarea
秘密鍵は直接貼り付けています。
![ambari-install-option.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63951/4d8dcdc4-d322-31ea-4793-79a73bb29fba.png)

インストールが開始されたようです。
![ambari-installing.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63951/0632a988-a514-d022-5456-3810d3507be3.png)

しかしながら、失敗してしまいました。
![ambari-confirm-failure.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63951/44e0880c-90f3-3c6e-7fd3-d55e5cec933d.png)

##### エラー対応
ambari-agent のログを見てみると、サーバーへの接続に失敗しているようです。

```bash
# cat /var/log/ambari-agent/ambari-agent.log
->
INFO 2019-MM-dd 13:14:10,449 NetUtil.py:70 - Connecting to https://host01.blueskyarea:8440/ca
ERROR 2019-MM-dd 13:14:10,466 NetUtil.py:96 - EOF occurred in violation of protocol (_ssl.c:618)
ERROR 2019-MM-dd 13:14:10,466 NetUtil.py:97 - SSLError: Failed to connect. Please check openssl library versions. 
Refer to: https://bugzilla.redhat.com/show_bug.cgi?id=1022468 for more details.
WARNING 2019-MM-dd 13:14:10,466 NetUtil.py:124 - Server at https://host01.blueskyarea:8440 is not reachable, sleeping for 10 seconds...
```

このエラーへの対策は、先に実施した ”certificate validation の無効化” で行ったはずですが、それだけでは足りなかったようです。
/etc/ambari-agent/conf/ambari-agent.ini を開き、[security]の項に以下の1行を追加します。

```bash
[security]
(中略)
force_https_protocol=PROTOCOL_TLSv1_2
```

ambari-agent を再起動します。

```bash
ambari-agent restart
Restarting ambari-agent
(中略)
```

Retry Failed ボタンをクリックしてリトライさせると、今度は Success が出ました。
![ambari-confirm-success.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63951/3347f380-0336-44a2-4f83-dd4c3628a0dd.png)

##### サービスの選択
インストールしたいサービスを選択します。
HDFS と YARN(+MapReduce2)だけ選択しましたが、Zookeeper と Ambari Metrics も必須ということで強制的に選択されました。

##### Master のアサイン
これらのサービスの Master が1つのホスト（正確には Docker のコンテナ)にインストールされることになります。
※個人のローカルPCには負担が大きそうです
![ambari-masters.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63951/e3a2a6ab-8bf3-c8b7-1f66-f2f30f5ed66f.png)

##### Slave and Client のアサイン
Slave と Client も1つのホストにインストールされることになります。
※ますます個人のローカルPCには負担が大きそうです
![ambari-slave.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63951/97bee446-fba7-117d-68fd-8d22d5a86e68.png)

##### Customize Service
サービスによって、admin 用のパスワードの設定を要求されますので、適当に設定します。
![ambari-customize.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63951/fd070bfc-b8b1-164c-f456-a1d838944036.png)

##### Review
Review 画面が表示されますが、特に問題はなければ、Deploy ボタンをクリックします。
![admin-review.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63951/4f01338a-82e1-6045-38c3-01c2bc8286a5.png)

##### Install, Start and Test
各サービスのインストールが開始されました。
![ambari-install-service.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63951/1538fe7c-4f5f-f918-9044-af13d9504962.png)

完了までに一時間ほど掛かりました。
![ambari-install-service2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63951/18c886da-bec9-9c06-a795-1bc24a7a5d88.png)
![ambari-summary.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63951/1dc8d0c6-1865-0431-276b-5b39d0c80bbb.png)
ダッシュボードが起動されました。
![ambari-dashboard2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63951/16f50898-8753-c85e-0403-0af9dc676f71.png)

##### HDFS へのアクセス
HDFS にアクセスしてみます。

```bash
[root@host01 ~]# hdfs dfs -ls /
Found 7 items
drwxrwxrwx   - yarn   hadoop          0 2019-12-29 14:17 /app-logs
drwxr-xr-x   - yarn   hadoop          0 2019-12-29 14:05 /ats
drwxr-xr-x   - hdfs   hdfs            0 2019-12-29 14:06 /hdp
drwxr-xr-x   - mapred hdfs            0 2019-12-29 14:05 /mapred
drwxrwxrwx   - mapred hadoop          0 2019-12-29 14:07 /mr-history
drwxrwxrwx   - hdfs   hdfs            0 2019-12-29 14:08 /tmp
drwxr-xr-x   - hdfs   hdfs            0 2019-12-29 14:04 /user
```

なんとか動作してくれているようです。
手間のかかる HDFS のインストールを Ambari を使用することで簡単に実現できました。
と言いたいところですが、Ambari のインストールからセットアップまでが個人的にはエラー続出で大変でした。
あと、PCスペックの懸念から、最小限のサービスしか起動していません。
本来の目的である HiveやSparkなどを試すことになった場合に果たして動作可能であるのか、引き続き試行していくつもりです。