話題の分散演算環境である Apache Spark を1台の CentOS 6 に導入する手順を紹介します。今回紹介する内容はプレビルド版を使った方法なので、おそらく CentOS の他バージョンや、RHEL, Ubuntu といった他の Linux ディストリビューションでもほぼ同様の方法で導入できると思います。また分散環境で Spark をインストールするのが本来の使い方だと理解した上で、ここではシェルなどを自由に気軽に試せる環境を作りたいので、1台の CentOS を使う、という方法を紹介します。


Apache Spark は Java VM 上で動きます。なので前提として、Java のランタイム環境が必要です。 まだ導入されていない場合はあらかじめ Java を導入しておいてください。CentOS で OpenJDK 1.7.0 を使う場合であれば、このコマンドで導入できます:
# yum install java-1.7.0-openjdk

Java の導入までできてしまえば後はどの Linux ディストリビューションでも動くと思います。次に Apache Spark 本体をダウンロードします。このブログエントリを書いている時点での最新版は 1.5.2 なので、このバージョンのビルド済みバイナリを入手して、/opt/spark 以下に展開します:
# cd /tmp
# wget https://archive.apache.org/dist/spark/spark-1.5.2/spark-1.5.2-bin-cdh4.tgz
# cd /opt
# tar xzvf /tmp/spark-1.5.2-bin-cdh4.tgz
# mv spark-1.5.2-bin-cdh4 spark

これでインストール完了です。動作確認の意味で Spark-Shell と呼ばれるシェルインターフェースを起動してみましょう:
# cd /opt/spark/bin
# ./spark-shell
2015111001


"Spark" と書かれたそれっぽい画面がバージョン名とともに表示され、各種ライブラリのロードが行われます(Spark context が sc という変数で使える、というメッセージも表示されています)。Spark-Shell のロードが完了すると、 "scala>" というプロンプトが表示されます:

2015111002


では Spark の機能を使って Spark の README.md ファイルの文字数を カウントしてみます。README.md ファイルは Spark ディレクトリ(今回の例では /opt/spark/)の直下にあるので、sc 変数を使って以下のようにプロンプトに入力します。
scala> sc.textFile( "/opt/spark/README.md" ).count()

すると Spark の機能で指定したファイルが読み込まれ、その文字数(以下の例では 98)がカウントされて表示されます:

2015111003


正しく動作していることが確認できました。exit と入力すると、Spark-Shell を終了します。

IBM Bluemix でも Apache Spark を使う機会があると思うのですが、自分の手元に1個インスタンスがあると色々試せて便利ですよね。この後もちょっとした応用的なブログを書くつもりなので、それらはこのインスタンスを使って書いていこうと思ってます。