3. GridData Analytics Scale Serverのインストール

本章では、インストール構成例 に示した構成における、 GridData Analytics Scale Serverを複数台のサーバーにインストールしてクラスターを構成する方法を説明します。 本手順を行うことで、GridData Analytics ServerからSparkやHDFSを利用できるようになります。

本章と GridData Analytics Serverのインストール では、各サーバーはそれぞれ以下のホスト名とIPアドレスを持つものとし、 GridData Analytics ServerをSERVER0、 GridData Analytics Scale Serverのマスター・ノードをSERVER1、SERVER2、SERVER3、 スレーブ・ノードをSERVER4、SERVER5、SERVER6としてクラスターを構成します。

マシン名 ホスト名 IPアドレス
GridData Analytics Server SERVER0 10.0.0.1
GridData Analytics Scale Server(master1) SERVER1 10.0.0.2
GridData Analytics Scale Server(master2) SERVER2 10.0.0.3
GridData Analytics Scale Server(master3) SERVER3 10.0.0.4
GridData Analytics Scale Server(slave1) SERVER4 10.0.0.5
GridData Analytics Scale Server(slave2) SERVER5 10.0.0.6
GridData Analytics Scale Server(slave3) SERVER6 10.0.0.7

マニュアル内に登場するIPアドレスは、それぞれ実際の値に置き換えてください。

以下の手順は、SERVER0に対して GridData Analytics Serverのインストール の手順によってGridData Analytics Serverがインストールされていることを前提とします。 また、特に指示がない限りSERVER1から6のすべてのサーバーで実行してください。

3.1. インストール前の準備

以下の手順は管理者ユーザーで実行してください。

(1)/tmpにインストールディスクの中身をコピーします。

# cp –rf [モジュールのパス]/* /tmp

(2)ファイアウォールの無効化

[RHEL / CentOS 6]

ファイアウォールとしてiptablesを使用している場合は、以下のように停止し、自動起動を無効化します。

# service iptables stop
# chkconfig iptables off

[RHEL / CentOS 7]

ファイアウォールとしてfirewalldを使用している場合は、以下のように停止し、自動起動を無効化します。

# systemctl stop firewalld
# systemctl disable firewalld

(3)SELINUXの無効化

SELINUXを有効にしている場合は、以下のように無効化します。

# sed -i -e "s/^SELINUX=enforcing$/SELINUX=disabled/g" /etc/selinux/config
# setenforce 0

(4)/etc/hostsを編集し、GridData Analyticsをインストールするすべてのサーバーのホスト名とIPアドレスを追加します。

10.0.0.1                SERVER0
10.0.0.2                SERVER1
10.0.0.3                SERVER2
10.0.0.4                SERVER3
10.0.0.5                SERVER4
10.0.0.6                SERVER5
10.0.0.7                SERVER6

(5)hostnameの変更

[RHEL / CentOS 6]

/etc/sysconfig/networkを編集し、(2)で設定したホスト名と一致させます。

SERVER1では以下のように設定します。

HOSTNAME=SERVER1

SERVER2では以下のように設定します。

HOSTNAME=SERVER2

SERVER3~SERVER6についても上記と同様に各ホスト名を設定します。 設定を反映させるためすべてのサーバーを再起動します。

# reboot

[RHEL / CentOS 7]

hostnamectlコマンドを実行し、(2)で設定したホスト名と一致させます。

SERVER1では以下のコマンドを実行します。

# hostnamectl set-hostname SERVER1

SERVER2では以下のコマンドを実行します。

# hostnamectl set-hostname SERVER2

SERVER3~SERVER6についても上記と同様に各ホスト名を設定します。 RHEL / CentOS 7の場合、サーバーの再起動は不要です。

以上でインストール前の準備は完了です。

3.2. インストール手順

(1)インストールスクリプトの実行

以下のコマンドで、インストールスクリプトを実行します。

