5. 運用手順

5.1. GridData Analytics Studioの運用手順

本節では、GridData Analytics Studioの各運用方法の手順について説明します。 各コマンドの実行はgriddataユーザで行ってください。

5.1.1. Jupyterを起動する

以下のコマンドを実行することでJupyterの起動を行います

$ service jupyter start

5.1.2. Jupyterを停止する

以下のコマンドを実行することでJupyterの停止を行います

$ service jupyter stop

注釈

Jupyterの停止後、まれにJupyterが使用しているプロキシサーバが再起動する場合があります。 その場合、後にJupyterを起動または再起動した際に「Error 503: Proxy Target Missing. 」または 「Address already in use」と コンソール出力され、Jupyterが正常に起動しません。 その場合、一度Jupyterを停止したのち、以下のようにプロキシサーバのプロセスを停止してから 再度Jupyterを起動してください。

$ service jupyter stop
$ sudo pkill node

5.1.3. Jupyterを再起動する

以下のコマンドを実行することでJupyterの再起動を行います

$ service jupyter restart

5.1.4. ユーザを追加する

ユーザ管理用のスクリプトを使用することで、新規ユーザの追加と設定を行います。 また、追加したユーザにサンプルデータを配布します。

使用例は以下の通りです。

$ cd /home/griddata/analytics
$ sh user.sh --add sampleuser1 password1
$ sh distribute_sample.sh -u sampleuser1

このとき、ユーザ管理用のスクリプトuser.shの主な仕様は以下の通りです。

sh user.sh [-a|–add|-d|–delete] <username> <password>

user.shはユーザ名とパスワードを指定することで、Jupyterで使用するユーザの追加または削除を行います。 ユーザを追加する場合は-aまたは–addを使用します。このとき、新規ユーザはlinuxユーザとして作成されます。

データ配布用のスクリプトdistribute_sample.shに関しては、 ノートブックやデータをユーザに配布する を参照してください。

5.1.5. ユーザを削除する

ユーザ管理用のスクリプトを使用し、ユーザの削除を行います。 使用例は以下の通りです。

$ cd /home/griddata/analytics
$ sh user.sh --delete sampleuser samplepassword

このとき、ユーザ管理用のスクリプトuser.shの主な仕様は以下の通りです。

sh user.sh [-a|–add|-d|–delete] <username> <password>

user.shはユーザ名とパスワードを指定することで、Jupyterで使用するユーザの追加または削除を行います。 ユーザを削除する場合は、-dまたは–deleteと指定することで、そのユーザとホームディレクトリを削除します。

注釈

ホームディレクトリを削除すると、ホームディレクトリ上にある、該当するユーザが作成したノートブックなどのファイルも削除されます。 ノートブックを残す場合、あらかじめ各ファイルを別ディレクトリに移動するか、 以下のようにuserdelコマンドを実行することで、ホームディレクトリを残してユーザを削除してください。

$ sudo userdel username

5.1.6. ノートブックやデータをユーザに配布する

ノートブック管理用のスクリプトを使用し、griddataユーザが持つノートブックや、ノートブックで使用するデータを、 サンプルとして各ユーザに配布することができます。

使用例は以下の通りです。

$ cd /home/griddata/analytics
$ sh distribute_sample.sh -u sampleuser1,sampleuser2 -n /home/griddata/notebookdir1

このとき、ノートブック管理用のスクリプトdistribute_sample.shの主な仕様は以下の通りです。

distribute_sample.sh [-u|–user] ユーザ名1,ユーザ名2,... [追加オプション [ディレクトリパス]]

distribute_sample.shは配布元のディレクトリにあるファイルを、指定した各ユーザの配布先のディレクトリに再帰的にコピーします。 デフォルトでは、配布元のディレクトリは/home/griddata/examples、 配布先のサンプルノートブック用ディレクトリとサンプルデータ用ディレクトリはそれぞれ /home/<ユーザ名>/examples、/home/<ユーザ名>/examples/dataとしてデータをコピーし配布します。 またコピーの際、同名のファイルがある場合は上書きします。

ファイルを上書きしない場合や配布元を変更する場合は、追加オプションを使用してください。 オプションの仕様は以下の通りです。

オプション 必須 引数 説明
-u|–user user1,user2,... 引数にファイルを配布するユーザを指定します。複数のユーザを指定する場合はコンマ区切りで指定します。
-d|–diff 配布先に同名のファイルがある場合、上書きせずそのファイルを配布しません
-n|–note notebook_directory 引数に配布元のディレクトリを指定します。指定されたディレクトリ以下にあるファイルを、再帰的に各ユーザのサンプルノートブック用ディレクトリにコピーします
-f|–file data_directory 引数に配布元のディレクトリを指定します。指定されたディレクトリ以下にあるファイルを、再帰的に各ユーザのサンプルデータ用ディレクトリにコピーします

5.1.7. Pythonライブラリを新規追加する

GridData Analytics Studioにすでにインストールされているライブラリに加え、 Pythonライブラリを新たにインストールすることができます。

