Raspberry Pi 2でApache Spark環境構築
ちょっと必要に駆られてApache Sparkの勉強をすることになりました。実際に手を動かして勉強したいところですが、なにせ分散処理技術なので、できれば複数台のPCを用意して試したいところです。が、そんなお金はございません。
ということで、できる限り低価格で分散環境を構築するため、Rasbperry Pi 2を2台使ってSparkを試してみたいと思います。
こんな酔狂なことをやっている先人っているのかしら、と思ったら、いました。
ありがたく参照させていただくことにします。今日の記事は上記の記事をベースに、少しだけ内容を補足したものになります。
Sparkどうこうをする前に、Raspberry Piの基本のセットアップを先にやってしまいます。ゼロから環境を立ち上げるのは久しぶりです。
NOOBSでRaspbianをインストールして、最初に表示されるraspi-config画面では以下の項目だけ設定。
Internationalisation Options
12 Change Timezone -> Asia -> Tokyo
ロケーションは文字化けとかの考慮が面倒なのでそのままにしています。キーボードも最初しか使わない(後はSSHログインでMacから操作する)ので、USのままです。
再起動してユーザpiでログインしたら、とりあえず
$ sudo apt-get update
してから、使い慣れたエディタ(自分の場合はvim)をインストール。
$ sudo apt-get install vim
それから、固定IPの割り振り設定。エディタで以下のファイルを編集します。
$ sudo vim /etc/network/interfaces
編集内容についてはネット上の至るところにあるので、割愛させていただきます。例えばこちらとか。
ここまで済んだら、以後はSSHでログインして操作します。今Raspberry Pi 2は2個用意しているので、ここまでの作業を2回やります。もちろん固定IPは別にして。
それから、初期設定だと2台ともホスト名がraspberrypiになっていて紛らわしいので、ホスト名も変更しておきます。root権限で、”/etc/hosts”と”/etc/hostname”で”raspberrypi”となっているところを、それぞれのRaspberry Piで”raspiA”, “raspiB”のように編集してから、再起動します。互いにホスト名でアクセスしたい場合は、それぞれの”/etc/hosts”に、互いのIPアドレスとホスト名を追加しておきましょう。
では、本筋のApache Sparkの環境を構築していきたいと思います。Apache SparkはJava 6以上とPython 2.6以上があれば動くということなので、まずそれらがインストールされているか確認。
$ python -V Python 2.7.3 $ java -version java version "1.8.0" Java(TM) SE Runtime Environment (build 1.8.0-b132) Java HotSpot(TM) Client VM (build 25.0-b70, mixed mode)
昔はjavaは後で自分でインストールしていたのですが、今はデフォルトで入っているようです。素晴らしい。
環境は確認できたので、Apache Sparkをダウンロードしてきます。ダウンロードページを見ていると何かすごい勢いでバージョンが上がっていっていますが、とりあえずこの記事執筆時点(2015/05/01)で最新のspark-1.3.1-bin-hadoop2.6.tgzをダウンロードしてきます。
$ wget http://ftp.meisei-u.ac.jp/mirror/apache/dist/spark/spark-1.3.1/spark-1.3.1-bin-hadoop2.6.tgz
通常ならダウンロードしてきたら即展開なのですが、参照記事ではSpark用のユーザを作成することを推奨されているので、そのようにします。
$ sudo adduser spark Adding user `spark' ... Adding new group `spark' (1004) ... Adding new user `spark' (1001) with group `spark' ... Creating home directory `/home/spark' ... Copying files from `/etc/skel' ... Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully Changing the user information for spark Enter the new value, or press ENTER for the default Full Name []: Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] Y
ついでに、作成したユーザsparkをsudoユーザに追加しておきます。これをやっとかないと、sparkユーザでSSHログインしているときに、ログイン元から”$ sudo shutdown -h now”でシャットダウンできないので。
$ sudo usermod -G sudo spark
アカウント作成とsudoユーザ追加ができたら、一度ログアウトしてsparkでログインします。それから、sparkのホームディレクトリ内で、さっき落としてきた圧縮ファイルを展開します。
$ tar xzvf ~pi/spark-1.3.1-bin-hadoop2.6.tgz
解凍できたら、spark-1.3.1-bin-hadoop2.6に移動して、Java (Scala)のサンプルを実行してみます。
$ cd spark-1.3.1-bin-hadoop2.6 $ bin/run-example SparkPi 10
実行してみると、なんか色々コンソールを流れていきますが、実行が完了すると、流れていった文字列の真ん中ぐらいの行に
Pi is roughly 3.141756
のような表示が見つかるはずです。最初名前を見て勘違いしていましたが、実行したサンプルは円周率を求めるプログラムであって、特にRaspberry Pi環境での実行に特化したサンプルというわけではありません。
これでとりあえずSparkをRaspberry Pi 2上で実行できることは確認できました。ただ、これだと何をやっているのかよくわからないので、次回はもうちょっと中身をちゃんと見ていきたいと思います。
ディスカッション
ピンバック & トラックバック一覧
[…] 前回、Raspberry Pi 2でApache Stormの実行環境を構築し、サンプルプログラムを実行するところまでやりました。 […]
[…] 前に一度やった、Raspberry Piを使った、並列分散処理基盤の評価環境作成の続きです。 […]
[…] のお仕事の中で並列分散処理基盤と関わることがあって、それで以前にRaspberry Pi上でのSpark環境構築やらStorm環境構築やらをやったことがあるのですが、並列分散処理基盤の元祖とも言え […]