Apache SparkをRaspberry Pi3やJetson nanoにインストール

機器情報など

  • Raspberry Pi3 B+ PRETTY_NAME=”Raspbian GNU/Linux 11 (bullseye)”
  • Jetson nano Ubuntu 18.04.6 LTS (Bionic Beaver)

ラズパイ3台、Jetson nano1台の計4台分散コンピューティングしてみようかと思います。
マスターをラズパイより1台ピックアップし、残り3台をワーカーで設定してみます。

マスター:rasp12
ワーカー:rasp11, rasp13, jnano21

hostsファイルに記述してるんですが、上記のようにマスターとワーカーを分けることにしました。
(成り行きで変な分け方になってしまいました・・・)

前準備

(Jetson Nanoのみ) jdkのインストール

Sparkを動かすにはJavaが必要とのことで、インストールします。
(ラズビアンはプレインストールされてるみたいで必要ないです。)
$ sudo apt-add-repository ppa:openjdk-r/ppa
$ sudo apt update
$ sudo apt install openjdk-8-jdk

/etc/hostsファイルへ追加

アクセスしやすくするために別名を付けました。
192.168.0.212 rasp12

192.168.0.211 rasp11
192.168.0.213 rasp13
192.168.0.221 jnano21

sparkユーザの追加

作業はsparkユーザを作ってやるのが好みだったので、追加しました。

$ sudo adduser spark
$ su - spark


ここからのの作業はsparkユーザでの作業になります。
# su - spark

Apache Sparkのダウンロード&解凍(4台)

4台全てに同じ作業をします。

作業用ディレクトリの作成

マスター、ワーカーで同じパスに置いておくと良いという事で、作業ディレクトリをそれぞれ作ります。
ユーザのルートにSparkディレクトリを作成して、この中にApache Sparkの本体を置くことにします。
/optとか/usr/localとかに移そうかとも思ったのですが、面倒だったのでこのまま作業しました。

$ mkdir Spark
$ cd Spark
$ pwd ## /home/spark/Spark

ダウンロード

ダウンロードして解凍したディレクトリ名をspark-3.2と変更しました。ここら辺はお好みで。

Apache Sparkダウンロードページからたどっていってダウンロードしました。
最新版が3.2.0だったのでこれを選択しました。

$ wget https://dlcdn.apache.org/spark/spark-3.2.0/spark-3.2.0-bin-hadoop3.2.tgz
$ tar zxvf spark-3.2.0-bin-hadoop3.2.tgz
$ mv spark-3.2.0-bin-hadoop3.2 spark-3.2
$ cd spark-3.2

マスターの起動(rasp12)

マスターに設定するrasp12での作業になります。
$ pwd ## /home/spark/Spark/spark-3.2
$ sbin/start-master.sh -h rasp12

ワーカーの起動(rasp11, rasp13, jnano21)

ワーカーに設定するrasp11, rasp13, jnano21での作業になります。
以下で起動する。

リソースに制限をかけない場合

$ pwd ## /home/spark/Spark/spark-3.2
$ sbin/start-worker.sh spark://rasp12:7077

リソースを制限する場合(この場合はCPUを1GB, メモリを2GB)

$ pwd ## /home/spark/Spark/spark-3.2
$ sbin/start-worker.sh spark://rasp12:7077 -c 1 -m 2G

昔はスレーブって記述が多いですが、今はワーカーと呼ぶみたいですね。slaveで起動しようとすると、無効になったとかで怒られました。

This script is deprecated, use start-worker.sh

クラスタ起動を確認

ブラウザで確認

以下のURLでアクセスして起動を確認できます。(まだワーカー2台しか起動してませんです・・・)
http://192.168.1.212:8080

Apach_Sparkの起動をプラウ座で確認

pysparkで確認

$ bin/pyspark ## ワーニングが出るがとりあえず動いてるようです
>>> sc.parallelize(range(10000)).collect()
>>> exit()

停止

ワーカー(それぞれで実行)

$ sbin/stop-worker.sh

マスター

$ sbin/stop-master.sh

数年前にApache Sparkの存在を知った時は、インストールはすごく面倒で難しく感じたのですが、ネットの色々な情報のおかげでなんとか設定することができました。感謝いたします。
以上になります。


こういうブログもありました。

人気のあるブログ:

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください