Apache Sparkによるスケーラブル機械学習入門
IBM Bluemix User Group(BMXUG)リレー寄稿 第5回
IBM Bluemixは、PaaS(Platform as a Service)として皆さんに最強の開発環境を提供します。Bluemixの特徴として、開発基盤だけではなく、100を超えるサービス「IBM Watson、ランタイム、IoT、Storage(DB)、アナリティクス、モバイル」など、豊富な開発環境やAPIがシンプルな形で提供されており、より素早くアプリケーションを構築&運用することが可能です。「IBM Bluemix User Group(BMXUG)リレー寄稿」では、コミュニティの皆さんが最近もっとも注目しているBluemixのサービスを、順番に紹介していきます。今回は「Apache Spark」と「機械学習」を取り上げます。
近年IoTへの関心が大きく高まっていますが、インターネットに接続された各種デバイスから集約される大量の情報を有効活用するには、集められた情報をいかに処理するかがカギとなります。「Apache Spark」はこうしたビッグデータを高速に処理するための汎用エンジンとして現在活発に開発が進められています。本稿では「Bluemix」の提供するApache Sparkサービスを利用して、初歩的なApache Sparkの利用方法および機械学習ライブラリを利用したプログラムの実装方法をご紹介します。
はじめに
本稿はBluemixのアカウントを所持している読者を対象としています。Bluemixは初回登録後クレジットカードの登録なしで30日間無料で利用することができるので、まだアカウントをお持ちでない方はまずアカウント登録をおすすめします。BluemixのApache Sparkサービスには、「Jupyter Notebook」をベースとしたインタラクティブなデータ分析環境が提供されており、今回は、このNotebook上にPythonでプログラムを記述していきます。Bluemixで提供されている各ソフトウェアのバージョンは下記のとおりです。
- Apache Spark 1.6.0
- Python 2.7.11
- Jupyter notebook 4.0.6
- iPython 4.0.1
Apache Sparkとは
Hadoop MapReduceによって始まったビッグデータ革命ののち、MapReduceの利用が広まるにつれ顕在化してきたパフォーマンス面の問題などを解決するため生まれたのがApache Spark(以下、Spark)です。Sparkは、2009年UCバークレーのRAD Labにおける研究プロジェクトとして誕生し、2010年の3月にオープンソース化、2013年の6月にはApache Software Foundationへ移行されました。今年の7月26日には現時点の最新バージョンである2.0.0がリリースされています。Sparkの特長として、公式サイトでは下記の4点が挙げられています。
- Speed:Hadoop MapReduceと比較してon-memoryで100倍、on-diskで10倍の速度
- Ease of Use:豊富なAPIによる各種プログラミング言語(Java、Scala、Python、R)での開発
- Generality:SQLや機械学習ライブラリ、グラフ処理などの多様な処理の組み合わせ
- Runs Everywhere:Hadoop、Mesos、スタンドアロンもしくはクラウドでの実行
Sparkでは、構造化データを取り扱うことができる「Spark SQL」、ストリーミングアプリケーションのための「Spark Streaming」、グラフ計算のための「GraphX」、そして今回利用する機械学習用ライブラリ「MLlib」が用意されています。これらのライブラリはすべてfig2のようにSpark Coreと呼ばれる基盤APIを提供するコンポーネントの上に構築されており、例えばストリーミングソースからのデータを機械学習によってリアルタイムに分類するなど、相互に組み合わせることで高度なデータ分析を行うことが可能です。
この記事は参考になりましたか?
- IBM Bluemix User Group(BMXUG)リレー寄稿連載記事一覧
-
- ブロックチェーンアプリを実際に動かしてみよう!
- Apache Sparkによるスケーラブル機械学習入門
- IBM Watsonと連携するTwitter Botを作ってみよう!
- この記事の著者
-
小峰 央志(Bluemix User Group)(コミネ ヒサシ)
MNU Co., Ltd. 取締役。サーバサイドアプリケーション開発、Webフロントエンド開発、DevOps、スクラムなど広く浅く取り組む。最近は機械学習を利用したアプリケーション開発に興味があり、主にSemantic Image Segmentationについて勉強しているが敷居の高さに苦戦中。主...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
