2. GridData Lake Serverのインストール

本章では、GridData Lake Serverを複数台のマシンにインストールし、クラスタを構成する方法を説明します。 このとき、インストールは各マシンで行ってください。 また、インストールする場合の例として、マスター・ノードをSPARK1、 スレーブ・ノードをそれぞれSPARK1、SPARK2、SPARK3としてクラスタを構成する場合を説明します。

またこのとき、各サーバは、それぞれ以下のホスト名とIPアドレスを持つものとします。

マシン名 ホスト名 IPアドレス
Lake Server(master,slave1) SPARK1 10.0.0.1
Lake Server(slave2) SPARK2 10.0.0.2
Lake Server(slave3) SPARK3 10.0.0.3

ホスト名をあらかじめ変更し、また本マニュアル内でIPアドレスが登場する場合は、実際の値に置き換えてください。

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

各手順は、特に指示がない手順に関しては全てのマシン上で行ってください。

(1)/etc/hostsの編集

/etc/hostsを編集し、全マシンのホスト名とIPアドレスを追加します。

10.0.0.1                SPARK1
10.0.0.2                SPARK2
10.0.0.3                SPARK3

(2)griddataユーザーを作成します。パスワードは任意に設定してください。

# adduser griddata
# passwd griddata

(3)作成したユーザーでログインします

# su - griddata

(4)SSHの設定

