HDF 3.0をEC2にインストールしよう
20 Jun 2017 | HDF, NiFiHortonworks DataFlow (HDF) 3.0がリリースされました!Sandboxもダウンロード可能なのですが、使用中のマシンの容量がカツカツなので、EC2上にHDF 3.0をインストールすることにしました。この記事では、公式ドキュメントのInstalling an HDF Clusterに従ってインストールしたコマンドの履歴をまとめています。
第一章 Ambariのインストール
AMIはcentos-7.2-hvm - ami-11f8bb71を利用しました。
Spotインスタンスを使ってコスト削減します。 1台だけでなるべく安く全部まかないたいので、以下のインスタンスタイプが良さげです。 インストールには時間がかかるのでインストール時にはi3.xlargeで実行して、AMIを作っておいて、その後r3.largeで利用する予定です。
Type | vCPU | RAM | Disk | NW | Price | Discount |
---|---|---|---|---|---|---|
r3.large | 2 | 15 | 1 x 32 | Moderate | $0.0262 | 86% |
i3.xlarge | 4 | 30.5 | 1 x 950 | Up to 10 Gigabit | $0.038 | 89% |
色々とインストールするのでEBSルートデバイスのサイズを50GBに増やしときました。
インスタンスが起動したら、ローカルPCのhostsにPublic IPを記入しておきます。今後のホスト名は0.hdf.aws.mine
で操作します:
sudo vi /etc/hosts
# 次のエントリを追加:
<public IP> 0.hdf.aws.mine
# 接続確認
ssh centos@0.hdf.aws.mine
パスワードレスSSH
今回は一つのサーバしか使わないので、自身にSSHログインできるようにしました。 以降の操作はEC2インスタンス上で実行します。
centosユーザで:
ssh-keygen
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# 確認
ssh centos@localhost
NTP
sudo yum install -y ntp
sudo systemctl enable ntpd
sudo systemctl start ntpd
Hosts
# hostに次のエントリを追加:
sudo vi /etc/hosts
<private IP> 0.hdf.aws.mine
# host名設定
sudo hostname 0.hdf.aws.mine
SELinux, umask
setenforce 0
umask 0022
sudo sh -c 'echo umask 0022 >> /etc/profile'
Ambariリポジトリをダウンロードしてインストール
sudo su -
wget -nv http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.5.1.0/ambari.repo -O /etc/yum.repos.d/ambari.repo
yum install -y ambari-server
Ambari Serverのセットアップ
ambari-server setup
# ambari-serverの起動ユーザをcentosにしてみました
Customize user account for ambari-server daemon [y/n] (n)? y
Enter user account for ambari-server daemon (root):centos
Ambari Serverの起動
ambari-server start
ambari-server status
# 停止するには
ambari-server stop
第二章 データベースのインストール
Schema RegistryとStreaming Analytics Manager (SAM)でメタデータの管理に利用するRDBMSが必要です。
AmbariのインストールでインストールされるPostgreSQLは、SAMとSchema Registryが必要とする9.5以上のバージョンではないので、別途PostgreSQLかMySQLのインストールが必要となります。以下はMySQLの場合です:
yum install -y mysql-connector-java*
ambari-server setup --jdbc-db=mysql --jdbc-driver=/usr/share/java/mysql-connector-java.jar
yum localinstall -y https://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
yum install -y mysql-community-server
systemctl start mysqld.service
# 自動設定された初期パスワードを取得します:
grep 'A temporary password is generated for root@localhost' \
/var/log/mysqld.log |tail -1
[root@0 ~]# grep 'A temporary password is generated for root@localhost' \
> /var/log/mysqld.log |tail -1
2017-06-20T02:02:32.825288Z 1 [Note] A temporary password is generated for root@localhost: W<5W7CRZz(js
この後、MySQLのrootパスワードを変更するのですが、デフォルトだとパスワードポリシーがきつすぎる(dev, test用には)ので、 パスワードポリシーレベルを緩めてからやった方が楽かと思います。 こちらの記事が参考になります: http://qiita.com/liubin/items/3722ab10a73154863bd4
/usr/bin/mysql_secure_installation
# 覚えやすいパスワードにしました、テスト用なので。
password
SAMとSchema Registry用のMySQL設定
mysql -u root -p
create database registry;
create database streamline;
CREATE USER 'registry'@'%' IDENTIFIED BY 'password';
CREATE USER 'streamline'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON registry.* TO 'registry'@'%' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON streamline.* TO 'streamline'@'%' WITH GRANT OPTION;
commit;
DruidとSuperset用のMySQL設定
DruidとSupersetのユーザも作成しましたが、HDFにはDruidが同梱されていないので、スキップしても良いですね。
mysql -u root -p
CREATE DATABASE druid DEFAULT CHARACTER SET utf8;
CREATE DATABASE superset DEFAULT CHARACTER SET utf8;
CREATE USER 'druid'@'%' IDENTIFIED BY 'password';
CREATE USER 'superset'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'druid'@'%' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'superset'@'%' WITH GRANT OPTION;
commit;
第三章 HDF Management Packのインストール
ambari-server stop
wget http://public-repo-1.hortonworks.com/HDF/centos6/3.x/updates/3.0.0.0/tars/hdf_ambari_mp/hdf-ambari-mpack-3.0.0.0-453.tar.gz
sudo ambari-server install-mpack \
--mpack=hdf-ambari-mpack-3.0.0.0-453.tar.gz \
--verbose
ambari-server start
第4章 AmbariからHDFクラスタをインストール
http://0.hdf.aws.mine
から、Ambariにログインします。
初期ユーザ名/パスワードは: admin/admin
‘Launch Install Wizard’をクリックして、インストールを進めます。
うーん、HDFを選ぶべきか迷ってしまいました。なぜなら、DruidとSuper Setも含めたストリーミング処理結果の可視化まで試したいのですが、HDFにはDruidとSupersetは入っていません。とりあえず、HDFで進みます。
Private Keyはcentosユーザのものをcat ~/.ssh/id_rsa
で出力してコピペ:
各コンポーネントで必要なパスワードを設定します。
基本、忘れないように全部password
にしました。テスト用なので。
NiFiのEncrypt Configuration Master Key Password, Sensitive property values encryption passwordは最低12文字必要なので、
passwordpassword
を指定しました。
nifi.toolkit.tls.tokenも設定する必要があるので、適当な文字列、NiFiCAToken
を設定しました。
3つほどHeapサイズの警告が残りますが、Proceedで次へ。
これで、単一ノードのHDFクラスタの出来上がりです:)