はじめに
はじめまして、IBMの田中裕一です。
デバイスやセンサの高度化による、モバイルから取得できるデータの多様化、IoTの本格化といったハードウェアの面、機械学習の本格的な広がりといったソフトウェアの面、双方の進歩もあり、ビッグデータのキーワードのもと、大規模なデータ分析基盤を構築するデータエンジニアやデータサイエンティストの重要性が増しています。
昨今いろいろな分散処理基盤や機械学習ライブラリが登場してきましたが、本連載では数回に分けてApacheプロジェクトでも人気が高いApache Spark(以下、Spark)を使い、Sparkでのプログラミングやデータ処理を中心に見ていきます。
また、分散処理系で入門時につまづくことが多いClusterでの動作や、Sparkの詳細な挙動を連載後半に回すことで、Sparkを使う際のハードルを下げられればと思っています。
対象読者
連載を通して、Sparkに興味はあるがまだ触れたことのないScala、Pythonエンジニアや、Sparkを始めたばかりの方、Sparkに興味のあるデータサイエンティストの方が、Sparkで実現したいアプリケーションを実装できる、SparkのCluster構築を行いデータの解析を行える、チューニングを行うことができることを目標としています。
- Sparkに興味があるが触ったことがないScala、Pythonエンジニア
- Spark初心者
- Sparkに興味があるデータサイエンティスト
本連載ではScalaとPythonのコードを取り扱いますが、Scala側のコードについて極力コメントを多くつけることでScalaに慣れていないユーザーにも取り組みやすくなればと思っています。
Sparkを使うための準備
Sparkを本格的にプロダクションで利用するには、分散環境を構築することをお勧めしますが、Sparkでのプログラミング習得をメインに、まずローカル環境でSparkのプログラムを動かし、Sparkでのプログラミングを始めてみましょう。
ローカルでSparkを動かす環境の準備
ここではSparkを動かす環境を作ります(執筆時点でSparkはv1.6.1が最新)。
Macでのインストール
Sparkを動かすためにJDKが必要です。下記からインストールしておきましょう
ここでは、Macで動作環境を作成します。
MacではパッケージマネージャーのHomebrewを利用することで簡単にSparkの環境構築が可能です。Homebrewが入っていない方は、次の手順でHomebrewをインストールしてください。
#Homebrewのインストール /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Homebrewのインストールが終わったら、Homebrewを使ってSparkをインストールします。次のコマンドを実行すると、Sparkがインストールされます。
#Homebrewを使ってapache-sparkをインストール brew install apache-spark
Windowsでのインストール
ここではWindows 7 64bitの環境をターゲットに環境を構築しますが、Windows 10の場合も同様の手順で構築可能です。
補足
Macと同様にWindowsの場合もJavaのインストールが別途必要です。
Windows上でSparkを動作させるために、Sparkのダウンロードページからパッケージをダウンロードします。
Sparkでは、いくつかのパッケージが提供されていますが、今回は「Pre-build for Hadoop 2.6 and later」を選択して取得します。
取得したパッケージを展開します。
補足
Windowsで.tgzの展開を行う場合は、別途解凍ツールのインストールが必要な場合があります。
以下は展開後のパッケージです。今回はbinディレクトリ下のspark-shell.cmd,pyspark.cmdを利用します。
補足
Spark 1.6.1で、このままspark-shell.cmdを起動するとsqlContextのimportでNullPointerExceptionのエラーが発生します。
WindowsでSparkを実行するために、Hadoopの依存関係を解決するためのexeを下記から取得します。
補足
別のバージョンのHadoopや32bit OSを利用する場合は、当該するバージョンのwinutilsのダウンロードが必要です。
ダウンロードしたexeファイルを、展開後のSparkパッケージのbinの下に配置します。
次に配置したexeを認識するようにHADOOP_HOMEの設定を行います。
set HADOOP_HOME=<Sparkを展開したディレクトリ>
例えば、C:\spark\spark-1.6.1-bin-hadoop2.6\binの下にwinutils.exeを配置した場合は、次のようになります。
set HADOOP_HOME=c:\spark\spark-1.6.1-bin-hadoop2.6
最後に、SparkはHiveのinitializeを要求するため、C:\tmp\hiveに権限の設定が必要になります。先ほど設定したwinutils.exeを利用し、権限の変更を行います。
%HADOOP_HOME%\bin\winutils.exe chmod 777 \tmp\hive
これでSparkを利用する環境準備は終わりです。
SaaS(Spark as a Service)の利用
ローカルで動かす以外の選択肢として昨今、Sparkをクラウド上で簡単に利用できる「Spark as a Service(SaaS)」が提供されています。SaaS上でSparkを試す場合は環境構築が必要ないので、インフラの知識のない方でも簡単に分散環境でのSparkが実行できます。例えば、BluemixのSaaSは、登録後30日間は無料で利用できるので、環境構築でつまづいた場合はこちらを試してみてもよいでしょう。