インストールする場合は、griddataユーザにて以下の例のようにpip install コマンドを使用します。

$ pip install ライブラリ名

5.1.8. Pythonライブラリを削除する

既にインストールされたPythonライブラリを削除する場合、 以下の例のようにgriddataユーザにてpip uninstallコマンドを使用します。

$ pip uninstall ライブラリ名

5.1.9. Rライブラリを新規追加する

GridData Analyticsにインストールされているライブラリに加え、 新たにRライブラリをインストールすることができます。

インストールする場合、griddataユーザにて以下のようにRを起動したのち、install.packagesを実行します。

$ R
> install.packages("ライブラリ名", dependencies = TRUE)

5.1.10. Rライブラリを削除する

既にインストールされたRライブラリを削除する場合、griddataユーザにて以下のようにRを起動したのち、remove.packagesを実行します。

$ R
> remove.packages("ライブラリ名")

5.2. GridData Analytics Scale Serverの運用手順

5.2.1. HDFSクラスタを起動する

本項では、High Availability(自動フェイルオーバー)によるHDFSの2回目以降の起動方法について説明します。 各作業はgriddataユーザで実行します。また、初回起動時は 初期設定と起動 を参照してください。

(1)マスター・ノード(SERVER1)でHDFSを起動します。

$ start-dfs.sh

(2)Namenodeの状態を以下のコマンドで確認します。

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

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

5.2.2. HDFSクラスタを停止する

griddataユーザで実施します。

(1)マスター・サーバ(SERVER1)にてHDFSを停止します。

$ stop-dfs.sh

以上でHDFSの停止手順は完了です。

5.2.3. Sparkクラスタを起動する

本項では、クラスタの各マシンごとにSparkを起動する方法について説明します。 各作業はgriddataユーザで実施します。

(1)一台目のマスター・サーバ(SERVER1)でSparkのマスターを起動します。

$ $SPARK_HOME/sbin/start-master.sh

(2)スタンバイを行うマスター・サーバ(SERVER2)でSparkのマスターを起動します。

$ $SPARK_HOME/sbin/start-master.sh

(3)各サーバでSparkのスレーブを起動します。

$ $SPARK_HOME/sbin/start-slave.sh spark://SERVER1:7077,SERVER2:7077

(4)GridData Analytics StudioまたはGridData Analytics Serverの設定ファイルを修正する

GridData Analytics StudioまたはGridData Analytics Serverにて、 設定ファイルspark-env.shを編集し、SPARK_MASTER_HOSTの値を一台目のマスター・サーバのホスト名に変更します。

$ vi $SPARK_HOME/conf/spark-env.sh
……
(修正後)
SPARK_MASTER_HOST=SERVER1

以上でSparkクラスタの起動と設定は完了です。

5.2.4. Sparkクラスタを停止する

(1)マスター・サーバ(SERVER1)にてSparkを停止します。

$ $SPARK_HOME/sbin/stop-all.sh

以上でSparkクラスタの停止は完了です。

5.2.5. ZooKeeperを停止する

ZooKeeperの停止手順は以下の通りです。

(1)ZooKeeperを停止します。各サーバでそれぞれ実行します。

$ zkServer.sh stop

以上でZooKeeperの停止は完了です。

注釈

ZooKeeperはHDFSのNameNodeやSparkのマスターを二重化し、 HA(High Availability)の構成を行うための管理用ソフトフェアです。 そのため、HDFSやSparkが起動した状態でZooKeeperを停止することは避けてください。

5.2.6. クラスタのノードを縮退する

本項では各ノードの縮退手順について、SERVER3のノードを縮退する場合を例に説明します。 各作業はgriddataユーザーで行います。

■ 縮退の前準備

(1)hosts.excludeの修正

SERVER1(マスター・ノード)にログインし、エクスクルードファイル($HADOOP_HOME/conf/hosts.exclude)を編集します。 エクスクルードファイルがない場合、新たにファイルを作成してください。 hosts.excludeを開き、次のように縮退対象となるノード名(例:SERVER3)を記載します。

SERVER3

(2)hdfs-site.xmlの修正

この作業はScale Serverをインストールした全てのマシン上で行います。

HDFSの設定ファイル($HADOOP_HOME/conf/hdfs-site.xml)を確認・編集します。

hdfs-site.xmlを開き、HDFSのレプリケーション数のパラメーターの設定値(dfs.replication)を確認します。 もし、縮退したあとのDataNode数よりも大きな値になっている場合、縮退したあとのDataNode数以下の値に修正してください。 なお、dfs.replicationが記述されていない場合、レプリケーション数はデフォルト値の3となります。

■ Spark/HDFSノードを縮退させる

(1)HDFSクラスタに設定を反映する

マスター・ノード(SERVER1)にて、以下のようにノードのリフレッシュを行います

$ hadoop dfsadmin -refreshNodes

縮退するノード(SERVER3)にログインし、以下のようにDataNodeを停止します