# cd /tmp/tools/
# chmod +X ./*.sh
# sh setup_scaleserver.sh

インストールスクリプトにより、以下の手順が自動で実行されます。

  • griddataユーザーの設定

    GridData Analyticsの管理用ユーザーとしてgriddataユーザーを作成します。

    ユーザー名 パスワード
    griddata griddata

    インストール完了後、パスワードは必要に応じて変更してください。

  • Anacondaのインストール

  • Sparkのインストール

  • HDFSのインストール

  • Zookeeperのインストール

setup_scaleserver.shの仕様は以下の通りです。

setup_scaleserver.sh [-s|--skip]

実行中にエラーが発生した場合、インストールログファイルsetup_scaleserver.logにエラーを出力し、インストールを中断します。 トラブルシューティング を参照し、インストール環境や設定を見直してください。

再度インストールスクリプトを実行すると、setup_scaleserver.logの内容に従い、中断した手順からインストールを再開します。必要に応じて --skip オプションを使用してください。

オプション 引数 説明
-s | --skip 中断した手順ではなく、その次の手順からインストールを再開します。中断した手順を手作業により完了した場合に使用します。

インストールをはじめから実行したい場合は、setup.logを削除してからインストールスクリプトを実行してください。

3.3. 初期設定

本節では、GridData Analytics Scale Serverの初回起動を行う前に必要な初期設定を行います。

以下の手順はgriddataユーザーで実行してください。

■ SSHの設定

(1)ssh-keygenコマンドで鍵を生成します。このとき、passphraseには何も入力せずにEnterを押します。

$ 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

(2)鍵が生成されたことを確認します。

$ ls -l ~/.ssh
-rw-------. 1 griddata griddata 668  m月 dd hh:mm yyyy id_dsa
-rw-r--r--. 1 griddata griddata 605  m月 dd hh:mm yyyy id_dsa.pub

(3)生成された鍵のうち、公開鍵ファイル「~/.ssh/id_dsa.pub」の内容を「~/.ssh/authorized_keys」ファイルに追加します。

$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys

(4)SSHで自分自身にパスフレーズなしでログインできることを確認します。

$ ssh $(hostname)
Last login: ddd mm dd hh:mm:ss yyyy from SERVER1
$ exit
logout
Connection to SERVER1 closed.

(5)マスター・ノード(SERVER1、SERVER2、SERVER3)から、公開鍵ファイル「~/.ssh/id_dsa.pub」を自身以外のGridData Analytics Scale Serverに配付します。

注釈

以下のような出力が出た場合、画面に従って入力を行ってください。

パスワードは(4)で設定したものを入力してください。

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

SERVER1では以下のコマンドを実行します。

$ cd ~
$ scp ~/.ssh/id_dsa.pub griddata@SERVER2:SERVER1_id_dsa.pub
$ scp ~/.ssh/id_dsa.pub griddata@SERVER3:SERVER1_id_dsa.pub
$ scp ~/.ssh/id_dsa.pub griddata@SERVER4:SERVER1_id_dsa.pub
$ scp ~/.ssh/id_dsa.pub griddata@SERVER5:SERVER1_id_dsa.pub
$ scp ~/.ssh/id_dsa.pub griddata@SERVER6:SERVER1_id_dsa.pub

SERVER2では以下のコマンドを実行します。

$ cd ~
$ scp ~/.ssh/id_dsa.pub griddata@SERVER1:SERVER2_id_dsa.pub
$ scp ~/.ssh/id_dsa.pub griddata@SERVER3:SERVER2_id_dsa.pub
$ scp ~/.ssh/id_dsa.pub griddata@SERVER4:SERVER2_id_dsa.pub
$ scp ~/.ssh/id_dsa.pub griddata@SERVER5:SERVER2_id_dsa.pub
$ scp ~/.ssh/id_dsa.pub griddata@SERVER6:SERVER2_id_dsa.pub

