Cloudera QuickstartでImpala Kuduが使えるようになるまでにしたこと

# 1.はじめに
今回はを予めClouderaManager、及びCDHの環境が構築されたdockerイメージである`cloudera/quickstart`を使用してkuduの構築を行う。
ただし試行錯誤した末に構築できたものなので、少々余分な設定があると思われる。

# 2.dockerイメージのダウンロードと起動

①Dockerイメージのダウンロード

	$ docker pull cloudera/quickstart:latest  

②Dockerコンテナのバックグラウンド起動

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

③Dockerコンテナへ接続

	$ docker exec -it cloudera bash

# 3.kuduサービス追加の事前設定

これまではホストOS上でDockerコマンドを使用していたが、ここからはコンテナ上の操作となる。

①kuduのrepoファイルを取得

	cd /etc/yum.repos.d/
	curl -O http://archive.cloudera.com/beta/kudu/redhat/6/x86_64/kudu/cloudera-kudu.repo

②kuduのインストール

	sudo yum install kudu -y

③kuduのCSD(Custom Service Descriptor)を追加
CSDはClouderaMangerのアドオンに必要なファイルのこと。

	cd /opt/cloudera/csd
	curl -O http://archive.cloudera.com/beta/kudu/csd/kudu-latest
	
`jar`の拡張子を付与する。
**※拡張子を付与しないと何故かClouderaManagerに表示されない。
latest以外は`jar`の拡張子があるのでそれを取得してもよい。
ちなみに今現在の最新版は`0.10`である。**

	mv kudu-latest kudu-latest.jar


clouderaユーザが使用できるためにとりあえず777で権限付与しておく。

	chmod 777 kudu-latest.jar

④kudu用ディレクトリ作成
kuduで必要になるMasterServer、TabletServer用のディレクトリを作成し、権限を付与する。

	cd /opt

	mkdir fs_wal_dir_master fs_data_dirs_master fs_wal_dir_tablet fs_data_dirs_tablet
	
	chmod 777 fs_wal_dir_master fs_data_dirs_master fs_wal_dir_tablet fs_data_dirs_tablet

⑤NTPの設定
KuduはMasterServerをNTPサーバにして、TabletServerと時刻同期する必要がある。Kuduは時刻に相当シビアであり、ずれるとすぐにKuduのサービスがダウンとなる。

	sudo yum -y install ntp

日本標準時間に設定する。

	sudo ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime


自分自身をNTPサーバの頂点にするために、元のNTP接続先はコメントにし、`server 127.127.1.0`を追加設定する。

```bash:/etc/ntp.conf
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server 127.127.1.0
```

NTPサーバを起動する。

	sudo service ntpd start


正しく時刻同期できているか確認する。`ntpq -p`コマンドの結果でLOCALの左に*があればOK。

	# ntpq -p
	     remote           refid      st t when poll reach   delay   offset  jitter
	==============================================================================
	*LOCAL(0)        .LOCL.           5 l    2   64    1    0.000    0.000   0.004

⑥impala-kuduのインストール

元のimpalaサービスをアンインストールする。

	yum remove impala impala-catalog impala-server impala-shell impala-state-store impala-udf-devel -y


impala-kuduのrepoファイルを取得する。

	cd /etc/yum.repos.d/
	curl -O http://archive.cloudera.com/beta/impala-kudu/redhat/6/x86_64/impala-kudu/cloudera-impala-kudu.repo

impala-kuduをインストールする。

	yum install impala-kudu impala-kudu-catalog impala-kudu-debuginfo impala-kudu-server mpala-kudu-shell impala-kudu-state-store impala-kudu-udf-devel -y


⑦ClouderaMangerの起動

	/home/cloudera/cloudera-manager --express --force

結構時間がかかる。

**※先にClouderaManagerを起動していた場合は、`service cloudera-scm-server restart`でサービス再起動するだけでよい。**