$ hadoop-daemon.sh stop datanode

(2)Spark Workerを停止する

縮退するノード(SERVER3)にログインし、以下のようにSparkのWorkerを停止します。

$ $SPARK_HOME/sbin/stop-slave.sh

以上で縮退処理は完了です。

5.2.7. クラスタのノードを復帰する

本項では各ノードの復帰手順について、SERVER3のノードを復帰する場合を例に説明します。

■ 復帰の前準備

SERVER1にgriddataユーザーでログインをしたのち、 エクスクルードファイル($HADOOP_HOME/conf/hosts.exclude)内にあるSERVER3という記述を削除し、エクスクルードファイルの内容を空にします。

■ HDFSクラスタに設定を反映する

マスター・ノード(SERVER1)にて、エクスクルードファイルの編集結果を反映するため、次のようにしてHDFSのリフレッシュを行います。

$ hadoop dfsadmin -refreshNodes

■ DataNodeの復帰

復帰するノード(SERVER3)にてgriddataユーザーでログインをし、 次のようにDataNodeを起動し、また起動ができたことをプロセスから確認します。

$ hadoop-daemon.sh start datanode
$ jps
(中略)
XXX DataNode

■ Sparkの起動

SERVER3でSparkのスレーブを起動します。

$ $SPARK_HOME/sbin/start-slave.sh spark://SERVER1:7077,SERVER2:7077

以上でノードの復帰処理は完了です。

5.2.8. クラスタのノードを増設する

本項ではノードの増設手順について、新たにホスト名がSERVER4、IPアドレスが10.0.0.4のマシンをスレーブサーバとして増設する場合を例に説明します。

各作業はgriddataユーザで行います。

(1)ホスト名とIPの登録

Scale Serverの全てのマシンにて、 以下のコマンドを実行し、ホスト名とIPアドレスを/etc/hostsに登録します。

$ sudo echo '10.0.0.4    SERVER4' >> /etc/hosts

(2)hosts.includeの更新

Scale Serverの全てのマシンにて、インクルードファイル($HADOOP_HOME/conf/hosts.include)を開き、 次のように各マシンのホスト名を追記します

SERVER1
SERVER2
SERVER3
SERVER4

(2)slavesの更新

Scale Serverの全てのマシンにて、新たなスレーブサーバのホスト名を、 HadoopとSparkの設定ファイル(slaves)に登録します。

$ echo 'SERVER4' >> $HADOOP_HOME/conf/slaves
$ echo 'SERVER4' >> $Spark_HOME/conf/slaves

(3)DataNodeの起動

SERVER4にて以下のコマンドを実行します

$ hadoop-daemon.sh start datanode

(4)SparkのWorkerの起動

$ $SPARK_HOME/sbin/start-slave.sh spark://SERVER1:7077,SERVER2:7077

以上でノードの増設は完了です。

5.2.9. クラスタの特定のノードを除外する

本項ではノードの除外手順について、SERVER4のノードを除外する場合を例に説明します。

あらかじめ クラスタのノードを縮退する に基づき、ノードの縮退を行ってください。

(1)hosts.include、hosts.excludeの更新

SERVER4を除く全てのScale Serverにて、$HADOOP_HOME/confにある インクルードファイル(hosts.include)とエクスクルードファイル(hosts.exclude)からSERVER4の記述を削除します。

(2)slavesの更新

HadoopとSparkの設定ファイル($HADOOP_HOME/conf/slaves、$Spark_HOME/conf/slaves)から、 SERVER4の記述を削除します。

■ ノードのリフレッシュ

マスター・ノード(SERVER1)にて以下のコマンドを実行し、ノードのリフレッシュを行います。

$ hadoop dfsadmin -refreshNodes

以上でノードの除外処理は完了です。

5.2.10. 各プロセスを個別に起動・停止する

本項では、GridData Analytics Scale Server上で動作する 個別のプロセスの起動と停止方法について紹介します。各作業はgriddataユーザで行ってください。

■ DataNodeの起動

マスター・ノード、スレーブ・ノード共通です。

$ hadoop-daemon.sh start datanode

■ DataNodeの停止

マスター・ノード、スレーブ・ノード共通です。

$ hadoop-daemon.sh stop datanode

■ HDFSの起動

マスター・サーバでのみ実行します。

$ start-dfs.sh

■ HDFSの停止

マスター・サーバでのみ実行します。

$ stop-dfs.sh

■ Sparkの起動

スレーブ・ノードの場合は以下のコマンドを実行します。

# su - griddata
$ $SPARK_HOME/sbin/start-slave.sh spark://SERVER1:7077,SERVER2:7077

マスター・ノードの場合は以下のコマンドを実行します。

$ $SPARK_HOME/sbin/start-master.sh

■ Sparkの停止

スレーブ・ノードの場合は以下のコマンドを実行します。

$ $SPARK_HOME/sbin/stop-slave.sh

マスター・ノードの場合は以下のコマンドを実行します。

$ $SPARK_HOME/sbin/stop-master.sh