SERVER3では以下のコマンドを実行します。

$ cd ~
$ scp ~/.ssh/id_dsa.pub griddata@SERVER1:SERVER3_id_dsa.pub
$ scp ~/.ssh/id_dsa.pub griddata@SERVER2:SERVER3_id_dsa.pub
$ scp ~/.ssh/id_dsa.pub griddata@SERVER4:SERVER3_id_dsa.pub
$ scp ~/.ssh/id_dsa.pub griddata@SERVER5:SERVER3_id_dsa.pub
$ scp ~/.ssh/id_dsa.pub griddata@SERVER6:SERVER3_id_dsa.pub

(6)マスター・ノードの公開鍵ファイル「SERVER1_id_dsa.pub」、「SERVER2_id_dsa.pub」及び「SERVER3_id_dsa.pub」の内容を、 自身以外のGridData Analytics Scale Serverの「~/.ssh/authorized_keys」ファイルに追加します。

SERVER1では以下のコマンドを実行します。

$ cd ~
$ cat SERVER2_id_dsa.pub >> ~/.ssh/authorized_keys
$ rm SERVER2_id_dsa.pub
$ cat SERVER3_id_dsa.pub >> ~/.ssh/authorized_keys
$ rm SERVER3_id_dsa.pub

SERVER2では以下のコマンドを実行します。

$ cd ~
$ cat SERVER1_id_dsa.pub >> ~/.ssh/authorized_keys
$ rm SERVER1_id_dsa.pub
$ cat SERVER3_id_dsa.pub >> ~/.ssh/authorized_keys
$ rm SERVER3_id_dsa.pub

SERVER3では以下のコマンドを実行します。

$ cd ~
$ cat SERVER1_id_dsa.pub >> ~/.ssh/authorized_keys
$ rm SERVER1_id_dsa.pub
$ cat SERVER2_id_dsa.pub >> ~/.ssh/authorized_keys
$ rm SERVER2_id_dsa.pub

SERVER4~SERVER6では以下のコマンドを実行します。

$ cd ~
$ cat SERVER1_id_dsa.pub >> ~/.ssh/authorized_keys
$ rm SERVER1_id_dsa.pub
$ cat SERVER2_id_dsa.pub >> ~/.ssh/authorized_keys
$ rm SERVER2_id_dsa.pub
$ cat SERVER3_id_dsa.pub >> ~/.ssh/authorized_keys
$ rm SERVER3_id_dsa.pub

(7)マスター・ノード(SERVER1、SERVER2、SERVER3)から、SSHで自身以外のGridData Analytics Scale Serverにパスフレーズなしでログインできることを確認します。

SERVER1では以下のコマンドを実行します。

$ 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
$ ssh SERVER4
Last login: ddd mm dd hh:mm:ss yyyy from SERVER1
$ exit
logout
$ ssh SERVER5
Last login: ddd mm dd hh:mm:ss yyyy from SERVER1
$ exit
logout
$ ssh SERVER6
Last login: ddd mm dd hh:mm:ss yyyy from SERVER1
$ exit
logout

SERVER2では以下のコマンドを実行します。

$ ssh SERVER1
Last login: ddd mm dd hh:mm:ss yyyy from SERVER2
$ exit
logout
$ ssh SERVER3
Last login: ddd mm dd hh:mm:ss yyyy from SERVER2
$ exit
logout
$ ssh SERVER4
Last login: ddd mm dd hh:mm:ss yyyy from SERVER2
$ exit
logout
$ ssh SERVER5
Last login: ddd mm dd hh:mm:ss yyyy from SERVER2
$ exit
logout
$ ssh SERVER6
Last login: ddd mm dd hh:mm:ss yyyy from SERVER2
$ exit
logout

SERVER3では以下のコマンドを実行します。

