よしだのブログ

サブタイトルはありません。

勉強会メモ - 第1回“Learning Spark”読書会

どうも!最近、いじり倒している Spark の読書会があるとことで、参加してきましたので、メモを公開!

http://readlearningspark.connpass.com/event/11846/

本はこちら!英語版のみですが、Spark の実質初の実践的な解説書です。

Learning Spark: Lightning-fast Big Data Analysis

Learning Spark: Lightning-fast Big Data Analysis

  • 作者: Holden Karau,Andy Kowinski,Matei Zaharia,Patrick Wendell
  • 出版社/メーカー: Oreilly & Associates Inc
  • 発売日: 2015/02/22
  • メディア: ペーパーバック
  • この商品を含むブログを見る

主催者の @data_sciesotist 様、会場を貸していただいた富士通ラーニングメディア様、ありがとうございました!引き続きよろしくお願いします。

読書会について

読書会の説明の後は、事前アンケート結果のご紹介から。2014 年から知っていると答える人が最も多く、2012年から知っているという人も1人いました!ただ、触ったことのある経験については、半分以上の人は触ったことがない、という結果でした。Spark 初心者向け、という体の勉強会ですね。これから Spark やりたい!ビックデータって何?という方にも良い勉強会だと思います。

第1章 "Introduction to Data Analysis with Spark” -Apache Sparkによるデータ分析への招待-

@data_sciesotist

Apache Spark のソフトウェアの概要の紹介です。ソフトウェアの概要と、Spark の売りポイントが色々とアピールされています。著者がコミッターだったりしますしね。

その中でも、最近個人的に魅力に感じているところを1つ紹介しますと、「一連の処理を Spark 上でできるので、データ分析パイプラインを作れる」という点です。Streaming / SQL / MLLib(機械学習) / グラフ処理 が、一連の処理としてひとつのプログラムの中で処理することができます。これまでは、Mahout など、それぞれのライブラリが個別のソフトウェアに分かれていて、開発者は組み合わせて作る必要がありました。場合によっては、稼働する Hadoop のバージョンが違うとか、Mesos でしか動かないとか、面倒なことが色々とありました。Spark の場合は、ひとつのプログラム、ひとつのライブラリのなかでこれらの処理を自由に組み合わせて作ることができるので、非常に開発が用意です。*1

以下に、先日の Developer Summit 2015 のDMMラボさんが発表していた、事例を貼ります。この事例が Spark を使ってデータ分析パイプラインを作った、最も端的に示している具体的な例だと思います。

DMM.com - DMMのビッグデータ分析のご紹介 ~Sparkによるリアルタイムレコメンド~ by DMM Tokyo-des on Prezi

第2章 "Downloading Spark and Getting Started” -Sparkを導入し、使ってみよう

@data_sciesotist

その他、懇親会など

  • Spark SQL は Hive などと連携できるほか、JDBC でつなぐことも可能なので、フロントはいつものツールを使うこともできるそうです。いわゆる、超エクセルツールとの連携もできるので、高速なアドホックの分析用途にも活用できそうです。これは是非試してみたいですね。

  • Mahout を Spark で動かすことができるそうです。ただし、" very early experimental stage ! “ http://mahout.apache.org/users/sparkbindings/play-with-shell.html

  • Spark の元の開発元である UCB の AMP Lab の公開した、分析処理機版の全体像。 https://amplab.cs.berkeley.edu/software/

  • ipython よさげ。matplotlib などと連携して、グラフを作ったりできるので、分析用途などとても便利。

  • Spark のパフォーマンスについて fastutil を普通のコレクションの代わりに使うと速くなったそうです。Koloboke なども速いという話なので、Spark で組み合わせてできるか、色々とやってみたいですね。

SmartNews小宮さんによるJavaでの統計・機械学習・自然言語処理ライブラリの紹介 | break the code!! | codebreak;

  • ec2-script について、1.1.0 で試した時は、うまく動かない *2 ということがあったのですが、1.2.1 では一応使えるようです。ただし、相変わらずエラー連発だったり、リージョンの指定をつけないとうまくいかない、--delete-groups のオプションをつけると destroy がうまくいく、ネットワークのご機嫌次第では失敗するなど、不安定みたいです。standalone クラスタにこだわらなければ、個人的には EMR おすすめです。以下、以前書いたエントリーですので、ご参考まで。

Spark 1.2.0 を Amazon EMRで動かす。 - よしだのブログ

次回について

3/28 (土) を予定しているとのことです。まだ、インストールしたところまでなので、ここからの飛び込み参加もいけますので是非一緒に参加しませんか? ちなみに、私は次回 LT に、勢いで立候補しました!EMR か、パフォーマンス・チューニングネタを話そうかしら。お楽しみに。

おまけw

*1:ただし、特に機械学習などは、使いたいアルゴリズムによっては組み合わせに制約が生じる場合があります。例えば、Streaming でリアルタイムに取り込んだデータを元に、モデルを更新したい場合、ALS は増分でモデルをアップデートできないので Streaming との組み合わせは現状意味がありません。

*2:起動時にタイムアウト時間を500秒に設定する必要があった、destroy が全く効かない、など