Let me code again...

Welcome to ijokarumawak's blog :)

HDF 3.0をEC2にインストールしよう

Hortonworks 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クラスタの出来上がりです:)