いまいちばん勢いのあるオープンソースプロダクトとして注目度の高いApache Spark。2月8日、
HadoopはSparkの“原点であり越えるべき目標”
- ──まずはレイノルドさんご自身の自己紹介をお願いできるでしょうか。Databricksという会社についてもご説明いただければ。
シン氏:僕はDatbricksの共同創業者のひとりで、
現在はメインアーキテクトとして働いています。Databricksは、 Hadoopのオルタナティブとなるプロダクトを開発するために、 出身校のカリフォルニア大学バークレイ校の研究室仲間で2013年に立ち上げました。現在のオフィスはサンフランシスコにあります。 Hadoopのオルタナティブ、
つまりSparkを最初に開発したのは、 同じく共同創業者のひとりで現在CTOを務めるマテイ・ ザハリア (Matei Zaharia:初代Sparkリリースマスター) です。現在のDatabricksのメインビジネスもSpark製品/サービスの提供です。 ご存知の通り、
SparkはThe Apache Foundationの下で活動するオープンソースプロジェクトです。僕やマテイ、 ほかのDatabricksのメンバーに加え、 40人ほどがコミッタとして活動しています。日本人ではNTTデータの猿田 (浩輔) さんもコミッタですね。さらにコミッタのうち20名ほどがPMC (Project Management Committee) メンバーとして、 各コンポーネントのレビューやコンセンサスの調整をしています。僕もPMCのひとりです。 - ──今日の基調講演であなたは
「2015年はSparkにとってビッグイヤーだった」 と振り返っていました。なぜSparkがこれほどまでにブレイクしたのか、 その理由をどのように分析されていますか。 シン氏:大きく3つあると思っています。
ひとつは開発のしやすさ、
使いやすさです。HadoopやほかのHadoopプロダクトも"easy to use"とは言いがたい部分が少なくありません。その点、 Sparkはさまざまな言語でアプリケーションを書ける、 SQLやマシンラーニングなどのパッケージがあらかじめ用意されていて、 しかも使いやすく統合されている、 多くの環境で動く、 など、 非常に汎用性高く設計されています。これが普及の第一の理由です。 2つめはパフォーマンスです。高速性はSparkの最大の特徴のように言われますが、
実際、 SparkはHadoopのMapReduceよりもずっと高速な処理を実現します。Hadoopが苦手としていたスループットとレイテンシの両立が可能になっているのです。現状のSparkはHadoopに比べて100倍以上速いと言われていますが、 開発中のSpark 2. 0はさらに速くなります。いまより10倍以上のパフォーマンスを目指しているので期待していてください。 そして3つめですが、
コミュニティがオープンであるという点です。2015年はとくにコミュニティの活動が活発になった年で、 世界各地でミートアップが開催されました。東京でも開かれています。コミッタによるコードの投稿は1000回/10万行を超えました。オープンソースプロジェクトとしては非常に成功していると実感しています。 - ──ここ最近、
SparkはHadoopを置き換える存在としてクローズアップされることが多いですが、 レイノルドさんはSparkとHadoopの関係をどう捉えていますか? もしかしたらHadoopとSparkはライバル関係なのでしょうか。 シン氏:それはないですね
(笑)。HadoopがSparkの競合になるということはありえません。SparkはHadoopのエコシステムとしてスタートしましたから。ただし最近は 「Beyond Hadoop」 という位置にあることは認識しています。Sparkの原点はHadoopですが、 それを超えた存在になるという目標はもっています。 Sparkがプロジェクトとして立ち上がったばかりのころ、
ほとんどのSparkユーザはHadoopユーザでした。SparkはあくまでHadoopを補完するエコシステムのひとつでしかなかった。しかしHadoop運用で必要となるリソースマネジメントは必ずしもSparkユーザがやりたいことではありません。Hadoopはビッグデータというトレンドに非常にマッチした存在ですが、 Sparkはビッグデータの中でもデータプロセッシングをいかに速く正確にこなしていくか、 という面にフォーカスしています。データストアも実行環境も選ばない。たとえばDatabricksの顧客の中にはSparkは使っているがHadoopは使っていないというケースが増えつつあります。データストアとしてAmazon S3やCassandraを選んでいるのです。Sparkユーザが必ずしもHadoopユーザではなくなった、 いまはそういう時代になっていると思います。 - ──SparkのデータストアにHadoop以外が多くなってきているというのは非常に興味深い現象だと思いますが、
同様にSparkはHadoopよりもクラウドでの普及スピードが速いという印象をもっています。こちらについてはどう思われますか。 シン氏:Sparkの実行環境としてオンプレミスとクラウドを比べると、
現時点ではほぼイーブン、 ごくわずかですがクラウドのほうが上回っています。ですが、 この差は今後、 もっと拡がっていくとも思っています。たしかにクラウドでのアダプションはHadoopより速いペースで進んでいますね。いちばん多いのはAWS、 次にAzureです。最近だとApache Mesosの上でSparkを動かすケースもよく見かけます。
Sparkをより輝かせる「Tungstenプロジェクト」
- ──同じHadoopエコシステムのApacheプロジェクトにApache Flinkがあります。最近、
ストリーミング処理に関してはFlinkを推す声も聞かれるのですが、 SparkとFlinkの違いはどういったところにあるでしょうか。 シン氏:Flinkはストリーミングに特化したプロダクトなので、
SQLやマシンラーニングも含むSparkとはプロジェクト自体が大きく異なるのですが、 ストリーミングに関していえば、 たしかにSparkのとる手法 (マイクロバッチオペレーション) はFlinkとは根本的にことなります。Sparkのストリーミング処理は入ってくるデータに対し、 短い時間で何度も細かくバッチを実行していくことで、 最終的にはレイテンシを最も低く抑え、 データのロスを防いでいます。ピュアストリーミングのFlinkとは設計段階の思想が大きく違うといえるかもしれません。 - ──Flinkもそうですが、
ここ数年、 データの急激な増加を受けて多くのデータ処理系のプロダクトが誕生しました。CassandraのようなNoSQLが人気を博すようになったのも、 既存のRDBMSによるスキーマ処理では間に合わなくなったからとも言われます。その一方でいまだに多くのデータベースは1990年代のハードウェアを前提にした設計になっており、 GPUやFPGA、 SSDといったハードウェアの進化についていけてないように感じます。データ処理プロダクトの開発者として、 ハードとソフトを最適化させるということについては、 どうお考えになっていますか。 シン氏:
(少し考えてから) ハードウェアとのマッチングという意味で、 いま苦労しているのはCPUの最適化です。あなたが言うとおり、 モダンなハードウェアにデータ処理を最適化させるというのは非常に難しいことです。そこでSparkでは 「Project Tungsten」 においてSparkのバックエンドでメモリとCPUを効率的に稼働させることに取り組んでいます。ハードウェアの性能向上に合わせ、 動的にメモリ管理を行い、 コードを生成する、 データをキャッシュではなくCPUレジスタに置く、 仮想関数の呼び出しを最小限にする ─まだまだ完全とはいえないレベルですが、 モダンなハードウェアを意識した設計は今後のSpark開発において重要なビューポイントなのは間違いありません。ハードの性能、 とりわけTungstenではモダンなCPUの性能を無駄にしないよう心がけています。ただ、 やはりモジュラー化とパフォーマンスのトレードオフの問題が本当に難しく、 苦労しているところではあります。 - ──前から気になっていたのですが、
どうして"Tungsten"というプロジェクト名なんでしょうか。 シン氏:HadoopのプロダクトはHiveやPigなど動物に関する名前が多いですよね。一方、
Sparkでは動物ではなく光や明かりにちなんだ名前をつけています。"Spark"という名前からもわかると思いますが。 Tungstenは電球の中でフィラメントなどに使われるタングステンから取っています。いま話したことから引用すれば、
ハードとソフトがきちんと最適化されたとき、 カチッとスイッチが入って周囲がより明るくなる、 そんなプロジェクトに成長すればいいですね。 - ──Project Tungstenの成果を取り込んだ
「10倍速くなる」 Spark 2. 0はいつリリースされるのでしょうか。 シン氏:4月末か5月の予定です。そう、
もうすぐなんですよね、 急がなければ。
Sparkと走り続けてきた日々
- ──日本についての印象に聞かせてください。今回、
レイノルドさんは初来日ということですが、 日本の開発者やコミュニティ、 ユーザに対してどのように思われましたか。 シン氏:
「みんななんて礼儀正しいんだろう」 と本当に驚きました。最初にも言いましたが、 去年、 日本でもミートアップが開催されるなど、 確実にSparkコミュニティの裾野が拡がっていると感じます。日本はユーザ数でいえば世界第4位 (米国、 中国、 オランダに次ぐ) ですが、 Databricksにとっても大きな市場になると期待しています。 - ──日本法人を作る予定などはあるのでしょうか。
シン氏:近い将来のうちにぜひ実現させたいですね。日本には現在、
NTTデータにパートナーになってもらっています。パートナーの数も今後は増やしていきたいと考えています。グローバルビジネスではローカライゼーションが重要なので、 パートナーの影響力は非常に大きいですから。 日本人に対しての印象をもうひとつ挙げるなら、
すごくハードワーキングな人々が多いということでしょうか。ただ、 よく考えたら僕も大学時代にマテイたちとSparkプロジェクトを始めてDatabricksを立ち上げて、 コミュニティを軌道に乗せるまで、 ずーっとSparkばかりやってきたなあ…と (笑) 。だから正直言うとハードワーキングな人たちとは感覚的に合いますね。 - ──失礼ですけど、
いまおいくつなんですか? シン氏:30歳です。そういえばこれまで、
あまりプライベートのことを考えたことがなかった。せいぜいスキーをするくらいですかね。僕、 カナダ出身なのでスキーはかなり得意なんですが、 よく考えたらプログラミング以外にあまり夢中になったことはないかもしれない… (考えこむ)。 - ──プログラミングはいつから始められたんでしょうか。
シン氏:中学生のころかな。最初に触ったのはPascalです。それからPHPに移りました。ほとんど独学で勉強して、
そのころからオンラインフォーラムに出入りしていました。コミュニティ運営にもそのときの経験が生きているというのはあります。 - ──あなたは現在、
Sparkのリリースマネージャをされていますが、 それはかなり責任が重い仕事ですよね。プレッシャーはありますか。 シン氏:重要な仕事ではありますが、
基本的にコミュニティのみんなで決めたことを盛り込んだリリースを出すだけなので、 それほど負荷はありません。Apacheのプロジェクトはどれもそうだと思いますが。 - ──Linuxのリーナス
(Linus Torvalds) みたいなプロジェクト運営はありえないですか? シン氏:ないない、
絶対ありえないですよ! そんな独善的にやってしまったらコミュニティが萎えてしまうじゃないですか。民主的なプロセスを踏むのがApacheプロジェクトの原則ですから。
- ──最後にもうひとつ。まだ30歳ということですが、
将来、 どんな道に進みたいという目標は何かありますか。もしくは誰かロールモデルがいればぜひ教えてください。 シン氏:
(しばらく考えこんで) 考えたことなかったですね。気がついたらいまここにいるという感じで、 将来のこととか思うヒマもなかったというのが正直なところです。でもこれからはそういうことも考えていかないといけないのかもしれない。 ロールモデルもとくにいないですね…ずっと独学でやってきたので、
誰かを目標にするというやり方をしたことがないんです。あ、 でもイーロン・ マスク (Elon Musk) は好きです。それくらいかな。いまの質問をもらって、 すこし先のことを考えるようにしようと決めました。ありがとう (笑)。