(4-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@SPARK1

(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
$ sudo  chmod 600 ~/.ssh/authorized_keys

(4-4)SSHでログインできることを確認します。

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

(5)マスター・ノードから公開鍵ファイルの配布

マスター・ノードのサーバ(SPARK1およびSPARK2)から、公開鍵ファイル「~/.ssh/id_dsa.pub」をスレーブ・ノードの各サーバに配付します。

$ cd ~
$ scp ~/.ssh/id_dsa.pub griddata@SPARK3:SPARK1_id_dsa.pub
The authenticity of host SPARK2(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 ' SPARK2,IP Address (RSA) to the list of known hosts.
griddata@SPARK2's password:griddata
id_dsa.pub
$ scp ~/.ssh/id_dsa.pub griddata@SPARK3:SPARK2_id_dsa.pub
…

(6)スレーブ・サーバでのSSHの追加設定

スレーブ・ノードの各サーバーにて、 マスター・ノードのサーバーの公開鍵ファイル「SPARK1_id_dsa.pub」および「SPARK2_id_dsa.pub」の内容を、 スレーブ・ノードの各サーバーの「~/.ssh/authorized_keys」ファイルに追加します。

$ cd ~
$ cat SPARK1_id_dsa.pub >> ~/.ssh/authorized_keys
$ rm SPARK1_id_dsa.pub

(7)マスター・サーバでのログインの確認

マスター・ノードのサーバにログインし、SSHでスレーブ・ノードの各サーバーにログインできることを確認します。

$ ssh SPARK2
Last login: ddd mm dd hh:mm:ss yyyy from SPARK1
$ exit
logout
Connection to SPARK2 closed.
$ ssh SPARK3
Last login: ddd mm dd hh:mm:ss yyyy from SPARK1
$ exit
logout

(8)ファイルのコピー

/home/griddataにメディアの/softwares/の中身をコピーします。

$ cp –rf [モジュールのパス]/softwares* /home/griddata

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

2.2. インストール手順

各手順はgriddataユーザで実施してください。

(1)lake.tar.gzを解凍します

$ cd /home/griddata
$ tar -zxvf lake.tar.gz

(2)griddata-core.tar.gzを解凍します

$ tar -zxvf griddata-core.tar.gz

(3)環境変数の設定用スクリプトgriddata.shを/etc/profile.d/にコピーします

$ cd /home/griddata/griddata-core
$ sudo cp griddata.sh  /etc/profile.d/
$ sudo chmod a+x /etc/profile.d/griddata.sh

(4)環境変数を更新します

$ exec $SHELL -l

Embulkサーバのインストール設定

Embulkサーバの起動用スクリプトをサービスに登録します

$ sudo chmod +x /home/griddata/lake/embulk-server/embulk-server.sh
$ sudo ln -s /home/griddata/lake/embulk-server.sh /etc/init.d/embulk-server
$ sudo chkconfig --add embulk-server

Fluentdサーバのインストール設定

Fluentdサーバの起動用スクリプトをサービスに登録します

$ sudo chmod +x /home/griddata/lake/fluentdserver/fluentd-server.sh
$ sudo ln -s /home/griddata/lake/fluentd-server.sh /etc/init.d/fluentd-server
$ sudo chkconfig --add fluentd-server

以上でインストールは完了です。以降は各ソフトウェアの初期設定を行ってください。

2.3. 初期設定

各手順はgriddataユーザにて、GridData Lake Serverをインストールした全てのマシンで実施してください。

Sparkの初期設定

/home/griddata/griddata-core/spark/conf以下にある設定ファイルspark-env.sh対し、設定値を修正します。

各マシンごとに、SPARK_MASTER_HOSTの値を以下のように変更してください。

ホスト名 設定値
SPARK1 SPARK_MASTER_HOST=SPARK1
SPARK2 SPARK_MASTER_HOST=SPARK2
その他 「SPARK_MASTER_HOST」の項目があれば削除する

以上でSparkの設定は完了です。

Zookeeperの初期設定

Zookeeperの設定ファイルmyidを作成します。

各マシンごとに、それぞれ以下のコマンドを実行してください。

ホスト名 実行コマンド
SPARK1 $ echo 1 > /home/griddata/griddata-core/zookeeper/tmp/zookeeper/myid
SPARK2 $ echo 2 > /home/griddata/griddata-core/zookeeper/tmp/zookeeper/myid
SPARK3 $ echo 3 > /home/griddata/griddata-core/zookeeper/tmp/zookeeper/myid

以上でZookeeperの設定は完了です。

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

  • /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/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

設定ファイルとその値については、 パラメータ一覧  も参照してください。

2.4. 動作確認

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

各手順はgriddataユーザで実行します。

■ HDFSの起動

(1)ZooKeeperを起動します。

Lake 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のサーバー(SPARK1)で、各マシンの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側のサーバー(SPARK2)で、スタンバイ側のNameNodeを初期化します。

$ hadoop namenode -bootstrapStandby

(6)StandbyにするNameNode側のサーバーで、スタンバイ側のNameNodeを起動します。

$ hadoop-daemon.sh start namenode

(7)マスター・ノード(SPARK1)から、各マシンのDataNodeを起動します。

$ hadoop-daemons.sh start datanode

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

$ hdfs zkfc -formatZK

(9)NameNodeのサーバー(SPARK1,SPARK2)で、ZKFCを起動します

$ hadoop-daemon.sh start zkfc

(10)Namenodeの状態を確認します。

SPARK1で実施します。

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

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

■ Sparkの起動

以下の方法でSparkを起動します。

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

SPARK1で実施します。

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

(2)Activeにするマスター・サーバ(SPARK1)でSparkのマスターを起動します

$ $SPARK_HOME/sbin/start-master.sh

(3)Standbyを行うサーバ(SPARK2)でSparkのマスターを起動します

$ $SPARK_HOME/sbin/start-master.sh

(4)SparkのWorkerを起動します

Lake Serverをインストールした全てのマシン上で実施します。

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

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

Sparkを停止する場合は、 Sparkクラスタを停止する をご参照ください。

■ Fluentdサーバの起動

SPARK1で実施します。

$ sudo service fluentd-server start

以上でFluentdサーバの起動は完了です。

■ Embulkサーバの起動

SPARK1で実施します。

$ sudo service embulk-server start

以上でEmbulkサーバの起動は完了です。

2.5. ディレクトリ構成

ディレクトリ 作成されるファイル・ディレクトリ 備考
/home/griddata/griddata-core/adapters/mapreduce ezmorph-1.0.6.jar  
  gd-mapreduce.jar  
  GDMessage_en.properties  
  GDMessage_ja.properties  
  json-lib-2.4-jdk15.jar  
/home/griddata/griddata-core/adapters/spark datasource.jar  
/home/griddata/griddata-core/ hadoop/ シンボリックリンク
  hadoop-2.7.3/  
  spark/ シンボリックリンク
  spark-2.1.1-bin-hadoop2.7/  
  zookeeper-3.4.9/  
  zookeeper シンボリックリンク
  gd-config.xml  
  griddata.sh  
/home/griddata/lake/logs    
/home/griddata/lake/scala