HDP SandboxのAmbariをアップグレードする

今回はAmbariについて書きたいと思います。

Ambariは、Hadoopクラスタのプロビジョニングや管理、監視などをしてくれるソフトウェアです。Hadoop自体やそれ以外のコンポーネントのインストールもしてくれますし、設定の管理や、プロセスの開始/停止などもAmbari上でできます。クラスタ系のソフトウェアはインストールや管理が大変なのですが、そこら辺をやってくれるイメージですね。同じようなものとしてはOSSではありませんがClouderaのCloudra Managerがあります。

また、先月(2016/6)に行われた[Hadoop Summit 2016 San Jose](http://hadoopsummit.org/san-jose/ "Hadoop Summit 2016 San Jose")では、Ambariではマーケットプレイス的なUIが実装され、Hadoopクラスタの管理だけではなく、その他のアプリケーション(Jenkinsとか)の管理もできるようにしていくということが発表されたようです。

http://www.slideshare.net/kkitase/japanese-hadoop-summit-2016-san-jose-report/10

では、本題に入っていきます。
現時点(2016/7/20)でのHDP Sandboxの最新版に入っているAmbariのバージョンは2.2.1なのですが、Ambari 2.2.2からMetricsにGrafanaを採用していて使いやすくなっているようです。
なので、Ambariの機能を見ていく前に、今回はHDB SandboxのAmbariを2.2.2へアップグレードをしたいと思います。

# 事前準備

事前準備として、Ambariのadminユーザのパスワードをadminに変更します。

HDP SandboxのVMへには、以下のようにrootユーザでsshで入れます。
初期パスワードはhadoopです。ログインするとパスワードの変更を求められるので適宜変更します。

```
$ ssh root@127.0.0.1 -p 2222
```

次に以下のコマンドを実行してAmbariのadminユーザのパスワードを変更します。
パスワードはadminにします。

```
$ ambari-admin-password-reset
```

また、DBのバックアップと設定ファイル(/etc/ambari-server/conf/ambari.properties)のバックアップも事前準備として必要ですが、HDP Sandboxを入れてから特に何もしていなかったので端折りました。
ちなみに、HDP Sandboxでは、DBとしてPostgreSQLを使っているようです。

# Ambariのアップグレード

Ambariのアップグレードの前に、AmbariのWeb画面からAmbari Metricsを停止します。
adminユーザでAmbariにログインし、左側の「Ambari Metrics」をクリックして「Service Actions」メニューから「Stop」を選択するとAmbari Metricsを停止することができます。

Ambari Metricsの停止が完了したら、Ambari ServerとAmbari Agentを停止していきます。
Ambariでは、Ambari Serverという全体を管理するマスタ的なプロセスと、各ノードにインストールするAmbari Agentがいます。ここら辺の話も機会があれば後で書こうと思います。

Ambari Agentに対するオペレーションは、本来はクラスタ内のすべてのノードで実行する必要がありますが、今回はHDP SandboxのVMなので1回だけ実行することになります。

Ambari Serverの停止

```
$ ambari-server stop
```

Ambari Agentの停止(すべてのノードで実行)

```
$ ambari-agent stop
```

次に、レポジトリファイルを更新します。これもすべてのノードで行う作業です。
以下のコマンドを実行すれば更新されます。

```
$ wget -nv http://public-repo-1.hortonworks.com/ambari/centos6/2.x/updates/2.2.2.0/ambari.repo -O /etc/yum.repos.d/ambari.repo
```

更新後にyumレポジトリのキャッシュをクリアします。

```
$ yum clean all
```

そして、それぞれのコンポーネントをアップグレードします。

Ambari Serverのアップグレード

```
$ yum upgrade ambari-server
```

Ambari Agentのアップグレード(すべてのノードで実行)

```
$ yum upgrade ambari-agent
```

次に、DBのスキーマをアップグレードするために以下のコマンドを実行します。

```
$ ambari-server upgrade
```

最後にそれぞれのプロセスを起動します。

Ambari Serverの起動

```
ambari-server start
```

Ambari Agentの起動(すべてのノードで実行)

```
ambari-agent start
```

これで、Ambari ServerとAmbari Agentのアップグレードが完了しました。


# Ambari Metricsのアップグレード

次にAmbari Metricsのアップグレードを行います。

Ambari Metricsは名前の通り、クラスタ内のMetricsの収集などを行うコンポーネントです。
Ambari Metricsも、全体のメトリクスを収集するMetrics Collectorと、各ノードにインストールするMerics MonitorとHadoop Sinkがいます。ここら辺も機会があれば後で書きたいと思います。

それでは、それぞれをアップグレードしていきます。

Metrics MonitorとHadoop Sinkのアップグレード(すべてのノードで実行)

```
yum upgrade ambari-metrics-monitor ambari-metrics-hadoop-sink
```

Metrics Collectorのアップグレード

```
yum upgrade ambari-metrics-collector
```

アップグレードが完了したらAmbari Metricsをスタートさせます。
停止時とほぼ同様で、左側の「Ambari Metrics」をクリックして「Service Actions」メニューから「Start」を選択するとAmbari Metricsを開始することができます。

Hadoop Sinkをアップグレードしたので、HDFS、YARN、Kafka、HBase、Flume、Stormなどのプロセスの再起動が必要となります。

# Grafanaのインストール

最後にGrafanaをインストールします。

まず、AmbariにMETRICS_GRAFANAというコンポーネントを追加します。
以下のようにcrulコマンドを実行すればOKです。以下のURLの「Sandbox」の部分はクラスタ名になります。今回はHDP SandboxのVMなのでクラスタ名はSandboxになります。

```
curl -u admin:admin -H "X-Requested-By:ambari" -i -X POST http://127.0.0.1:8080/api/v1/clusters/Sandbox/services/AMBARI_METRICS/components/METRICS_GRAFANA
```

次に、対象ホストにGrafanaを追加します。
下記URLの「sandbox.hortonworks.com」にあたる部分にホスト名を指定します。今回はSandboxのVMのホスト名のsandbox.hortonworks.comを指定しています。

```
curl -u admin:admin -H "X-Requested-By:ambari" -i -X POST -d '{"host_components":[{"HostRoles":{"component_name":"METRICS_GRAFANA"}}]}' http://127.0.0.1:8080/api/v1/clusters/Sandbox/hosts?Hosts/host_name=sandbox.hortonworks.com 
```

上記の手順を終えた後に、AmbariのWeb画面で左側の「Ambari Metrics」をクリックすると、下記のようにGrafanaが追加されて「Install Pending...」になっているのが分かります。

<img width="972" alt="grafana_install_pending1" src="https://qiita-image-store.s3.amazonaws.com/0/8576/e309249c-53ed-aa80-18f5-cbcc6af927fa.png">

Grafanaのインストールを始める前に設定変更をします。
同ページの「Configs」タブをクリックして、「General」セクションの「Grafana Admin Password」にGrafanaのデフォルトのパスワードのadmin/adminを指定し「Save」ボタンを押します。

そしてGrafanaをインストールします。

AmbariのWeb画面の上部にある「Host」タブをクリックし、インストールしたホスト名(sandbox.hortonworks.com)をクリックすると、そのホストにインストールされているコンポーネントの一覧が表示されます。その中にGrafana含まれていて、以下のように表示されます。

<img width="561" alt="grafana_install_pending2" src="https://qiita-image-store.s3.amazonaws.com/0/8576/2244251b-dc60-7fd0-7176-13be32c7af7b.png">

この「Install Pending...」ボタンをクリックし「Re-install」を選択すると、Grafanaのインストールが開始されます。そしてインストールが完了したら、同様に「Start」を選択するとGrafanaが起動します。

これでGrafanaのインストールは完了しました。

# VirtualBoxのポートフォワーディングの設定

Grafanaのインストールは完了したのですが、ローカルからGrafanaにアクセスするためにはVirtualBoxのポートフォワードの設定が必要になります。

以下の設定を追加してください。

| 名前 | プロトコル | ホストIP | ホストポート | ゲストIP | ゲストポート |
|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:|
| grafana | TCP | 127.0.0.1 | 3000 | | 3000 |

# GrafanaのWeb画面

ブラウザで http://127.0.0.1:3000/ にアクセスするとGrafanaのWeb画面が表示されます。

<img width="1217" alt="grafana_web" src="https://qiita-image-store.s3.amazonaws.com/0/8576/09f45177-494b-1326-6369-fd6fa16ba6fb.png">

主要コンポーネントのダッシュボードがいくつか用意されています。
ここの詳細についても別の記事で書きたいと思います。

# まとめ

文字がとても多くなってしまいましたが、今回はHDP SandboxのAmbariをアップグレードしました。MetricsをGrafanaを使って見ることができるようになり、かなり使い勝手が良くなったのではないでしょうか。

# 参考文献

http://docs.hortonworks.com/HDPDocuments/Ambari-2.2.2.0/bk_upgrading_Ambari/content/_upgrading_ambari.html