ページの先頭行へ戻る
Interstage Big Data Parallel Processing Server V1.2.1 ユーザーズガイド
FUJITSU Software

I.2.4 資産展開・設定

Sparkの資産展開・設定方法について説明します。

資産展開・設定項目

導入環境

マスタサーバ
(セカンダリ)

スレーブ
サーバ

開発実行
環境
サーバ

データ
ベース
サーバ

Hiveのインストール

×

×

×

メタデータ格納用データベースの作成

×

×

×

Sparkのインストール

×

設定ファイルの編集

×

動作確認

×

×

○:実施する必要があります。

×:実施は不要です。


Hiveのインストール

Hiveをインストールする方法について説明します。


  1. マスタサーバ(セカンダリ)に、root 権限でログインします。

  2. 本製品の開発実行環境サーバにあるHive資産を、マスタサーバ(セカンダリ)に格納します。

    # scp root@develop:/opt/FJSVbdpp/products/HADOOP/PKG/apache-hive-0.13.1-bin.tar.gz /tmp <Enter>
  3. Hive資産を展開します。

    # cd /tmp <Enter>
    # tar zxvf apache-hive-0.13.1-bin.tar.gz <Enter>
  4. Hive資産を移動します。

    # mv apache-hive-0.13.1-bin /usr/local <Enter>
  5. Hive資産の所有者をSpark実行ユーザーに変更します。

    # chown spark:bdppgroup -R /usr/local/apache-hive-0.13.1-bin <Enter>
  6. HiveのlibディレクトリにJDBCドライバーをコピーします。

    # cp {JDBCドライバーのjarファイル} /usr/local/apache-hive-0.13.1-bin/lib <Enter>
  7. コピーしたJDBCドライバーの所有者を変更します。

    # chown spark:bdppgroup /usr/local/apache-hive-0.13.1-bin/lib/{JDBCドライバーのjarファイル} <Enter>

メタデータ格納用データベースの作成

Sparkのメタデータを格納するためのデータベース(以降、メタストアデータベースと記載)の作成方法について説明します。

メタストアデータベースの作成はデータベースサーバで実施します。

Sparkがメタストアデータベースへの接続に利用するDBユーザーには、以下が設定されている必要があります。

  1. マスタサーバ(セカンダリ)上に格納されているデータベース作成用DDLファイルをデータベースサーバ上の任意のディレクトリにコピーします。

    # scp -p root@master2:/usr/local/apache-hive-0.13.1-bin/scripts/metastore/upgrade/mysql/hive-schema-0.13.0.mysql.sql /tmp/hive-schema-0.13.0.mysql.sql <Enter>
  2. MySQLに接続します。

    # mysql -u root -p <Enter>
    Enter password: (MySQLの管理者パスワード)
  3. データベースとスキーマを作成します。

    mysql> CREATE DATABASE metastore_spark; <Enter>
    mysql> USE metastore_spark; <Enter>
    mysql> SOURCE /tmp/hive-schema-0.13.0.mysql.sql; <Enter>
    ・・・
  4. マスタサーバ(セカンダリ)からメタストアデータベースに接続するためのDBユーザーを作成します。

    mysql> CREATE USER 'hive'@'master2' IDENTIFIED BY 'hive_password'; <Enter>
    mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'hive'@'master2'; <Enter>
    mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,LOCK TABLES,EXECUTE ON metastore_spark.* TO 'hive'@'master2'; <Enter>
    mysql> FLUSH PRIVILEGES; <Enter>

Sparkのインストール

Sparkをインストールする方法について説明します。

ポイント

