Macに15分でHadoop,Hive環境を作る (Docker)

# はじめに
OSバージョン： Mac OS 10.14.6 (Mojave)

久しぶりにHiveを触る必要があり、簡単に環境を用意する方法を調べてみました。
2017年の記事 [Macに10分でHadoop,Hive環境を作る](https://qiita.com/zaburo/items/6086ded8cbb43e2ddd39 "Macに10分でHadoop,Hive環境を作る") という方法もあるようですが、最近はコンテナが主流なので、OSにNativeには導入せず、Docker上に入れてみることにします。

今回使ったのはこちら。

QuickStarts for CDH 5.13
https://www.cloudera.com/downloads/quickstart_vms/5-13.html

環境構築にかかった時間は15分くらいです。
（サイト登録とダウンロード時間は含まず。HiveコンソールでHiveQLが叩けるようになるまで）

DockerなのでMacOSに限らず、Windowsでも環境構築できます。

# 事前準備
事前準備として、Docker Desktop for Macを入れておきます。
https://docs.docker.com/docker-for-mac/install/

親切な記事を書いている方もいらっしゃいます。こちらも参考に。
[DockerをMacにインストールする](https://qiita.com/kurkuru/items/127fa99ef5b2f0288b81 "DockerをMacにインストールする")

使用したdockerのバージョンはこちらです。

```
% docker --version
Docker version 19.03.5, build 633a0ea
```

Dockerは予め起動しておきます。

# Dockerイメージのダウンロード
1. 上記のサイトにアクセスし、Platformで "Docker Image" を選択して、GET IT NOWをクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397277/65747740-7330-1381-aa2a-5e5ab61b5e58.png)
2. 必要事項を記入してContineをクリックする。一番上の目的は、今回は "For self-learning"を選択しました。下の方のチェックボックスはチェックせず。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397277/c96b4b2e-ac0f-9125-d499-600188811535.png)
3. ライセンス条項を確認し、チェックボックスにチェックしてSubmitをクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397277/54a8a2da-d136-6edf-080f-177f79999d15.png)
4. ダウンロードが自動的に開始される。開始されなかったら Click Here をクリックすればOK。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397277/650b2e71-3b71-b3d8-b0a1-86cb60131985.png)

4.7GBくらいあるので、しばらく待つ。
ダウンロードしたファイルのファイル名は、cloudera-quickstart-vm-5.13.0-0-beta-docker.tar.gz。

# 導入と起動
導入手順の詳細は、こちらに載っています。
https://docs.cloudera.com/documentation/enterprise/5-13-x/topics/quickstart_docker_container.html

1. Mac OS標準の解凍ツールでtar.gzを解凍(単純にFinder上でダブルクリック)すると、tarファイルができる。Windowsの場合は、7-zipを使うと良いとのこと。

```
% ls
cloudera-quickstart-vm-5.13.0-0-beta-docker.tar
```

2.docker importする。これには7分位かかりました。

```
% docker import cloudera-quickstart-vm-5.13.0-0-beta-docker.tar
```

3.docker imagesで、イメージIDを確認

```
% docker images
REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
<none>                         <none>              d28a1384e74e        13 minutes ago      7GB
```

4.docker runでイメージを起動する。
"d28a1384e74e"は上記のイメージID。-dをつけてバックグラウンドで動かしました。

```
% docker run --hostname=quickstart.cloudera --privileged=true -t -i -p 8888 -d d28a1384e74e /usr/bin/docker-quickstart
```

5.docker psで起動状態とコンテナIDを確認する。

```
% docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                     NAMES
e320a15be1d9        d28a1384e74e        "/usr/bin/docker-qui…"   2 minutes ago       Up 2 minutes        0.0.0.0:32768->8888/tcp   nifty_almeida
```

起動には数分かかりました。

# ログインしてHiveコンソールに入る
1.docker attachでコンソールに入る。
"e320a15be1d9"はコンテナIDで、先程docker psで調べたもの。

```
 % docker attach e320a15be1d9
 [root@quickstart /]#
```

ちなみに元のMacOSに戻るには、Ctrl+p, Ctrl+qを押せばよい。

```
[root@quickstart /]#  <= Ctrl+p, Ctrl+qを押す
read escape sequence
 %
```

2.Hiveコンソールを立ち上げる。QuickStartにはHiveも入っており、コンテナ起動時に起動もしているので、hiveと打つだけ。

```
[root@quickstart /]# hive


Logging initialized using configuration in file:/etc/hive/conf.dist/hive-log4j.properties
WARNING: Hive CLI is deprecated and migration to Beeline is recommended.
hive>
```

数年前は環境構築でここまでたどり着くのに色々苦労した記憶があります。。。Docker様、素晴らしいです。

ここから先は、CSVファイルを作り、hdfsにputして入れて、Externalテーブルを作って、上記のHiveコンソール上でクエリーをガシガシ打って行きます。

以上です。