INFORMATION
ニュース

Spark Summit East 2016 に参加しました

著者:西潟 一生

ニューヨークにて 2016年2月16日 から 2月18日 の 3日間 開催された Spark Summit East 2016に参加してきました.と言っても,初日は Spark のトレーニングだけが実施される日で,カンファレンス自体は 2月17日 〜 18日 の2日間です.今後弊社でも Spark を使った案件に積極的に挑戦することもあり,初日のトレーニングから参加するという,とても充実した日程でした.

Spark Summit East 2016 の会場となったのは New York Hilton Midtown です.日本人観光客も多く使うことで知られているホテルです.建造から時が経っているため,新しく洗練されたホテルの印象はありませんが,カンファレンスには充分なサイズと設備が兼ね備えられていると感じました.

Spark Summit East 2016 会場

Spark Summit East 2016 会場

初日トレーニング

カンファレンス初日は Databricks 社主催の Spark のトレーニングでした.今回は,以下の3種類のトレーニングが実施されていました.

  • Apache Spark Essentials
  • Data Science with Apache Spark
  • Advanced: Exploring Wikipedia with Spark

私はまだ Spark の経験が浅いため,Apache Spark Essentials を受講しました.弊社でも Solr や Mahout/Spark などのトレーニングを行っておりますが,弊社のトレーニング規模とは全く異なり,各トレーニング,それぞれ 100名 以上の参加者が見受けられました.(ちなみに弊社のトレーニングは毎回数名で実施されるので,非常にアットホームな雰囲気です.質問も気軽にできますので,大変オススメです.)

Apache Spark Essentials

Apache Spark Essentials トレーニング会場

持ち込みのパソコンで受講するのですが,トレーニング前日に Firefox をインストールするようにメールが届いており,何故なのかよく分かっていませんでしたが,トレーニングが開始してすぐに合点,全ての操作は Web ブラウザ上で実施されました.受講時点の話ですが,Firefox 以外はレイアウトが崩れるということでした.どちらにしても Chrome or Firefox 指定ということで,その他のブラウザの対応予定はないということ.案内メールでは Internet “Exploder” はサポートしないと揶揄され,メールにこういうジョークが記述されるのは海外ならではだと思いました.

トレーニングは Spark そのものの学習と言うよりかは,Databricks 社が提供するクラウドプラットフォームの利用方法も含めた Spark 全般のトレーニングという印象で,うまく宣伝が兼ねられています.ちなみにトレーニング環境が気になる方は,下記の情報を参照して下さい.トレーニング環境と同様の環境を入手できるフリートライアルに参加申し込みができると思います.(2016年3月5日時点)

https://databricks.com/product/databricks

デベロッパー,データサイエンティストなど,Spark学習者に最適とのことです.ご興味がある方は是非試してみてください.

トレーニングの様子

トレーニングの様子

このプラットフォームのおかげで面倒な Spark のインストールや必要なマシンリソースの調達などが必要なく,洗練された UI も相まって,とてもスムーズにトレーニングが進められました.が,開始当初からネットワーク接続が不安定だった影響で,トレーニング全体の進捗が思わしくなく,スキップしつつ最終的に内容を7割ほど消化してトレーニングが終了しました.後日次回のトレーニングが無料になる案内が届きましたが,そこにはしっかりと交通費は含まない旨が記載してありました.よくあることだと講師の Brian Clapper さんはおっしゃっていましたが,大勢でのトレーニングがいかに難しいか認識させられました.

プラットフォームの詳細は上記 URL を見てもらうとしまして,マシンの調達から,Python,Scala での開発までのオールインワン環境が整えられていることはとてもありがたいことです.特に複数台マシンを並べて処理速度の向上が期待できる Spark では,その複数台のマシンの調達からセットアップまでがとても大変です.その辺りの煩雑さを解消してくれるだけでもこのプラットフォームを利用する価値はあるでしょう.

トレーニングの内容は Spark の操作を,主に Wikipedia の記事を分析することで学習しました.このトレーニングの中で Wiki の1時間辺りの改変が,国別でどれほど積極的に行われているかを Spark を使って分析したのですが,意外と日本が上位に挙がっていることには驚きました.

結局 Databricks 社のプラットフォームにロックインされてしまう内容だったので,いざ会社のマシンで検証しようと思った時に,初めの一歩が戸惑うことにはなりますが,内容としては Spark で何かできるのか,どのようなコードを書くのか,と言った本質的な部分を短時間で学べる良いトレーニングだったと思います.

まだ Spark の経験が浅い方,これから Spark を始められる方で Databricks 社のトレーニングを希望される方は,この Apache Spark Essentials を選ぶと良いでしょう.Scala または Python の知識があった方が良いですが,なくても何とかなるレベルでした.

このトレーニングで得た知見などは,今後弊社のトレーニングでも是非活かしていきたいと思っています.

カンファレンスにて

2月17日から18日の2日間のカンファレンスで,いくつか興味を持ったセッションについてレポートしたいと思います. と言っても,弊社はこれから Spark に取り組んでいこうという身,私にとっては新鮮な情報ばかりでした. 尚,日本では 2月8日に Hadoop/Spark Conference Japan 2016 が開催されていましたが,多忙につきそれには参加せずに挑んだこの2日間でした. セッションは主に,ENTERPRISE TRACK,DEVELOPER TRACK,DATA SCIENCE TRACK の 3つ に分かれており,私は主に DEVELOPER TRACK のセッションを聞いていることが多かったと思います.
# DATA SCIENCE TRACK はバックグラウンドがないと理解がちょっと難しかったのもあります.

Keynote Spark2.0

Keynote では,Spark2.0 の話が尽きませんでした.高速であると何度述べていたか分かりません.フロントエンドの API が充実することもさることながら,バックエンド側の処理能力が Spark1.6 よりも 10倍 速くなっていることが強調されていました.これから使う身にとっては,高速であること主張は頷くしかありませんでしたが,APIが扱いやすいことはとても重要です.既に RDD から DataFrame へと処理系が移行してきており,言語の違いによって実行速度が異なることがあまりなくなっているのも,成熟してきている証であるのでしょう.2015 年に登場した DataFrames と Datasets が Spark2.0 ではマージされ,DataFrame=Dataset[Row]となるとアナウンスされていることからも,これから挑戦する我々にとってはハードルが低くなりそうでありがたいことです.

つい最近まで Spark を商用利用するにはまだ早いと言った声が聞かれていたような気がしましたが,もう枯れてきているような印象です.とは言っても,Spark Summit の参加者は 2014 年が 約 1100 名,2015 年が約 3900 名とされています. 今回のニューヨークでの参加者数は Databricks 社によると,約 1300 名,参加企業数は 500 社以上との発表でした.何にせよ,開発が急速に活発になっていることが窺えます.

Keynote の様子

Keynote の様子

Spark Performance: What’s Next

Spark を利用する側のエンジニアとしては,高速であることを知ったところで良いアプリケーションが開発できるかと言われれば,そうではないのですが,引き続きパフォーマンス絡みのセッションを聞きました.CPU 性能がここ最近頭打ちになっていることから(クロック性能が頭打ち) ボトルネックが意外に CPU にありますよ,というお話です.少し前までは I/O がボトルネックになる話が多かったとの印象でしたが,ここ最近では SSD を使った分散ファイルシステムや高スループットなネットワークが出てきたことにより,I/O 部分のボトルネックは以前よりは解消されているみたいです.これは Spark の内部実装(シャッフルなど)の最適化やネットワーク転送の最適化などもかなり影響しているようです.

