「これからの時代、
少し前までは企業や大学の片隅に置かれたスパコンやメインフレームの独壇場だった並列分散処理システムを、
Hadoopはまもなく開発を開始してから10年を迎えますが、
言語学から検索エンジン、ビッグデータへ
- ──ダグさんはスタンフォード大学で言語学を専攻したと伺っています。どういうきっかけでITの世界に入ることになったんでしょうか。
カッティング氏
(以下C): 本当はコンピュータサイエンスを専攻したかったのですが、当時のスタンフォードにはそういった学部がまだなかったんです。子供のころからプログラミンが好きだったので、 将来はシリコンバレーの会社で働きたいという気持ちは当時からもっていたのですが、 言語学を体系的に学んでおけば、 のちのちITの世界でも役に立つだろうという思いもありました。結果として、 音声認識やテキスト検索エンジン、 ビッグデータの仕事をする際にも言語学の知識を応用することができましたから。 - ──失礼ですが、
いまおいくつなんでしょうか。 C:実は来週が誕生日で、
もうすぐ51歳になります (笑)。なので、 大学卒業時はまだ1980年代半ばでした。卒業後はXEROX、 次にApple、 そしてExciteに勤務しました。 - ──そのころはどんなお仕事を?
C:XEROXではずいぶん検索エンジンの研究をさせてもらいました。Appleでもテキスト検索エンジンの開発に関わり、
現在のMac OSにも搭載されている 「Spotlight」 を最初に開発したのは私なんです。Exciteに移ってからも検索エンジンの開発を続けました。検索エンジンの開発では言語の有機的なつながりの解明に加え、 大量のデータを効率よく処理していく手法が重要になります。開発を続けていくに従い、 言語学、 検索エンジン、 そしてビッグデータへと研究対象が移っていきました。 - ──そういったキャリアがHadoopの誕生につながっているわけですね。ダグさんはHadoopの前に全文検索ライブラリのLucene
(現在はApache Lucene) やWebクローラのNutchを開発されていますが、 いずれもオープンソースとして公開されています。これらのソフトウェアを開発するのにオープンソースを選んだ理由をお聞かせください。 C:私の大学時代は残念ながらオープンソースという概念はまだ誕生していませんでした。ですが学生時代、
フリーソフトウェアのEmacsの開発に携わっていた経験から、 ソフトウェアはより多くの人が参加することでより良いものになるということはわかっていました。 もっともLuceneは開発当初
(1997年)、 オープンソースとして公開はしていませんでした。もちろんプロプライエタリにする気もなかったのですが、 しばらく 「寝かせた」 状態にしておいたのは確かです。でも2000年ごろから徐々にオープンソースという考え方が支持されるようになってきたのを見て、 実験も兼ねてLuceneのソースコード公開に踏み切りました。結果、 本当に多くの人が開発に参加してくれるようになり、 現在も最も人気の高い全文検索ソフトウェアとして開発が続けられています。年々、 良いソフトウェアに進化していますが、 これはオープンソースだからこそなせる技です。
「オープンソースの勝利」を確信した瞬間
- ──そうした経験からHadoopもオープンソースで公開したわけですね。Hadoopのアイデアを思いついたときのことをお話いただけますか。
C:HadoopはYahoo!に勤務していた時期に開発を始めました。最初のきっかけはGoogleによるMapReduceの論文
(2004年) です。MapRuduceは広域に分散したサーバクラスタを非常に効率的に扱うことを可能にするアルゴリズムです。論文を読んだとき、 私は 「Luceneの開発経験をMapReduceで応用できる」 と直感しました。Luceneは当時すでに、 かなり大量のドキュメントを1台のマシンで扱うことができましたが、 億単位を超えるドキュメントを扱うなら分散処理が必要になります。LuceneとMapReduceの統合を考えていくうちに、 それがHadoopの原型となっていきました。 Hadoopの開発は最初からオープンソースでやると決めていました。2005年に最初のコードを公開しましたが、
Luceneのときとは違って迷いはなかったですね。同じレベルのソフトウェアが2つあったとして、 ひとつはオープンソース、 もうひとつがNotオープンソースであれば、 人々は間違いなくオープンソースを選びます。汎用的なソフトウェアはオープンソースでなければ開発もクオリティも維持できず、 インプリメントも困難になります。Hadoopがオープンソース以外の選択肢を取ることはありえなかったのです。 - ──オープンソース以外に選択肢はありえないというお話を聞くと、
2011年にMicrosoftがDryad (Microsoftが研究していたHadoopによく似た並列分散処理フレームワーク) の開発をストップし、 同社がHadoop支持に切り替えたことを思い出します。 C:そう、
Dryadはまさに"パーフェクトサンプル"です。Dryadに関してはちょっとした思い出があります。2007年、 あるカンファレンスで私とMicrosoftの方がそれぞれ分散処理システムについて語るセッションがありました。そのとき会場からはHadoopに関しては数多くの質問が寄せられたのに、 Dryadについては誰も質問しなかったのです。私はこのとき、 Hadoopの勝利、 オープンソースの勝利を確信しました。 誤解のないように言っておきますが、
Dryadは非常にアカデミックですぐれたテクノロジでした。現在のSparkやTezで実現していることはすでにDryadに含まれており、 機能だけを見ればDryadはHadoopの数段先を行っていたでしょう。しかしDryadはオープンソースではなく、 Microsoftのプロプライエタリ技術です。人々がDryadを試したくても試せない。その点、 Hadoopはオープンソースであるため誰でも入手でき、 容易にトライすることができました。オープンソースだからこそ、 事前に試すことで本番実装におけるリスクを回避できるのです。ソフトウェアはより多くの人に使われてこそ意味があるという事実を如実に示した、 まさにパーフェクトサンプルだといえるでしょう。
“Hadoopを次の段階に進化させる”ためにClouderaへ
- ──Hadoopの普及に伴い、
ダグさん個人の去就にも注目が集まるようになりました。一部ではYahoo!を離れたらGoogleに行くのでは? という噂もあったと聞きます。なのでClouderaという新しい会社を次のキャリアに選ばれたことにはかなり驚きました。 C:Yahoo!には3年勤務していましたが、
Hadoopの開発に注力できる環境だったのは幸いでした。当時、 Hadoopはその潜在的能力を発揮させていくためにはYahoo!のようなビッグカンパニーの投資を必要としていたので、 Yahoo!の協力には非常に感謝しています。3年を経て、 並列分散処理のスタンダードとしてある程度のステータスを獲得できましたから。だからこそ、 現状に満足することなくHadoopを次の段階にもっていくことが必要だと感じていました。 先ほども言いましたが、
ソフトウェアはより多くの人に使ってもらわなければ進化が止まってしまいます。私の役目はHadoopを次の段階に押し上げること、 それはより多くの人、 たとえばオイルカンパニーやロジスティクス、 テレコミュニケーションといったさまざまな業種業界の人々にHadoopを使ってもらうことです。こうした企業は単なるオープンソースをオペレーションに使うことはしません。ベンダによる品質の保証とサポートがなければ使ってもらえないのです。ならば、 Hadoopを企業レベルで提供できるようにすることが自分の責務だと思いました。エンタープライズレベルのHadoopディストリビューションを提供するClouderaを選んだのはそういう理由からです。 - ──現在、
Clouderaでは 「チーフアーキテクト」 をされているということですが、 実際にはどんなお仕事をなさっているのでしょうか。 C:チーフアーキテクトという肩書はあまり正確に私の業務を表しているとは言えないですね
(笑)。私のClouderaの仕事は大きく3つあります。ひとつは"Hadoopアンバサダー"としてHadoopのビジョンを顧客やユーザ、 そしてあなたのようなプレス関係者やアナリストに対して説明を行い、 普及/ 啓蒙を促進することです。今回のようなカンファレンスへの参加もこれにあたります。 2つ目はApache Software Foundation
(ASF) のボードディレクターとしての仕事です。HadoopはASFのトップレベルプロジェクトであり、 ASFの存在があるからこそ、 Hadoopはより多くの人に使われるようになりました。したがってASFでのプロジェクトが円滑に回るように調整する仕事はClouderaにとっても重要なことなのです。そして3つ目はいちソフトウェアプログラマとしての業務です。ソフトウェアをデザインし、 コードを書き、 テストを行うという、 プログラミングの一連の作業を淡々とこなしていますよ。
なぜJavaなのか?
- ──いちプログラマとして、
と言われましたが、 ダグさんはプログラミング言語としてJavaを選ぶことが多いそうですね。HadoopもLuceneもJavaで書かれていますが、 あえてJavaを選んだ理由をお聞かせいただけますか。 C:私がJavaを好きな最大の理由はその再利用性です。世の中に存在するJavaライブラリの数の多さを見ればそれは自明でしょう。Hadoopでは、
どうしても高パフォーマンスが必要な部分はC++で書くケースもありますが、 基本的にはJavaでコーディングしています。 - ──いま言われたように、
Javaに関してはパフォーマンスに疑問をもつ人も少なくありません。 「Javaが普及したことで並列分散処理の歴史は10年遅れた」 とJavaへの嫌悪感を隠さない専門家もいます。こうした意見についてはどう思われるでしょうか。 C:私はJavaのことを
「ほどよい妥協点を実現した言語」 だと思っています。たしかにJavaのパフォーマンスについてあれこれいう人はたくさんいます。Hadoopのパフォーマンスの問題も、 50%ほどはJavaに原因があるかもしれません。しかしHadoopはJavaで書いたからこそ多様性や拡張性を備え、 数多くのエコシステムを生み出すことに成功しました。 パフォーマンスに関しても
「ベストではないがグッドではある」 と私は思っています。もちろん今後の改善は必要です。しかし、 ハードウェアが1年で2倍のスピードを達成している現状を考えれば、 Javaのパフォーマンスをそれほどセンシティブに捉える必要はないと思います。ハードウェアはすぐに倍の性能になりますが、 ソフトウェアはそういうわけにいきませんから。
オープンソースは宗教でも道徳でもない
- ──では、
Javaで書かれていることがパフォーマンス遅延の理由だとしてHDFSをCで書き換えた、 MapRのようなプロダクトに対してはどのように見ていらっしゃいますか。 C:うーん、
私がMapRに言えることはただひとつ、 「グッドラック!」 ですかね。たしかにMapRはApache Hadoopとは違うアプローチを取っています。これは私見ですが、 MapRのようなプロプライエタリはコンポーネントを対応させるのがすごく大変なのではないでしょうか。また、 Cで書き換えたからといって誰の目にも明らかなほどパフォーマンスが向上しているようには思えません。 ですが、
それが彼らのアプローチであるなら別にかまわないとも思います。我々 (Cloudera) はオープンソースを選択していますが、 オープンソースは宗教でも道徳でもありません。プロプライエタリが良いと思うなら堂々とその道を行けばいいのではないでしょうか。そういう意味でMapRには 「グッドラック」 と言いたいですね。ソフトウェアの世界は誰もが同じ選択をする必要はなく、 違っていてあたりまえなのですから。 - ──ダグさんは、
Hadoopはオープンソースだからより多くの人々に使ってもらえるようになったと言われましたが、 同じオープンソースでも失敗してしまうプロダクトも数多くあります。コミュニティを10年近く維持してきたダグさんから見て、 オープンソースプロジェクトを成功に導く秘訣があれば教えてください。 C:オープンな組織運営を心がけることです。新しい参加者がいたら、
リスペクトをもって積極的にコミュニティに受け入れてください。コミュニティの成長は新しいメンバーをどれだけ取り込むことができるかにかかっています。既存のメンバーは新しくコミュニティに入ろうとする人に対して、 対等な立場で接することが非常に重要です。
すべてのオープンソース開発者、ユーザへのリスペクトがある
- ──最後にもうひとつ質問させてください。Hadoopの生みの親として、
またオープンソースのエバンジェリストとして、 世界中の開発者から深く尊敬されるダグさんですが、 そのダグさんが尊敬する開発者がいたら教えてください。 C:個別の名前を挙げるなら、
オープンソースという概念を最初に浸透させたリーナス・ トーバルズ (Linus Torvalds) やApache開発者でASF創設にも尽力したブライアン・ ベーレンドーフ (Brian Behlendorf) などは素晴らしい開発者だと思います。Javaを世に送り出したジェームス・ ゴスリング (James Gosling) も以前から親しくしています。現在、 Hadoopの開発者の中には、 ジェームスと一緒にJavaに関わってきた人たちがたくさんいます。 ですが、
そういったスーパーな開発者だけでなく、 私はオープンソースに関わるすべての人々を同じように深く尊敬しています。開発する人も使ってくれる人も、 誰もがなくてはならない存在であり、 私自身、 オープンソースの活動を通してさまざまな恩恵を受けてきました。良い仕事ができたことはすべてそういった人々のおかげであり、 本当に深く感謝しています。 何度も言いますが、
私のゴールはひとりでも多くの方に自分が関わったソフトウェアを使ってもらうことです。みなさんに言いたいことがあるとするなら 「どうか気軽にHadoopを、 そしてオープンソースを使ってみてください」 ですね。これからもつねにそう願いながら、 開発を続けていきたいと思います。