2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

RaspberryPi で ApacheSparkを動かす

Last updated at Posted at 2016-12-06

はじめに

前提

RaspberryPi3を使用しています。
RaspberryPiがネットに繋がる状態であることとします。(固定IPで)
RaspberryPi3のOSはRaspbianを使用しています。
固定IPでRaspberryPi3に無線LAN設定までは記事にしていますので以下をご覧ください。
RaspberryPi3のOS(Raspbian)インストールから無線LAN設定まで

クラスター構成

RasberryPiを4台用意したので、1台をmaster、その他3台をslaveとしました。

RasberryPiにSparkを入れる

この設定は各RasberryPiで行う必要があります。
RasberryPiのユーザーは標準のpiを使用しました。その他のユーザーを使用したい場合は各RasberryPiでユーザー作成を行い、スイッチしてから作業してください。

RasberryPiにJava8のインストール

すでにjavaが入っている場合は飛ばしてください。

$ apt-cache search oracle jdk
$ sudo apt-get update
$ sudo apt-get install oracle-java8-jdk

/etc/hostnameの設定

各RasberryPiをIPでなくhost名で管理するために設定します。
自分でわかりやすい名前をつけてください。

$ sudo vi /etc/hostname

/etc/hostsの設定

各RasberryPiに通信する際楽になるので設定します。
/etc/hostnameの設定でつけたhostnameとそのRasberryPiのIPを全マシン分記載してください。

$ sudo vi /etc/hosts

例として参考までに載せておきます。

/etc/hosts
##### ↓のlocalhostやipv6はコメントアウトしています。
#127.0.0.1      localhost
#::1            localhost ip6-localhost ip6-loopback
#ff02::1                ip6-allnodes
#ff02::2                ip6-allrouters
#127.0.1.1      raspberrypi

##### ↓が各RasberryPiのホスト名(今回追記分)
192.168.11.10 green01
192.168.11.11 blue01
192.168.11.12 pink01
192.168.11.13 clear01

RasberryPiを再起動する

$ sudo reboot

masterからslaveへSSHする際PWを求められないように、鍵を配置する

この作業はmasterのRasberryPiのみで大丈夫です。

$ ssh-keygen
$ ssh-copy-id pi@green01
$ ssh-copy-id pi@blue01
$ ssh-copy-id pi@pink01
$ ssh-copy-id pi@clear01

Sparkをダウンロードする

2016/11/28時点で最新だったものをダウンロードしています。
version 2.0.2

$ wget http://d3kbcqa49mib13.cloudfront.net/spark-2.0.2-bin-hadoop2.7.tgz
$ tar xzvf spark-2.0.2-bin-hadoop2.7.tgz

Sparkの設定

修正対象は以下の2ファイルです。

  • conf/slaves
  • conf/spark-env.sh

conf/slavesはmasterだけ設定しておけばいいのですが、conf/spark-env.shについてはslaveにも同様のファイルを配置する必要があります。
例としてgreen01というhostnameのRaspberryPiをmasterとします。

conf/slavesの設定

$ cd spark-2.0.2-bin-hadoop2.7/
$ cp conf/slaves.template conf/slaves
$ vi conf/slaves

conf/slavesの末尾にslaveのhostnameを追記してください。
例として参考までに載せておきます。

conf/slaves
blue01
pink01
clear01

conf/spark-env.shの設定

$ cd spark-2.0.2-bin-hadoop2.7/
$ cp conf/spark-env.sh.template conf/spark-env.sh
$ vi conf/spark-env.sh

conf/spark-env.shの末尾に追記してください。
例として参考までに載せておきます。
パラメータ値は自由に設定してください。

conf/spark-env.sh
SPARK_MASTER_IP=green01
SPARK_EXECUTOR_MEMORY=512m
SPARK_DRIVER_MEMORY=512m
SPARK_EXECUTOR_INSTANCES=3

※このconf/spark-env.shはslaveの同パスに配置する必要があります。

Sparkを動かす

ようやくここまできました。
ここの作業はmasterで行ってください。

SparkClusterの起動

$ cd spark-2.0.2-bin-hadoop2.7/
$ ./sbin/start-all.sh

起動しているかWebにアクセスして確認してみてください。
"http://(masterのIPアドレス):8080"
うまく行っていれば「Workers」にslave達が羅列されていると思います。
もしされていなければもう一度設定を見なおしてみてください。

Sparkを実行する

以下のコマンドで「--master spark://(masterのIPアドレス):7077」は各自置き換えてください。

$ bin/spark-submit --class org.apache.spark.examples.GroupByTest --master spark://(masterのIPアドレス):7077 examples/jars/spark-examples_2.11-2.0.2.jar 30

SparkClusterの停止

$ cd spark-2.0.2-bin-hadoop2.7/
$ ./sbin/stop-all.sh

参考

Raspberry Pi 2 2台でApache Sparkの並列分散処理を試す

おわりに

永かった・・・
無事RaspberryPi達を労働者にすることができました。
次はCassandra入れてみようと思います。

2
5
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
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?