Apache Spark インストール – 3 ノード on Ubuntu No.29

自己投資としてチャレンジしている内容を Blog で公開しています。今回は Java で Spark を実行するため Apache spark クラスターを OS ubuntu 20.04.1 を使って 3 Node で構築してみたいと思います。

————————————
▼1. Apache Spark とは?
————————————
大量のデータ処理に利用できる統合分析エンジン。Java や Scala, Python および R 言語に対して API を提供しています。また Spark SQL, Spark Streaming, Spark Mlib および GraphX などがデータ処理に利用できます。
Overview – Spark 3.1.2 Documentation (apache.org)

————————————
▼2. Apache Spark のインストール
————————————
2-1. Spark は Hadoop や YARN のクライアントライブラリーを利用するため、事前準備として、本 blog で紹介した 3 node の Apache Hadoop をインストールした環境に Hadoop のユーザーでログインし、以降の作業を実施します。

Apache Hadoop クラスターのインストール (3 ノード) No.28

2-2. すべてのマシンにて、Downloads | Apache Spark から Apache Spark をダウンロードします。

wget https://downloads.apache.org/spark/spark-3.1.2/spark-3.1.2-bin-hadoop3.2.tgz

2-3. 解凍します (spark-3.1.2-bin-hadoop3.2.tgz をダウンロード済み)。パスの名前を変更します。

sudo tar xzvf spark-3.1.2-bin-hadoop3.2.tgz
mv spark-3.1.2-bin-hadoop3.2 spark

2-4. すべてのマシンにて、環境変数の設定を行います。
/home/hadoop/.profile の末尾の PATH を編集し、SPARK の bin および sbin の PATH を通します。

(変更前)
PATH=/home/hadoop/hadoop/bin:/home/hadoop/hadoop/sbin:$PATH
(変更後)
PATH=/home/hadoop/hadoop/bin:/home/hadoop/hadoop/sbin:/home/hadoop/spark/bin:/home/hadoop/spark/sbin:$PATH

/home/hadoop/.bashrc の末尾に以下を追記します。

export SPARK_HOME=/home/hadoop/spark/

また/home/hadoop/.bashrc の PATH も変更します。

(変更前)
export PATH=${PATH}:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin
(変更後)
export PATH=${PATH}:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${SPARK_HOME}/bin:${SPARK_HOME}/sbin

2-5. Spark Master ノードにて、spark master の設定をします。

sudo cp ${SPARK_HOME}/conf/spark-env.sh.template ${SPARK_HOME}/conf/spark-env.sh
sudo vi ${SPARK_HOME}/conf/spark-env.sh

spark-env.sh の末尾に以下を追加します。
(**) “masternode” は /etc/hosts で指定した master node の FQDN もしくは IP Address となります。

export SPARK_MASTER_HOST=masternode
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-x64/
export HADOOP_CONF_DIR=/home/hadoop/hadoop/etc/hadoop/

2-6. すべてのノードにて、以下を設定します。

sudo cp ${SPARK_HOME}/conf/workers.template ${SPARK_HOME}/conf/workers
sudo vi ${SPARK_HOME}/conf/workers

以下を追加します。(**) /etc/hosts で指定した各ノードの FQDN を指定します。

masternode
datanode1
datanode2

2-7. すべてのノードにて、hadoop ユーザーに $SPARK_HOME に対し管理者権限を与えます。

sudo chown -R hadoop /home/hadoop/spark

2-8. spark を起動します

Start spark cluster
cd /home/hadoop/spark
./sbin/start-all.sh

————————————
▼3. Spark のサンプルアプリケーションを実行
————————————
同梱されているサンプルをいくつか動かしてみます。
Overview – Spark 3.1.2 Documentation (apache.org)

3-1. example にある Java のコード JavaWordCount.java を実行

cd ~/spark
./bin/run-example JavaWordCount ./examples/src/main/java/org/apache/spark/examples/JavaWordCount.java
(Results)
xxxx
21/06/07 12:14:25 INFO DAGScheduler: Job 0 finished: collect at JavaWordCount.java:53, took 1.475489 s
.getOrCreate();: 1
output): 1
package: 1
Unless: 1
xxxx
tuple: 1
ones.reduceByKey((i1,: 1
additional: 1
Licensed: 1
21/06/07 12:14:25 INFO SparkUI: Stopped Spark web UI at xxxx

3-2.  example にある python のコード basic.py を実行

cd ~/spark
./bin/spark-submit ./examples/src/main/python/sql/basic.py
(Results)
xxx
21/06/07 12:40:51 INFO TaskSchedulerImpl: Killing all running tasks in stage 21: Stage finished
21/06/07 12:40:51 INFO DAGScheduler: Job 16 finished: showString at NativeMethodAccessorImpl.java:0, took 0.028043 s
+-------+
|   name|
+-------+
|Michael|
|   Andy|
| Justin|
+-------+
21/06/07 12:40:51 INFO SparkUI: Stopped Spark web UI xxx

3-3.   Scala shell の実行

cd ~/spark
./bin/spark-shell --master local[2]
(results)
xxx
Spark session available as 'spark'.
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 3.1.2
      /_/
Using Scala version 2.12.10 (OpenJDK 64-Bit Server VM, Java 1.8.0_292)
Type in expressions to have them evaluated.
Type :help for more information.
scala>

————————————
▼4. 参考情報
————————————
(1) Overview – Spark 3.1.2 Documentation (apache.org)


 以上です。参考になりましたら幸いです。



コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です