CPU,メモリの性能を引き出す実装が進んでおり,これを”Project Tungsten”と呼んでいるのですが,この実装は特に JVM の GC などのメモリ管理からくるオーバーヘッドを気にして,java.unsafe やオフヒープメモリを使っているところがポイントです.これで,メモリのフットプリント削減や GC のオーバーヘッド削減が可能となり,性能が大幅に向上しているとのことです.また,コード生成時のバーチャルファンクションコール呼び出しの効率化なども実施とのこと.これは Spark1.5 から始まった実装なのですが,引き続き高速化されていくとのことです.”Project Tungsten”がどのように実装の問題を解決しているのかはスライド後半で述べられています.バックグラウンドがないとちょっと理解が難しいですね.

弊社で行っているような,検索を便利にするための機能を提供するためには,膨大なドキュメントや利用履歴などから有用な情報を抽出する必要があります.これを高速に行うためには,Spark は欠かせない技術です. まだまだ高速化の余地があるとのアナウンスは非常に心強いと感じました.

Using GraphX/Pregel on Browsing History to Discover Purchase Intent

Building a Recommendation Engine Using Diverse Features

2つともレコメンド系の話です.後者は,eコマースでパーソナライズ検索を実現しているとのことで,セッションに参加してみました.「顧客が次に買うかもしれない物を推測するのは売る側の責任」だそうです.弊社も検索を生業にしている以上,各ユーザーに特化した検索結果を提供することは1つのゴールです.Spark の MLlib や GraphX を使って,ユーザーと商品の関連度合いを簡単に求められますよというお話.前者は GraphX を使ったお話で,難しかったですが,Spark を使う上での知見のスライドだけはためになりそうでした.
後者のセッション内でも述べていたような気はしますが,できるだけ小さな job で Spark を実行する,groupByKey() じゃなくて reduceByKey() を使え,などはもしかすると当たり前のことなのかもしれませんが,これから Spark を使う身としては心に止めておきたいことでした.

Top 5 Mistakes When Writing Spark Applications

アンチパターン的な話を聞きたいと思い,参加したセッションです.Spark でのサイジングの話から実装上の話までがされました. 5つ の失敗とありますが,Spark のアーキテクチャを知る上でも重要な失敗ケースが発表されていたと思います.特にシャッフルブロックは 2GB の制限を受けていることや特定のスレッドに負荷が集中しない技は富豪的なコードを書いてしまいがちな私にとっては最初から気をつけておかなければならない大事な点でした.

そう言えば,MapReduce で実装するときも,できるだけ各タスクトラッカーにキーが分散するように,キー生成時に工夫していました.使ってみてからではないと分からないなと思った点もありましたが,かなり有意義なセッションであったと思います.

Spark Tuning for Enterprise System Administrators

このセッションについても上述の 5つ の失敗と同様,Spark におけるベストプラクティスをいくつか示してくれています.簡単ではありますが,チートシートも公開してくれています.

http://techsuppdiva.github.io/

総括

直前に日本で開催された Hadoop/Spark Conference Japan 2016 と情報が被っているところも多かったのかもしれませんが,とても充実した日程を過ごすことができたと思います. スピーカーが所属している企業も弊社のような小さな企業もチラホラ見受けられ,弊社も負けられないなと思った次第です. 日本からは,弊社を含めて4社ほど参加していたようです.(DMM.comラボの篠原さん,加嵜さん,NTTデータの濱田さん,猿田さんにはお世話になりました.濱田さんからはホテルの朝食券まで頂き,物価の高い NY では大変ありがたいご厚意でした)

今回は新参者としての参加でしたが,これから弊社でも事例を築いていき,次回以降は是非スピーカーとしてこのカンファレンスに参加できれば良いなと思いました.

日本の皆さんと食べた30ドルもする朝食

日本の皆さんと食べた30ドルもする朝食


トレーニングコース

ロンウイットのトレーニングは、Lucene/Solrの経験豊富なコミッターの
監修のもと開発されたハンズオン(実習)形式のコースです。

セミナー

ロンウイットのApache Software Foundationコミッターが、情報検索の基礎、自然言語処理、そして、ユーザにとっての効果についてご説明させていただきます。