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 |