$ ssh SERVER1
Last login: ddd mm dd hh:mm:ss yyyy from SERVER3
$ exit
logout
$ ssh SERVER2
Last login: ddd mm dd hh:mm:ss yyyy from SERVER3
$ exit
logout
$ ssh SERVER4
Last login: ddd mm dd hh:mm:ss yyyy from SERVER3
$ exit
logout
$ ssh SERVER5
Last login: ddd mm dd hh:mm:ss yyyy from SERVER3
$ exit
logout
$ ssh SERVER6
Last login: ddd mm dd hh:mm:ss yyyy from SERVER3
$ exit
logout

■ ZooKeeperの設定

ZooKeeperを起動するすべてのサーバーに、サーバーIDを記述した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

注釈

ホスト名がSERVER0~SERVER6ではない場合、以下の設定ファイルに記述されたホスト名を該当する名前に変更します。

  • /home/griddata/griddata-core/hadoop/conf/hdfs-site.xml
  • /home/griddata/griddata-core/hadoop/conf/slaves
  • /home/griddata/griddata-core/hadoop/conf/hosts.include
  • /home/griddata/griddata-core/hadoop/conf/yarn-site.xml
  • /home/griddata/griddata-core/spark/conf/spark-defaults.conf
  • /home/griddata/griddata-core/spark/conf/spark-env.sh
  • /home/griddata/griddata-core/spark/conf/slaves
  • /home/griddata/griddata-core/zookeeper/conf/zoo.cfg
  • /home/griddata/griddata-core/hive/conf/hive-site.xml

HDFS、YARN、Spark、ZooKeeper、Hiveの設定ファイル内のパラメーターについては、 設定パラメーター一覧 を参照してください。

3.4. 初回起動

本節では各機能の初回起動を行います。 2回目以降の起動方法については、 運用手順 を参照してください。

以下の手順はgriddataユーザーで実行してください。

■ HDFSの起動

(1)SERVER1、SERVER2、SERVER3で、ZooKeeperを起動します。

$ cd /home/griddata/griddata-core/zookeeper/logs
$ zkServer.sh start

(2)SERVER1、SERVER2、SERVER3で、JournalNodeを起動します。

$ hadoop-daemon.sh start journalnode

(3)NameNode(Active)が起動するサーバー(SERVER1)で、NameNodeを初期化します。

$ hdfs namenode -format

(4)NameNode(Active)が起動するサーバー(SERVER1)で、NameNodeを起動します。

$ hadoop-daemon.sh start namenode

(5)NameNode(Standby)が起動するサーバー(SERVER2)で、NameNodeを初期化します。

$ hdfs namenode -bootstrapStandby

(6)NameNode(Standby)が起動するサーバー(SERVER2)で、NameNodeを起動します。

$ hadoop-daemon.sh start namenode

(7)NameNode(Active)が起動するサーバー(SERVER1)で、スレーブ・ノードのDataNodeを起動します。

$ hadoop-daemons.sh start datanode

(8)NameNode(Active)が起動するサーバー(SERVER1)で、ZKFCの初期化を行います。

$ hdfs zkfc -formatZK

(9)マスター・ノード(SERVER1、SERVER2)で、ZKFCを起動します。

$ hadoop-daemon.sh start zkfc

(10)NameNode(Active)が起動するサーバー(SERVER1)で、Namenodeの状態を確認します。

$ hdfs haadmin -getServiceState namenode1
active
$ hdfs haadmin -getServiceState namenode2
standby

以上でHDFSの起動は完了です。 HDFSを停止する場合は、 HDFSクラスターを停止する を参照してください。

■ YARNの起動

(1)SERVER1で、HDFS上にSpark用のディレクトリーを作成します。

$ hdfs dfs -mkdir -p /var/log/spark
$ hdfs dfs -chmod 777  /var/log/spark

(2)SERVER1で、HDFS上にSpark実行用のjarファイルをデプロイします。

