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/