LoginSignup
2
2

More than 5 years have passed since last update.

SparkをインストールしてMesosクラスタと疎通確認するまでの手順

Last updated at Posted at 2018-05-15

概要

SparkをインストールしてMesosクラスタとの疎通を確認します。
結構はまるので、メモとして残しておきます。

Mesosクラスタは以前に書いた以下の記事のものを使っていますので参考にしてください

[Mesosを簡単にインストールする]
https://qiita.com/48hands/items/5d17372b81b1923b16a7

  • Mesos 1.5.0クラスタ
    • node1: Mesosマスタ
    • node2,node3,node4: Meosスレーブ
  • Spark 2.3.0
    • node1~node4のMesosクラスタを構成するすべてのマシンにインストールします。

※各マシンのOSはCentOS7になっています。また、各マシンのメモリは2GB以上欲しいです。あまりメモリが少ないとSparkが実行できません

事前準備

Javaのインストール

SparkはJVM上で動作するのでJavaをMesosクラスタを構成するすべてのマシン(node1,node2,node3,node4)にJavaをインストールしておいてください。

sudo yum install -y java-1.8.0-openjdk

Sparkのインストール

Spark2.3.0のダウンロード

SparkのインストールもMesosクラスタを構築するすべてのマシンで実施してください。

cd ~
curl -O http://ftp.jaist.ac.jp/pub/apache/spark/spark-2.3.0/spark-2.3.0-bin-hadoop2.7.tgz
sudo tar xvfz spark-2.3.0-bin-hadoop2.7.tgz -C /opt/

spark-env.shの設定 

この設定もMesosクラスタを構築するすべてのマシンで実施してください。

/opt/spark-2.3.0-bin-hadoop2.7/conf/spark-env.shを各マシンで以下のように設定してください。

/opt/spark-2.3.0-bin-hadoop2.7/conf/spark-env.sh
MESOS_NATIVE_JAVA_LIBRARY=/usr/lib/libmesos.so
SPARK_LOCAL_IP=各自のIPアドレス
LIBPROCESS_IP=各自のIPアドレス

# 以下の2行は十分なメモリリソースがあれば不要
# 今回はメモリリソースが2GBぐらいしかないので仕方なく設定しています。
SPARK_DRIVER_MEMORY=512M
SPARK_DAEMON_MEMORY=256M

SPARK_HOMEの設定

この設定はMesosマスタ(筆者の環境だとnode1)だけで大丈夫です。
Sparkを実行するユーザの環境変数として設定してください。

echo 'export SPARK_HOME=/opt/spark-2.3.0-bin-hadoop2.7' >> ~/.bash_profile
source ~/.bash_profile

この設定によって、Sparkの分散実行先(Mesosスレーブ側)でSPARK_HOMEが環境変数として設定されていなくても、/opt/spark-2.3.0-bin-hadoop2.7をデフォルトで参照してくれるっぽいです。

spark-shellからMesos上で分散処理できるか確認

spark-shellをMesos上で動かして確認する。

パラメータですが、ざっくり説明すると、

executor-memoryはMesos Slave側でSparkの分散処理実行用に割り当てるメモリ(当然Mesosのリソースを超えるのはNG)。
total-executor-coresはSparkのタスクを処理するのに必要なクラスタ全体のコア数を表しています。

$SPARK_HOME/bin/spark-shell \ 
--master mesos://MesosマスタのIP:5050 \ 
--executor-memory 512M \ 
--total-executor-cores 3

...
spark context Web UI available at http://192.168.33.41:4040
Spark context available as 'sc' (master = mesos://192.168.33.41:5050, app id = 54c5ee8e-cd99-408a-b815-2c62c9f3fbb0-0011).
Spark session available as 'spark'.
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 2.3.0
      /_/

Using Scala version 2.11.8 (OpenJDK 64-Bit Server VM, Java 1.8.0_171)
Type in expressions to have them evaluated.
Type :help for more information.

scala> sc.parallelize(1 to 10000,30).sum
res1: Double = 5.0005E7

計算できていればOK!
sc.parallelize(1 to 10000,30).sumの部分は1から10000までの自然数の総和を計算する処理を30分割で分散実行するといった意味になります。

UIも以下のようになっていればOK!

[Mesos UI]
http://MesosマスタのIP:5050

spark-mesos.png

[Spark WebUI]
http://MesosマスタのIP:4040

spark-ui.png

サンプルJARアプリの実行

付属のJARサンプルアプリで円周率計算を実行できるかも念のため確認しておきます。ログがどっと出力されますが、途中でそれっぽい値が確認できるはずです。

$SPARK_HOME/bin/spark-submit --class org.apache.spark.examples.SparkPi \
--master mesos://MesosマスタのIP:5050 \
--executor-memory 512M
--deploy-mode client \
$SPARK_HOME/examples/jars/spark-examples_2.11-2.3.0.jar \
1000


...

Pi is roughly 3.1417888714178885
...

以上、SparkをインストールしてMesosクラスタで簡単に動作させて確認するまでの手順でした。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2