$ cd /home/griddata/griddata-core/spark
$ hdfs dfs -mkdir -p /user/griddata
$ hdfs dfs -put jars-without-hive /user/griddata/
$ hdfs dfs -put /home/griddata/griddata-core/adapters/griddb/* /user/griddata/jars-without-hive/
$ hdfs dfs -put /home/griddata/griddata-core/adapters/hive/* /user/griddata/jars-without-hive/
$ hdfs dfs -put /home/griddata/griddata-core/adapters/spark/* /user/griddata/jars-without-hive/
$ hdfs dfs -put /home/griddata/griddata-core/hive/lib/hive-exec-2.3.3.jar /user/griddata/jars-without-hive/

(3)ResourceManager(Active)が起動するサーバー(SERVER2)で、YARNのResourceManagerを起動します

$ yarn-daemon.sh start resourcemanager

(4)ResourceManager(Standby)が起動するサーバー(SERVER3)で、YARNのResourceManagerを起動します。

$ yarn-daemon.sh start resourcemanager

(5)ResourceManager(Active)が起動するサーバー(SERVER2)で、YARNのNodeManagerを起動します。

$ yarn-daemons.sh start nodemanager

以上でYARNの起動は完了です。

YARNを停止する場合は、 YARNクラスターを停止する を参照してください。

■ HistoryServerの起動

(1)SERVER1~SERVER3で、SparkのHistoryServerを起動します。

$ ${SPARK_HOME}/sbin/start-history-server.sh

■ Hiveの起動

(1)SERVER1、SERVER3で、HiveMetastoreサーバーを起動します。

$ hive --service metastore &

以上でHiveの起動は完了です。

Hiveを停止する場合は、 Hiveを停止する を参照してください。

3.5. 動作確認

以下の手順はgriddataユーザーで実行してください。

■ プロセスの確認

各サーバーで、HDFS、Spark、Zookeeperのプロセスが起動していることを確認します。

SERVER1の例

$ jps
XXXX Jps
XXXX QuorumPeerMain
XXXX JournalNode
XXXX DFSZKFailoverController
XXXX NameNode
XXXX HistoryServer
XXXX RunJar

SERVER2の例

$ jps
XXXX Jps
XXXX QuorumPeerMain
XXXX JournalNode
XXXX DFSZKFailoverController
XXXX NameNode
XXXX ResourceManager
XXXX HistoryServer

SERVER3の例

$ jps
XXXX Jps
XXXX QuorumPeerMain
XXXX JournalNode
XXXX ResourceManager
XXXX HistoryServer
XXXX RunJar

SERVER4~SERVER6の例

$ jps
XXXX Jps
XXXX DataNode
XXXX NodeManager

■ HDFS動作確認

以下の手順はいずれかのサーバーで実行してください。

(1)HDFS上にtestディレクトリーを作成します。

$ hdfs dfs -mkdir -p test

(2)HDFS上にtestディレクトリーが作成されたことを確認します。

$ hdfs dfs -ls
Found 1 items
drwxr-xr-x - griddata supergroup 0 yyyy-mm-dd hh:mm test

(3)HDFS上のtestディレクトリーを削除します。

$ hdfs dfs -rm -r test
Deleted test
$ hdfs dfs -ls

以上でHDFSの動作確認は完了です。

■ Sparkの動作確認

以下のコマンドでSparkのサンプルプログラムを実行し、円周率の計算が行われることを確認します

$ $SPARK_HOME/bin/run-example --master yarn SparkPi 10
yy/mm/dd hh:mm:ss INFO spark.SparkContext: Running Spark version 2.3.1
…
Pi is roughly 3.1425551425551426
…

以上でSparkの動作確認は完了です。

3.6. ディレクトリー構成

GridData Analytics Scale Serverをインストールすると、以下のディレクトリー構成になります。

注釈

ライブラリーについては、ディレクトリー構成の記載を省略します。

ディレクトリー 作成されるファイル、ディレクトリー 備考
/etc/profile.d/ griddata.sh  
/home/griddata/ .cache/  
  .conda/  
  .jupyter/  
  .ipython/  
  .local/  
  .condarc  
/home/griddata/.ssh/ authorized_keys  
  id_dsa  
  id_dsa.pub  
  known_hosts  
/home/griddata/analytics/ anaconda3-5.2.0/  
  anadonda/ シンボリックリンク
  cupy-4.2.0.zip  
  jupyter.service  
  libx/  
  mecab/  
  nltk_data/  
  setup_redhat6.sh  
  setup_redhat7.sh  
  setup_cupy.sh  
  setup_scaleserver.sh  
  function.sh  
  user.sh  
  distribute_sample.sh  
  jupyter.sh  
  jupyter.service  
/home/griddata/analytics/.jupyter/ jupyterhub_config.py  
/home/griddata/analytics/anaconda/share/jupyter/kernels/ ir/  
  pyspark_small/  
  pyspark_medium/  
  pyspark_large/  
  python3/  
  spylon-kernel/  
/home/griddata/analytics/examples/ sample_bokeh.ipynb  
  sample_chainer.ipynb  
  sample_cupy+matplotlib.ipynb  
  sample_flask.ipynb  
  sample_gdac_nb.ipynb  
  sample_gdac_svm.ipynb  
  sample_griddb_python3.ipynb  
  sample_hdfs.ipynb  
  sample_ipywidget.ipynb  
  sample_lifelines.ipynb  
  sample_mecab.ipynb  
  sample_nltk.ipynb  
  sample_numpy+matplotlib.ipynb  
  sample_pandas.ipynb  
  sample_pyspark.ipynb  
  sample_pyspark_python3.ipynb  
  sample_r.ipynb  
  sample_rdb.ipynb  
  sample_scala.ipynb  
  sample_scikit-image.ipynb  
  sample_scikit-learn.ipynb  
  sample_scipy.ipynb  
  sample_seaborn.ipynb  
  sample_statsmodels.ipynb  
  sample_sympy.ipynb  
/home/griddata/analytics/examples/data/ data_chainer_test.npz  
  data_chainer_train.npz  
  data_gdac_nv_T10_banking.csv  
  data_gdac_nv_T10_banking_test.csv  
  data_gdac_svm_T11_sensor.csv  
  data_gdac_svm_T11_sensor_train.csv  
  data_lifelines.csv  
  data_nltk.txt  
  data_seaborn.csv  
/home/griddata/analytics/griddb/bin403/ libgridstore.so  
  libgridstore.so.0  
  libgridstore.so.0.0.0  
/home/griddata/analytics/anaconda/fonts/IPAfont/ Readme_IPAexfont00301.txt  
  IPA_Font_License_Agreement_v1.0.txt  
  ipaexg.ttf  
/home/griddata/analytics/libx libICE.so.6  
  libSM.so.6  
  libX11.so.6  
  libX11-xcb.so.1  
  libXau.so.6  
  libxcb-*  
  libXext.so.6  
  libXrender.so.1  
  libXt.so.6  
/home/griddata/analytics/mecab/usr/lib64/mecab/dic/ ipadic/  
/home/griddata/griddata-core/adapters/griddb gridstore-4.0.3.jar  
  gridstore-advanced-4.0.3.jar  
  gridstore-jdbc-4.0.3.jar  
/home/griddata/griddata-core/adapters/spark datasource.jar  
/home/griddata/griddata-core/ hadoop-2.7.6/  
  hadoop/ シンボリックリンク
  spark-2.3.1-bin-hadoop2.7/  
  spark/ シンボリックリンク
  apache-hive-2.3.3-bin/  
  hive/ シンボリックリンク
  zookeeper-3.4.9/  
  zookeeper/ シンボリックリンク
  griddata.sh  
  griddb.properties