今回、Hortonworks Advent Calendar 2016 12/5の記事としてポストします。
正直、これから学習していこうという身なので、Deepな情報をお伝えする知識はございません。私のように「そんな深い話より、いまインストールでコケてんだけど・・・」という方が何処かに居られると信じて、初心者による初心者のための記事となっております。
この記事で書くこと
- HDP SANDBOX 2.5をEC2上のDockerでrunして、Ambariの起動確認まで
この記事で書かないこと
- HDP SANDBOX 2.5のチュートリアルの進め方、具体的な使い方
そもそも、なぜEC2に
今回、はじめてHadoop Summit Tokyoに参加させていただきました。その中で、Crash Course受講にあたって、SANDBOX環境が必要となりました。当初、mac book pro に入れようかと思ったのですが、ディスクの空き容量もなくて断念しまして、どこかのクラウドを使おうと思った次第で、その際にまとめた手順となっています。
スペック的に問題ない方は、わざわざクラウドを使う必要はないかと思いますので、こちらよりHDP SANDBOXをダウンロードすると良いでしょう。下記の形式で提供されています。ファイル・サイズは10GBとDLするには少し大きいですが。(時々、ダウンロードでエラーになることがあるようです)
- Virtual Box用
- VMware用
- Docker用
- Azure用(ただし、v2.4)
OSとEC2インスタンス
ガイドに記載の、前提条件は以下のとおりです。
- Docker 1.12.1 or Newer
- RAM 8GB
- 30GB 以上の空き推奨
Docker 1.12のマニュアルによれば、CentOS7.x 以上
と記載されていますので、2016年11月現在のAmazon Linuxは避けたほうが無難かもしれませんね。(Redhat6ベースだったと思うので)
今回は AWS Marcketplaceから以下のイメージを使いました。
- CentOS 7 (x86_64) – with Updates HVM
- EBS 100GB
インスタンスタイプはm4.largeを使いました(先日、値下げされて、お安くなりましたね)。東京リージョンでオンデマンド価格は$0.139/h
ですが、検証利用と割り切ってスポットインスタンスならば、$0.03/h
くらいで使えそうですね。(もちろん、高騰することもありますので、、、)
セキュリティグループ
ひとまず私の場合は、 えいやーですべてのトラフィックをマイIPのみから接続許可にしました。ポート毎に制限するのであれば、下記のポートを開ける必要があります。数が多いので、ちょっと大変かもしれませんが、、、。
6080 , 9090 , 9000 , 8000 , 8020 , 42111 , 10500 , 16030 , 8042 , 8040 , 2100 , 4200 , 4040 , 8050 , 9996 , 9995 , 8080 , 8088 , 8886 , 8889 , 8443 , 8744 , 8888 , 8188 , 8983 , 1000 , 1100 , 11000 , 10001 , 15000 , 10000 , 8993 , 1988 , 5007 , 50070 , 19888 , 16010 , 50111 , 50075 , 50095 , 18080 , 60000 , 8090 , 8091 , 8005 , 8086 , 8082 , 60080 , 8765 , 5011 , 6001 , 6003 , 6008 , 1220 , 21000 , 6188 , 22 , 2222
Dcokerエンジンのインストール
Dockerのマニュアルに従って、docker-engineをインストールします。
$ ssh -i 秘密鍵ファイル centos@xx.xx.xx.xx
$ sudo yum update
$ sudo tee /etc/yum.repos.d/docker.repo <<-‘EOF’
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF
$ sudo docker install docker-engine
$ sudo service docker start
Redirecting to /bin/systemctl start docker.service
$ docker version
Client:
Version: 1.12.3
API version: 1.24
Go version: go1.6.3
Git commit: 6b644ec
Built:
OS/Arch: linux/amd64
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
Base Device Size の変更
デフォルトの設定では、docker の Base Device Size は10GBになっているようで、HDPのイメージがデカイのでこのままだとdocker load
で失敗します。ここに辿りつくのに苦労しました。。
$ sudo cp /lib/systemd/system/docker.service /etc/systemd/system/docker.service
$ sudo vi /etc/systemd/system/docker.service
(中略)
ExecStart=/usr/bin/dockerd –storage-opt=dm.basesize=30G
余談:Hotrtonworks Community Connection
今回、docker loadでエラーする原因がまったく解らなくて途方に暮れていたのですが、Hadoop summitでHortonworksのコミュニティ Hortonworks Community Connection(HCC)の存在を知りまして、拙い英語でコミュニティに投げかけたところ、すぐにコメントいただき問題解決にいたりました。何か分からないこと、上手くいかないことなどあれば、HCCを利用すると良いですね。
Docker 再起動
保存したら、dockerを再起動して設定を反映します。docker info
の表示が下記のようになってればOKです。
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
$ sudo docker info
(中略)
Base Device Size: 32.21 GB
HDP SANDBOXイメージのダウンロード
SANDBOXイメージはS3で提供されているようですね。wget
は標準で入ってないので、curl
を使います。
$ curl -O http://hortonassets.s3.amazonaws.com/2.5/HDP_2.5_docker.tar.gz
HDP SANDBOX イメージをロードする
ダウンロードしたイメージを、dockerにloadします。tar.gz
のままでもdocker load
できるようですが、私は事前に解凍しました。
$ gunzip HDP_2.5_docker.tar.gz
$ sudo docker load < HDP_2.5_docker.tar
b1b065555b8a: Loading layer [==================================================>] 202.2 MB/202.2 MB
3901568415a3: Loading layer [==================================================>] 13.85 GB/13.85 GB
Loaded image: sandbox:latest
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
sandbox latest a4150ee4e70b 5 weeks ago 13.96 GB
HDP SANDBOXの起動
Gitからstartスクリプトを入手して実行します。$TERM
の警告メッセージは無視します。
$ sudo bash start_sandbox.sh
Waiting for docker daemon to start up:
d761ac078bc5713e2cdb52bcd1432d229ea3b4889ef5f66cf805e296d1e23664
Starting mysql [ OK ]
Starting Flume [ OK ]
Starting Postgre SQL [ OK ]
Starting name node [ OK ]
Starting Oozie [ OK ]
Starting Zookeeper nodes [ OK ]
Starting Ambari server [ OK ]
Starting data node [ OK ]
Starting Ranger-admin [ OK ]
Starting Ambari agent [WARNINGS]
tput: No value for $TERM and no -T specified
tput: No value for $TERM and no -T specified
Safe mode is OFF
Starting Ranger-usersync [ OK ]
Starting NFS portmap [ OK ]
Starting Hdfs nfs [ OK ]
Starting Hive server [ OK ]
Starting Hiveserver2 [ OK ]
Starting Node manager [ OK ]
Starting Yarn history server [ OK ]
Starting Webhcat server [ OK ]
Starting Spark [ OK ]
Starting Mapred history server [ OK ]
Starting Resource manager [ OK ]
Starting Zeppelin [ OK ]
さぁ、HDPを使ってみよう
http://IPアドレス:8888
にブラウザでアクセスし、Launch Dashboard
をクリック。
Anbariのログイン画面が表示されますので、defaultのログインユーザ、パスワードでログインします。
Anbariのダッシュボードが表示されたら、完了です。
あとはチュートリアルに従って、いろいろ試してみてください!
停止方法
SANDBOXを停止するときは、Ambariから操作します。
画面上部のHosts
タブを開いて、対象のホストをクリックします。
Host Actions > Stop All Components
をクリックします。
すべてがStopしたら停止完了です。
再始動方法
dockerデーモンが動いている場合は、$ sudo systemctl start docker
は不要です。
start_sandbox.sh
を実行すれば、SANDBOX docker イメージを再始動してくれます。
$ sudo systemctl start docker
$ sudo bash start_sandbox.sh
以上、実は11月にHORTONWORKS DATA CLOUD FOR AWSがリリースされているので、AWSで使うならそっちのほうが手っ取り早いかもしれませんが、HCCなどを通じて無事にインストール出来たことが嬉しかったので記事にしてみました。いずれは多くの方の参考になるような記事が書けるよう、これからしっかり勉強します!
コメントを残す