Sparkの公式HP(http://spark.apache.org)から、Hadoop1用のSpark資産(spark-1.4.1-bin-hadoop1.tgz)をダウンロードして利用してください。


マスタサーバ(セカンダリ)へのインストール
  1. マスタサーバ(セカンダリ)に、root 権限でログインします。

  2. ダウンロードしたSpark資産(spark-1.4.1-bin-hadoop1.tgz)をサーバに配置します。以降の手順では、/tmp配下に配置した場合の実行例で説明します。

  3. Spark資産を展開します。

    # cd /tmp <Enter>
    # tar zxvf spark-1.4.1-bin-hadoop1.tgz <Enter>
  4. Spark資産を移動します。

    # mv spark-1.4.1-bin-hadoop1 /usr/local <Enter>
  5. Spark資産の所有者をSpark実行ユーザーに変更します。

    # chown spark:bdppgroup -R /usr/local/spark-1.4.1-bin-hadoop1 <Enter>
  6. SparkのPIDファイルを格納するディレクトリを作成します

    # mkdir {PIDファイルを格納するディレクトリ} <Enter>
  7. PIDファイルを格納するディレクトリの所有者を変更します

    # chown spark:bdppgroup {PIDファイルを格納するディレクトリ} <Enter>
  8. SparkのlibディレクトリにJDBCドライバーをコピーします

    # cp {JDBCドライバーのjarファイル} /usr/local/spark-1.4.1-bin-hadoop1/lib <Enter>
  9. コピーしたJDBCドライバーの所有者を変更します。

    # chown spark:bdppgroup /usr/local/spark-1.4.1-bin-hadoop1/lib/{JDBCドライバーのjarファイル} <Enter>
  10. Workerを実行するサーバを定義ファイル/usr/local/spark-1.4.1-bin-hadoop1/conf/slavesを編集して定義します。

    # vi /usr/local/spark-1.4.1-bin-hadoop1/conf/slaves <Enter>
    # cat /usr/local/spark-1.4.1-bin-hadoop1/conf/slaves <Enter>
    slave6
    slave7
    slave8
    slave9
    slave10

    注意

    CPU・メモリなどのチューニングをしない場合は、TaskTrackerを実行するスレーブサーバと、Workerを実行するサーバは分けて運用してください。

    同じスレーブサーバでTaskTrackerとWorkerを実行した場合、CPU・メモリなどのリソースが競合するためパフォーマンスが低下します。

    Workerを実行するサーバでTaskTrackerが実行されないようにスレーブサーバ定義ファイル/etc/opt/FJSVbdpp/conf/slavesを編集および反映してください。

    編集および反映の方法については、「13.2.3 スレーブサーバ定義ファイルの編集および反映」を参照してください。


スレーブサーバへのインストール
  1. スレーブサーバに、root 権限でログインします。

  2. ダウンロードしたSpark資産(spark-1.4.1-bin-hadoop1.tgz)をサーバに配置します。以降の手順では、/tmp配下に配置した場合の実行例で説明します。

  3. Spark資産を展開します。

    # cd /tmp <Enter>
    # tar zxvf spark-1.4.1-bin-hadoop1.tgz <Enter>
  4. Spark資産を移動します。

    # mv spark-1.4.1-bin-hadoop1 /usr/local <Enter>
  5. Spark資産の所有者をSpark実行ユーザーに変更します。

    # chown spark:bdppgroup -R /usr/local/spark-1.4.1-bin-hadoop1 <Enter>
  6. SparkのPIDファイルを格納するディレクトリを作成します

    # mkdir {PIDファイルを格納するディレクトリ} <Enter>
  7. PIDファイルを格納するディレクトリの所有者を変更します

    # chown spark:bdppgroup {PIDファイルを格納するディレクトリ} <Enter>

開発実行環境サーバへのインストール
  1. 開発実行環境サーバに、root 権限でログインします。

  2. ダウンロードしたSpark資産(spark-1.4.1-bin-hadoop1.tgz)をサーバに配置します。以降の手順では、/tmp配下に配置した場合の実行例で説明します。

  3. Spark資産を展開します。

    # cd /tmp
    # tar zxvf spark-1.4.1-bin-hadoop1.tgz <Enter>
  4. Spark資産を移動します。

    # mv spark-1.4.1-bin-hadoop1 /usr/local <Enter>
  5. Spark資産の所有者をSpark利用ユーザーに変更します。

    # chown sparkuser1:bdppgroup -R /usr/local/spark-1.4.1-bin-hadoop1 <Enter>

設定ファイルの編集

環境に合わせてSparkの設定ファイルを作成・編集する必要があります。

各サーバで作成・編集が必要な設定ファイルは以下のとおりです。

設定ファイル

導入環境

格納ディレクトリ

マスタサーバ
(セカンダリ)

スレーブ
サーバ

開発実行
環境
サーバ

データ
ベース
サーバ

spark-env.sh

×

/usr/local/spark-1.4.1-bin-hadoop1/conf

core-site.xml(*1)

×

/etc/hadoop_spark

hive-site.xml

×

×

■マスタサーバ(セカンダリ)

/usr/local/apache-hive-0.13.1-bin

■開発実行環境サーバ

/usr/local/spark-1.4.1-bin-hadoop1/conf

○:設定する必要があります。

×:設定は不要です。

*1:Hadoop用のcore-site.xmlとは別に、Spark用のcore-site.xmlを作成する必要があります。


参照

各設定ファイルの設定項目については「I.2.6 設定ファイル」を参照してください。


動作確認

Sparkが正常に動作することを確認します。


Hive Metastoreの起動

Hive Metastoreが正常に起動することを確認します。

  1. マスタサーバ(セカンダリ)に、root 権限でログインします。

  2. Spark実行ユーザーに切り替えます。

    # su - spark <Enter>
  3. 環境変数HADOOP_CONF_DIRにSpark用のHadoop設定ファイル(core-site.xml)が格納されているディレクトリを指定します。

    $ export HADOOP_CONF_DIR=/etc/hadoop_spark
  4. Hive Metastoreを起動します。

    $ nohup /usr/local/apache-hive-0.13.1-bin/bin/hive --service metastore & <Enter>	
    [1] {HievのPID}
    nohup: ignoring input and appending output to `nohup.out'
  5. Hive Metastoreが正常に起動していることを確認します。

    $ ps u --pid {HievのPID} <Enter>
    USER                   PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    spark   {HiveのPID} 35.6  3.2 677112 128424 pts/0   Sl   17:19   0:06 /usr/lib/jre-fj

ポイント

psコマンドでHive Metastoreが表示されなかった場合は、Hiveのログ(デフォルトでは/tmp/{Spark実行ユーザー}/hive.log)を参照して対処を行ってからもう一度起動してください。


注意

  • Hive Metastoreの起動時は、環境変数HADOOP_CONF_DIRにSpark用のHadoop設定ファイル(core-site.xml)が格納されたディレクトリを設定してください。

  • マスタサーバ(セカンダリ)でSpark用のHive Metastoreとは別にHive Metastoreを起動している場合、それぞれのHive Metastoreで使用するポート番号は異なるものを指定してください。Hive Metastoreの起動時に「p」オプションを使用することでポート番号を指定できます。

    hive --service metastore -p {Hiveメタストアポート番号} <Enter>

Sparkの起動

Sparkが正常に起動することを確認します。

  1. マスタサーバ(セカンダリ)に、root 権限でログインします。

  2. Spark実行ユーザーに切り替えます。

    # su - spark <Enter>
  3. Sparkを起動します。

    $ /usr/local/spark-1.4.1-bin-hadoop1/sbin/start-all.sh <Enter>
    starting org.apache.spark.deploy.master.Master, logging to /usr/local/spark-1.4.1-bin-hadoop1/sbin/../logs/spark-spark-org.apache.spark.deploy.master.Master-1-master2.out
    slave6: starting org.apache.spark.deploy.worker.Worker, logging to /usr/local/spark-1.4.1-bin-hadoop1/sbin/../logs/spark-spark-org.apache.spark.deploy.worker.Worker-1-slave6.out
    …
  4. Spark web UI(http://{マスタサーバ(セカンダリ)の業務LANのIP}:8080)にアクセスし、MasterとWorkerが起動していることを確認します。

    URL:
        http://10.10.10.12:8080

spark-submitによる確認

spark-submitが正常に動作することを確認します。

  1. 開発実行環境サーバに、root 権限でログインします。

  2. Spark利用ユーザーに切り替えます。

    # su - sparkuser1 <Enter>
  3. Sparkのインストールディレクトリに移動します。

    $ cd /usr/local/spark-1.4.1-bin-hadoop1 <Enter>
  4. sampleプログラムを実行し、標準出力に"Pi is roughly {数値}"が表示されることを確認します({数値}は実行毎に異なります)。

    $ ./bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://10.10.10.12:7077 ./lib/spark-examples-1.4.1-hadoop1.0.4.jar 1000 <Enter>
    Pi is roughly 3.14173448

spark-sqlによる確認

spark-sqlが正常に動作することを確認します。

  1. 開発実行環境サーバに、root 権限でログインします。

  2. Spark利用ユーザーに切り替えます。

    # su - sparkuser1 <Enter>
  3. Sparkのインストールディレクトリに移動します。

    $ cd /usr/local/spark-1.4.1-bin-hadoop1 <Enter>
  4. spark-sqlを起動します。

    $ ./bin/spark-sql --master spark://10.10.10.12:7077 <Enter>
  5. テーブル1を作成し、データを格納します。

    > CREATE TABLE IF NOT EXISTS src1 (key INT, value STRING); <Enter>
    Time taken: 1.46 seconds
    > LOAD DATA LOCAL INPATH 'examples/src/main/resources/kv1.txt' INTO TABLE src1; <Enter>
    Copying data from file:/usr/local/spark-1.4.1-bin-hadoop1/examples/src/main/resources/kv1.txt
    Copying file: file:/usr/local/spark-1.4.1-bin-hadoop1/examples/src/main/resources/kv1.txt
    Loading data to table default.src1
    Table default.src1 stats: [numFiles=1, numRows=0, totalSize=5812, rawDataSize=0]
    OK
    Time taken: 2.06 seconds
    > SELECT COUNT(*) FROM src1;
    500
    Time taken: 6.75 seconds, Fetched 1 row(s)
  6. テーブル2を新規に作成し、データを格納します。

    > CREATE TABLE IF NOT EXISTS src2 (key INT, value STRING); <Enter>
    Time taken: 1.46 seconds
    > LOAD DATA LOCAL INPATH 'examples/src/main/resources/kv1.txt' INTO TABLE src2; <Enter>
    Copying data from file:/usr/local/spark-1.4.1-bin-hadoop1/examples/src/main/resources/kv1.txt
    Copying file: file:/usr/local/spark-1.4.1-bin-hadoop1/examples/src/main/resources/kv1.txt
    Loading data to table default.src2
    Table default.src2 stats: [numFiles=1, numRows=0, totalSize=5812, rawDataSize=0]
    OK
    Time taken: 2.06 seconds
    > SELECT COUNT(*) FROM src2;
    500
    Time taken: 6.75 seconds, Fetched 1 row(s)
  7. テーブル1にテーブル2のデータを追加します。

    > INSERT INTO TABLE src1 SELECT * FROM src2; <Enter>
    Time taken: 1.558 seconds
    > SELECT COUNT(*) FROM src1; <Enter>
    1000
    Time taken: 0.931 seconds, Fetched 1 row(s)
  8. テーブル1のデータを削除します。

    > TRUNCATE TABLE src1; <Enter>
    
    > SELECT COUNT(*) FROM src1; <Enter>
    0
    Time taken: 0.564 seconds, Fetched 1 row(s)
  9. テーブル1を削除します。

    > DROP TABLE src1; <Enter>
    OK
    Time taken: 0.319 seconds
    > SHOW TABLES; <Enter>
    src2    false
    Time taken: 0.152 seconds, Fetched 1 row(s)