**下記の結果が出力されればClouderaMangerの起動完了**
![kobito.1472740286.560109.png](https://qiita-image-store.s3.amazonaws.com/0/138447/70f860bd-0db4-2e89-5899-33a473d3076f.png "kobito.1472740286.560109.png")

# 4.ClouderaManagerからkuduサービスの追加

①ブラウザを起動してClouderaManagerに接続
事前にホストOS側で`docker ps`コマンドから、コンテナのポート番号7180にマッピングされたホストOSのポート番号を確認する。

	$ docker ps
	CONTAINER ID        IMAGE                        COMMAND                  	CREATED             STATUS              PORTS                                                                     	NAMES
	02493a6f70d4        cloudera/quickstart:latest   "/usr/bin/docker-	quic"   15 hours ago        Up 15 hours         0.0.0.0:32806->80/	tcp, 0.0.0.0:32805->7180/tcp, 0.0.0.0:32804->8888/tcp   cloudera

上記結果からポート番号`32805 `がホスト側にマッピングされているため、ブラウザを起動し`http://localhost:32805`へ接続すると下記画面が表示される。
![kobito.1472740658.178790.png](https://qiita-image-store.s3.amazonaws.com/0/138447/714a6649-67ea-372b-7bee-8144372a64ce.png "kobito.1472740658.178790.png")

ユーザ名とパスワードは`cloudera`を入力してログインする。

②クラスタにkuduサービスを追加

- ClouderaManagerのトップ画面が表示されるため、`サービスを追加します`を選択する。
![スクリーンショット 2016-09-01 23.46.07.png](https://qiita-image-store.s3.amazonaws.com/0/138447/8bff32f7-99f5-10fe-c7bc-53159eb3cc96.png "スクリーンショット 2016-09-01 23.46.07.png")

  
- `Kudu (Beta)`のラジボタンにチェックを入れ、`続行`を選択する
![スクリーンショット 2016-09-02 0.16.44.png](https://qiita-image-store.s3.amazonaws.com/0/138447/9102ed01-9b9d-ba6e-0257-e5e50dbc1abd.png "スクリーンショット 2016-09-02 0.16.44.png")

- `Master`、`Tablet Server`ともに、`quickstart.cloudera`をを選択し、`続行`を選択する。

![スクリーンショット 2016-09-02 0.19.01.png](https://qiita-image-store.s3.amazonaws.com/0/138447/8e5eef7e-a7f2-05c0-e1f6-5fc320ec5abe.png "スクリーンショット 2016-09-02 0.19.01.png")

- 各テキストボックスに事前に作成したディレクトリパスである下記設定を入力し、`続行`を選択する。  


| fs_wal_dir | fs_data_dirs | fs_wal_dir | fs_data_dirs |
|---|---|---|---|
| /opt/fs_wal_dir_master | /opt/fs_data_dirs_master | /opt/fs_wal_dir_tablet | /opt/fs_data_dirs_tablet |



![kobito.1472379647.702280.png](https://qiita-image-store.s3.amazonaws.com/0/138447/a7c6c459-08f9-0b0a-b7b8-168eb3ebf201.png "kobito.1472379647.702280.png")

![kobito.1472379706.608948.png](https://qiita-image-store.s3.amazonaws.com/0/138447/ffcdfb8f-a1c6-13e5-d72c-988a51915a7b.png "kobito.1472379706.608948.png")


![スクリーンショット 2016-09-05 0.30.28.png](https://qiita-image-store.s3.amazonaws.com/0/138447/c8429a13-8d2f-5ea0-b64f-c036ff9b7226.png "スクリーンショット 2016-09-05 0.30.28.png")

# 5.impalaサービスの削除と追加
①ClouderaManagerからimpala-kuduでない元のimpalaサービスを削除する。
**(※削除する前に`Hue`の削除が求められるので先に、`Hue`を削除しておく)**

②ClouderaManagerからimpalaサービスを追加する。
**(※特にサービス名称が`impala-kudu`にはならないので注意)**

③Hueを使用する場合、Hueサービスを追加する。

これでkuduを使用したimpalaテーブルが作成できるので、Hueやimpala-shell等から確認を行う。