自己投資としてチャレンジしている内容を 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.tgz2-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 spark2-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}/sbin2-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.shspark-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
datanode22-7. すべてのノードにて、hadoop ユーザーに $SPARK_HOME に対し管理者権限を与えます。
sudo chown -R hadoop /home/hadoop/spark2-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 xxxx3-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 xxx3-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)
以上です。参考になりましたら幸いです。