3. GridData Analytics Scale Serverのインストール¶
本章では、GridData Analytics Scale Serverを複数台のマシンにインストールし、クラスタを構成する方法を説明します。 本手順を行うことで、GridData Analytics StudioまたはGridData Analytics Serverから GridData Analytics Scale Serverのクラスタに接続し、SparkやHDFSを利用できるようになります。
インストールは各マシンで、それぞれ管理者ユーザで行ってください。 また、GridData Analytics Scale Serverを複数台のマシンにインストールする場合の 例として、 インストール構成例 のように マスター・ノードをSERVER1、スレーブ・ノードをそれぞれSERVER1、SERVER2、SERVER3としてクラスタを構成する場合を説明します。
またこのとき、接続元のGridData Analytics StudioまたはGridData Analytics Serverや インストール時の各Scale Serverは、それぞれ以下のホスト名とIPアドレスを持つものとします。
マシン名 | ホスト名 | IPアドレス |
---|---|---|
GridData Analytics Studio/GridData Analytics Server | SERVER0 | 10.0.0.0 |
Scale Server(master,slave1) | SERVER1 | 10.0.0.1 |
Scale Server(slave2) | SERVER2 | 10.0.0.2 |
Scale Server(slave3) | SERVER3 | 10.0.0.3 |
あらかじめ各サーバのホスト名を変更してください。また、マニュアル内に登場するIPアドレスは、それぞれ実際の値に置き換えてください。
3.1. インストール前の準備¶
以降の作業は管理者ユーザで実行してください。
(1)ファイルのコピー
/tmpディレクトリにメディアの中身をコピーします。
# cp –rf [モジュールのパス]/media_gpa/* /tmp
(2)griddataユーザの作成
(2-1)jupyterグループを作成します
# groupadd jupyter
(2-2)griddataユーザを作成し、jupyterグループに追加します
# useradd -g jupyter griddata
(2-3)griddataユーザのパスワードを設定します。パスワードは任意のものに変えてください。
# yes "griddata" | passwd griddata
(3)/etc/hostsの編集
/etc/hostsを編集し、各マシンのホスト名とIPアドレスを追加します
10.0.0.0 SERVER0
10.0.0.1 SERVER1
10.0.0.2 SERVER2
10.0.0.3 SERVER3
以降の作業は、griddataユーザで実施してください。
(4)SSHの設定
本作業はScale Serverの全てのサーバで実施します。
(4-1)鍵生成コマンドでSSHのパスフレーズを空白にして生成します。
$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/griddata/.ssh/id_dsa):
Created directory '/home/griddata/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/griddata/.ssh/id_dsa.
Your public key has been saved in /home/griddata/.ssh/id_dsa.pub.
The key fingerprint is:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx griddata@SERVER1
(4-2)鍵が生成されたことを確認します。
$ ls -l ~/.ssh
合計 8
-rw-------. 1 tsol tsol 668 m月 dd hh:mm yyyy id_dsa
-rw-r--r--. 1 tsol tsol 605 m月 dd hh:mm yyyy id_dsa.pub
(4-3)生成された鍵のうち、公開鍵ファイル「~/.ssh/id_dsa.pub」の内容を「~/.ssh/authorized_keys」ファイルに追加します
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
(4-4)SSHで自サーバにログインできることを確認します。
$ ssh SERVER1
Last login: ddd mm dd hh:mm:ss yyyy from SERVER1
$ exit
logout
Connection to SERVER1 closed.
(5)公開鍵ファイルの配布
本作業は、NameNodeを起動するサーバ(ここではSERVER1およびSERVER2)で実施します。 対象のサーバにログインし、公開鍵ファイル「~/.ssh/id_dsa.pub」を自サーバを除くScale Serverの各サーバに配付します。
$ cd ~
$ scp ~/.ssh/id_dsa.pub griddata@SERVER2:SERVER1_id_dsa.pub
The authenticity of host SERVER2(IP Address)' can't be established.
RSA key fingerprint is
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ' SERVER2,IP Address (RSA) to the list of known hosts.
griddata@SERVER2's password:griddata
id_dsa.pub
$ scp ~/.ssh/id_dsa.pub griddata@SERVER3:SERVER1_id_dsa.pub
…
(6)SSHの追加設定
各サーバにログインし、NameNodeを起動するサーバから配布された公開鍵を、 「~/.ssh/authorized_keys」ファイルに追加します。
$ cd ~
$ cat SERVER1_id_dsa.pub >> ~/.ssh/authorized_keys
$ rm SERVER1_id_dsa.pub
(7)ログインの確認
NameNodeを起動するサーバにログインし、SSHで各サーバーにログインできることを確認します。
$ ssh SERVER2
Last login: ddd mm dd hh:mm:ss yyyy from SERVER1
$ exit
logout
Connection to SERVER2 closed.
$ ssh SERVER3
Last login: ddd mm dd hh:mm:ss yyyy from SERVER1
$ exit
logout
(8)mastersファイルとslavesファイルの作成
以下の作業はSERVER1で行います。
(8-1)一つ目のマスター・ノードのノード名(SERVER1)を記載した/tmp/mastersファイルを作成します。末尾の改行は不要です。
SERVER1
(8-2)各スレーブ・ノードのノード名を記載した/tmp/slavesファイルを作成します。末尾の改行は不要です。
SERVER1
SERVER2
SERVER3
(8-3)mastersファイルとslavesファイルを各スレーブ・ノードの/tmpディレクトリに配付します。
$ cd /tmp
$ scp ./masters griddata@SERVER2:/tmp/masters
masters 100% 8 0.0KB/s 00:00
$ scp ./slaves griddata@SERVER2:/tmp/slaves
masters 100% 8 0.0KB/s 00:00
(以下略)
以上でインストール前の準備は完了です。
3.2. インストール方法¶
(1)スクリプトによるインストールの実行
以降の作業は管理者ユーザで実施します。
以下のように、インストール用のスクリプトを起動します。
# cd /tmp/tools/
# chmod +X ./*.sh
# sh setup_scaleserver.sh
スクリプトを起動することで以下の各インストール手順が実行されます。
■ griddataユーザの設定
■ Anacondaのインストール
■ Sparkのインストールと設定ファイルの修正
■ Hadoopのインストールと設定ファイルの修正
■ Zookeeperのインストールと設定ファイルの修正
注釈
スクリプトを実行することで、HDFSのNameNodeおよびSparkのマスターに対し、Zookeeperを使った HA(High Availability)の設定が行われます。このとき、mastersファイル及びslavesファイルを元に設定を行います。 SERVER1およびSERVER2のいずれかをActive、もう片方をStandbyにすることで、 HDFSのNameNodeやSparkのマスターを2重化することができ、単一障害点を解消できます。
なお、setup_scaleserver.shの仕様は以下の通りです。
setup_scaleserver.sh [-s|–skip]
GridData Analytics Scale Serverの各インストール手順を順に実行します。 実行中にエラーが発生した場合、setup_scaleserver.logにエラーを出力し、 該当する手順の箇所でインストールを中断します。その場合、ログファイルを参照し、 インストール環境や設定を見直したのち、必要に応じ該当する手順を手作業によりインストールしてください。
再度setup_scaleserver.shを実行すると、ログファイルを元に、 中断した手順からインストールを再開します。その場合、必要に応じ–skipオプションを使用してください。
オプション | 必須 | 引数 | 説明 |
---|---|---|---|
-s|–skip | - | - | 中断した手順ではなく、その次の手順からインストールを再開します。中断した手順を手作業により実行した場合などは、本オプションを使用してください。 |
3.3. 初期設定と起動¶
本節では、HadoopとSparkの初期設定および初回起動を行います。 2回目以降の起動方法につきましては、運用手順を参照してください。
3.3.1. 初期設定¶
以下の手順はgriddataユーザで実行します。
(1)/tmp/以下を削除します。
Scale Serverをインストールした全てのマシン上で実施します。
$ sudo rm -rf /tmp/*
(2)ZooKeeperを初期化します。
Scale Serverをインストールした全てのマシン上で実施します。
(2-1)ZooKeeperのtmpディレクトリを削除します。
$ zkCleanup.sh -n 3
$ rm -r /home/griddata/griddata-core/zookeeper/tmp/*
$ mkdir -p /home/griddata/griddata-core/zookeeper/tmp/zookeeper/
(2-2)myidファイルを作成します。
各マシンごとに、それぞれ以下のコマンドを実行してください。
ホスト名 | 実行コマンド |
---|---|
SERVER1 | $ echo 1 > /home/griddata/griddata-core/zookeeper/tmp/zookeeper/myid |
SERVER2 | $ echo 2 > /home/griddata/griddata-core/zookeeper/tmp/zookeeper/myid |
SERVER3 | $ echo 3 > /home/griddata/griddata-core/zookeeper/tmp/zookeeper/myid |
(3)Hadoopで使用するディレクトリーを初期化します。
Scale Serverをインストールした全てのマシン上で実施します。
$ rm -r /home/griddata/griddata-core/hadoop/tmp/*
$ mkdir /home/griddata/griddata-core/hadoop/tmp/io
(4)HadoopのPIDファイルを初期化します。
Scale Serverをインストールした全てのマシン上で実施します。
$ rm -f /home/griddata/griddata-core/hadoop/pids/*
(5)spark-env.shの修正
/home/griddata/griddata-core/spark/confにある、Sparkの設定ファイルspark-env.shを修正します。
各マシンごとに、SPARK_MASTER_HOSTの値を以下のように変更してください。
ホスト名 | 設定値 |
---|---|
SERVER1 | SPARK_MASTER_HOST=SERVER1 |
SERVER2 | SPARK_MASTER_HOST=SERVER2 |
その他 | 「SPARK_MASTER_HOST」の項目を削除 |
初期設定は以上です。
3.3.2. 初回起動¶
(1)ZooKeeperを起動します。
Scale Serverをインストールした全てのマシン上で実施します。
$ zkCleanup -n 3
$ rm -r /home/griddata/griddata-core/zookeeper/tmp/zookeeper/version-2
$ mkdir -p /home/griddata/griddata-core/zookeeper/logs
$ cd /home/griddata/griddata-core/zookeeper/logs
$ zkServer.sh start
(2)ActiveにするNameNodeのサーバー(SERVER1)で、各マシンのJournalNodeを起動します。
$ hadoop-daemons.sh start journalnode
(3)ActiveにするNameNodeのサーバーで、NameNodeを初期化します。
$ hadoop namenode -format
(4)ActiveにするNameNodeのサーバーで、NameNodeを起動します。
$ hadoop-daemon.sh start namenode
(5)StandbyにするNameNode側のサーバー(SERVER2)で、スタンバイ側のNameNodeを初期化します。
$ hadoop namenode -bootstrapStandby
(6)StandbyにするNameNode側のサーバーで、スタンバイ側のNameNodeを起動します。
$ hadoop-daemon.sh start namenode
(7)マスター・ノード(SERVER1)から、各マシンのDataNodeを起動します。
$ hadoop-daemons.sh start datanode
(8)ActiveにするNameNodeのサーバーで、ZKFCの初期化を行います。
$ hdfs zkfc -formatZK
(9)NameNodeのサーバー(SERVER1,SERVER2)で、ZKFCを起動します
$ hadoop-daemon.sh start zkfc
(10)Namenodeの状態を確認します。
SERVER1で実施します。
$ hdfs haadmin -getServiceState namenode1
active
$ hdfs haadmin -getServiceState namenode2
standby
以上でHadoopの起動は完了です。 Hadoopを停止する場合は、 HDFSクラスタを停止する をご参照ください。
続いて、以下の方法でSparkを起動します。
(1)HDFS上にSpark用のディレクトリを作成します。
SERVER1で実施します。
$ hdfs dfs -mkdir -p /var/log/spark
$ hdfs dfs -chmod -R 777 /var
(2)Activeにするマスター・サーバ(SERVER1)でSparkのマスターを起動します
$ $SPARK_HOME/sbin/start-master.sh
(3)Standbyを行うサーバ(SERVER2)でSparkのマスターを起動します
$ $SPARK_HOME/sbin/start-master.sh
(4)SparkのWorkerを起動します
Scale Serverをインストールした全てのマシン上で実施します。
$ $SPARK_HOME/sbin/start-slave.sh spark://SERVER1:7077,SERVER2:7077
以上でSparkの起動は完了です。
Sparkを停止する場合は、 Sparkクラスタを停止する をご参照ください。
3.4. 動作確認¶
(1)各Scale Serverで、jpsコマンドによりHDFSの動作を確認します。
■ SERVER1の例
$ jps
XXXX JournalNode
XXXX NameNode
XXXX Jps
XXXX Worker
XXXX DFSZKFailoverController
XXXX DataNode
XXXX QuorumPeerMain
XXXX Master
■ SERVER2の例
$ jps
XXXX Master
XXXX Jps
XXXX JournalNode
XXXX Worker
XXXX QuorumPeerMain
XXXX DFSZKFailoverController
XXXX NameNode
XXXX DataNode
■ SERVER3の例
$ jps
XXXX QuorumPeerMain
XXXX JournalNode
XXXX Jps
XXXX Worker
XXXX DataNode
(2)各マシンのSparkを起動後、http://SERVER1:8090にアクセスし、 SparkのGUI画面が表示されることを確認します。
3.5. ディレクトリ構成¶
インストール後のディレクトリ構成を以下に示します。なお、各種OSSやライブラリをインストールすることで、あるディレクトリ下に常に 同じファイルやディレクトリが作成される場合、そのディレクトリ名のみ代表として掲載します。
ディレクトリ | 作成されるファイル・ディレクトリ | 備考 |
---|---|---|
/etc/profile.d | analytics.sh | 環境変数の設定ファイル |
hadoop.sh | 同上 | |
spark.sh | 同上 | |
pyenv.sh | 同上 | |
/home/griddata/ | .cashe/ | |
.conda/ | ||
.jupyter/ | ||
.npm/ | ||
.condarc | ||
.npmrc | ||
/home/griddata/.local/ | .ssh/ | |
authorized_keys | ||
id_dsa | ||
id_dsa.pub | ||
known_hosts | ||
setup_scaleserver.sh | ||
user.sh | ||
distribute_sample.sh | ||
jupyter.sh | ||
/home/griddata/analytics/.jupyter/ | jupyterhub_config.py | Jupyterhubの設定ファイル |
/home/griddata/analytics/.pyenv | python2.7 | |
python3.6 | ||
/home/griddata/analytics/griddb/bin303/ | libgridstore.so | GridDB3.0.3ライブラリ |
libgridstore.so.0 | 同上 | |
libgridstore.so.0.0.0 | 同上 | |
/home/griddata/analytics/griddb/PythonModule2/ | Python2用GridDBライブラリ | |
griddb_python_client.py | 同上 | |
_griddb_python_client.so | ||
/home/griddata/analytics/griddb/PythonModule3/ | griddb_python_client.py | Python3用GridDBライブラリ |
_griddb_python_client.so | 同上 | |
/home/griddata/analytics/examples/ | sample_bokeh.ipynb | Pythonライブラリのサンプルノートブック |
sample_chainer.ipynb | 同上 | |
sample_flask.ipynb | 同上 | |
sample_griddb_python2.ipynb | 同上 | |
sample_griddb_python3.ipynb | 同上 | |
sample_ipywidget.ipynb | 同上 | |
sample_mecab.ipynb | 同上 | |
sample_nltk.ipynb | 同上 | |
sample_numpy.ipynb | 同上 | |
sample_matplotlib.ipynb | 同上 | |
sample_pandas.ipynb | 同上 | |
sample_plotly.ipynb | 同上 | |
sample_pyspark_python2.ipynb | 同上 | |
sample_pyspark_python3.ipynb | 同上 | |
sample_R.ipynb | 同上 | |
sample_rpy2.ipynb | 同上 | |
sample_scala.ipynb | 同上 | |
sample_scikit-image.ipynb | 同上 | |
sample_scikit-learn.ipynb | 同上 | |
sample_scipy.ipynb | 同上 | |
sample_seaborn.ipynb | 同上 | |
sample_simpy.ipynb | 同上 | |
sample_statmodels.ipynb | 同上 | |
/home/griddata/analytics/examples/data/ | data_lifelines.csv | サンプルノートブックの使用データ |
data_nltk.csv | 同上 | |
data_seaborn.csv | 同上 | |
/home/griddata/griddata-core/ | spark/ | |
spark-2.1.1-bin-hadoop2.7/ | ||
hadoop/ | ||
hadoop-2.7.3/ | ||
zookeeper/ | ||
zookeeper-3.4.9/ |