よしだのブログ

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

Apache Spark 2.0 はスマホで動く?!

今年ぐっと来た エイプリルフールネタ。本気だと思って深夜に読んでしまいましたw 字が小さいよ! JIRA のチケットまであるから本気だと思ったわ!

f:id:yoshi0309:20150402234517p:plain

昨日 4/1 エイプリルフールの日に Spark の開発主体である、databrics 社のブログで Apache Spark 2.0 の目指す先についての言及がありました。内容は、なんと Spark をiPhoneを含むスマホの中で動かす、というものです。iOS や Android 上で稼働することを必須の目標として、フィーチャーフォンでの可動も目指している、とのこと。エイプリルフールですが、書いてある内容自体は極めて大真面目で、ある意味勉強になりました(笑)

エントリはこちら。

Spark 2.0: Rearchitecting Spark for Mobile Platforms | Databricks

JIRA のチケットまである。。。

[SPARK-6646] Spark 2.0: Rearchitecting Spark for Mobile Platforms - ASF JIRA

簡単ですが、内容の解説と感想を。

まず、機能について引用です。

Must Have:
- Support running Spark on Android and iOS
- Facilitate the development of SoLoMo (social, local, mobile) applications
- Maintain source backward compatibility
- Support heterogeneous mobile phones within a single Spark cluster

Nice to Have:
- Support running Spark on Windows phones
- Support feature phones through J2ME

目下の課題としては Android は、まあいいとして、iOS でどう動かすかです。ブロクでは4つの案を書いております。その中でも Scala.js という、Scala を JavaScript に変換する Scala.js を使い、変換した後に、Safari に搭載されている Nitro JavaScript エンジンで実行する方式が、最も望ましいと述べています。*1

パフォーマンスについては、JavaScript のパフォーマンス向上は目覚ましい物があるとしつつも、スマホの世界ではデスクトップに比べて遅れていると認めています。特に、Spark では、SIMD を使うことで恩恵を得ることができると思われるが、スマホでは SIMD はサポートされていないので、使えるように部分的にでも修正するであろう、と述べています。

ちなみに、SIMD とはコレ https://hacks.mozilla.org/2014/10/introducing-simd-js/ のことのようです。要するにデータを並列に処理できる処理方式のようで、その javascript 実装のようです。データを並列に処理できるって、確かに Spark は恩恵を受けそうですね。

エイプリルフールにしてはこの辺りまではかなりマジっぽい。

あと、こんなことも書いてあって、なかなか面白かった。このへんからだんだん怪しくなってくるw

  • Data Locality の処理を書き換える必要がある。スマホで動くので GPS で得た位置情報を元に、Locality を計算するとのことです。いや、場所が近くてもネットワーク的に近いとは違うから (笑)

  • TaskContext という機能を追加する。スマホ上で、電話しているとか、GPS の情報とかそういった情報を提供すると言っています。Context から得られる情報でジョブの割り振りを変えることができると。うん、必要かも(笑)

モバイルネットワークで通信したら激しくパケット使って、速攻で通信を止められそうですが、その点については言及はナシ。まあ、そこはどうしようも無いですからね!

まあ、もろもろ置いておいてネタに乗っかって、どういうことに使えるか?をちょっと考えてみました。

・・・

うーん、無いわw 

スマホは大量にあるけど、スマホのリソースは眠っているままで、有効活用できるだろうということをプロジェクトの動機として書いてあるんですが、これってグリッド・コンピューティングみたいですよね。懐かしい。と考えると Spark on スマホもある意味、自分のリソースを無償で提供する、という形になるので、SETI とか新薬の開発とか公共の利益になって、リソースの利用者が明確なアプリに限定されるんではないでしょうかね。。。

通勤中の電車に乗っている人々のスマホを使って、なんか機械学習とかできると面白いかもなーと思ったのですが、手元にデータが有るわけでもないしサーバーでよくね? (笑)

*1:Javaのコード?なにそれ?w