BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ アーティクル MapReduceとHadoopの将来について、YahooのDoug Cuttingにインタビュー

MapReduceとHadoopの将来について、YahooのDoug Cuttingにインタビュー

Hadoop(サイト・英語)は、 MapReduceの実装と分散ファイルシステムを含む、オープンソースの分散コンピューティングプラットフォームです。InfoQは先月、前年行われた Hadoopの速度向上について、Jeremy Zawodnyによる概要説明をお伝えしました(記事)。InfoQのJava担当編集者であるScott Delapは最近、HadoopのプロジェクトリードであるDoug Cuttingに話を聞くことができました。このInfoQスペシャルインタビューでは、YahooにおいてHadoopがどのように使われているか、その開発におけるチャレンジ、そしてプロジェクトの将来的な方向性についてCuttingが語ってくれています。

Scott Delap (SD): Hadoopは現在、Yahooの製品における何らかの機能として使われているのですか?もし使われていないのであれば、実験的なテクノロジーからコアとなる基盤コンポーネントに移行するにあたって、どのような計画がなされているのでしょうか?

Doug Cutting (DC): Yahoo! は普段から、ランキング機能や広告のターゲッティングなど、製品やサービスを改善するタスクを調査するためにHadoopを使っています。まだわずかなケースですが、Hadoopによって生成されたデータが直接製品に使われたりもしています。Hadoopの長期的なゴールは、Web検索用にクロールしたデータの分析など、次世代のWebスケールなサービスをサポートする、世界に通用する分散コンピューティングツールを提供することです。

SD: YahooにおいてHadoopのチームはどれくらいの大きさなのでしょうか?プロジェクトに対して活発に貢献する外部の人間は、どれくらいいるのでしょうか?

DC: Yahoo! はHadoopに焦点を置いて直接従事する開発者のチームを持っています。彼らの主たる仕事は、Apacheのオープンソースプロジェクトに対して活発に貢献することです。日、週、月単位でHadoopに貢献する、Yahoo!以外の人間もわずかにいます。

SD: Yahoo はスケーラブルなインフラストラクチャに対して、Googleと比較すると明らかに異なるアプローチを採用しています。Googleはそのテクノロジーに関する多くの資料を公表してはいますが、一般的に利用できるものではありません。なぜあなたは、オープンソースという方向性をとるのが正しいと思うのですか?

DC: オープンソースは、そのプロダクトが生み出すであろうものに全ての人が賛同し、かつ汎用的なニーズに対する文書化された解決策が存在するときに最もうまく行きます。オープンソース開発モデルは、多くの分野において幅広いアプリケーションのバラエティを持つような、インフラとなるソフトウェアに対しては特にうまく行きます。我々はこれを、Yahoo!が利用しサポートしている多くのソフトウェアで見てきました: FreeBSD、Linux、Apache、PHP、MySQL、などです。

このテクノロジーを誰でも使えるようにすることで、Yahoo にとってもまた、最先端の大きな分散処理システムの構築を進めるのに役立っています。ソースコードは、パズルの一ピースでしかありません。それ (オープンソースソフトウェア) を使用して大きな問題を解決することのできる、素晴らしく才能にあふれた開発者のチームを、組織は依然として必要としています。正しいインフラを配置し、管理する能力もまた非常に重要です。今日、必要なリソースの全てを持つ企業は非常に少数です。

最後に、エンジニアはオープンソースに従事することを非常に好みます。なぜなら、将来プロジェクトで使う可能性のある非プロプライエタリな技術を学ぶ一方で、より大きな開発者同士のコミュニティ内で知名度を上げる助けになるからです。そうした環境はまた、すぐれたエンジニアを採用するのをより容易にします。

Yahoo!とHadoopコミュニティは、大規模分散コンピューティングに対するニーズを理解するために協力すること、かつ、誰もが使えて修正できるソリューションを作り出すために、我々のノウハウと技術を共有することにより、どちらも利益を享受しています。

SD: 技術自体に話を戻すと、昨年Hadoopの速度と信頼性を向上させたことにより、あなたが学んだことは何でしょうか。私は500ノードにおけるある種のベンチマークで、1年前より20倍以上速くなっていることに注目しました。このスピードアップに影響を及ぼしたのは、一発の魔法の弾丸ですか、それともいろいろな項目の寄せ集めですか?

DC: Web 規模のサービスにおけるソフトウェア基盤を構築する過程で、同様の機能を必要としていそうな企業や組織の数が増え続けていることを、Yahoo!は認識しました。Yahoo!はプロプライエタリなソリューションよりもオープンソースのアプローチを採用することを決め、その推進のために私を雇用し、プロジェクトへの支援を始めました。現在までのところ、Yahoo!はプロジェクトのコードの大部分に貢献しています。

スピードアップは過去数年における我々の作業の集大成であり、ほとんどがトライ・アンド・エラーによって成し得たものです。あるサイズのクラスタ上でスムーズに動作したら、次はクラスタのサイズを倍にし、何が起こるかを見ます。我々は、クラスタのサイズを増やすにつれ、パフォーマンスがリニアに拡大することを目標としています。このプロセスから我々は学び、そしてさらにクラスタのサイズを増加させます。クラスタのサイズを増やす度にエラーの数や種類も増加するため、信頼性の確保がどんどん難しくなっていきます。

こうしたことを行うたびに何かを得て学び、オープンソースのグリッドコンピューティングにおける一般的な知識に寄与しているのです。規模が大きくなるにつれて新しいエラーモードが表面化し、以前はまれにしか起こらなかった問題が日常化して対処が必要となり、我々が学んだレッスンは次のイテレーションに影響を与えます。

SD: Hadoop をAmazon EC2上で動かすイメージが去年から出てきています。これはにより、開発者たちは彼ら自身の小さなクラスタを素早く起動することができます。クラスタの管理やHDFS、MapReduceのプロセスなどを単純化するための動きは他にもありますか?

DC: Yahoo! は、マシンのプールからユーザに対しMapReduceのクラスタを動的に割り当てる、Hadoop on Demand (HOD) と呼ばれるプロジェクトを持っています。これはHadoopのオープンソースプロジェクトに対して寄与されるためのプロセスを経ているところです。 Amazon EC2は、Hadoopを始めようとする人々にとって理想的な環境です。なぜなら、巨大なクラスタを操作することは複雑で、かつリソースを消費するものだからです。

SD: HadoopとGoogleが公開している情報を現在比較すると、どれくらいの割合で同等でしょうか?プロセスロケーションをデータロケーションに最適化する機能などは、今のところ取り組まれているのでしょうか?

DC: この10年間、大規模分散コンピューティングソフトウェアは多くの企業や学術研究機関で内部的に開発されてきました。最近興味深いのは、コンピューティングの経済的な側面がより好意的に受け止まられ、消費者向けの製品の中でアプリケーションがより目に見えるようになってきたことです。Googleとは違い、 Yahoo!はオープンで非プロプライエタリな環境においてHadoopを開発することを決めました。Hadoopを誰が使い、修正しようとも自由です。

Hadoop のゴールは、現在存在するもののクローンを行うというものから広がっています。我々は、誰もが利益を享受できる使いやすいシステムの構築に焦点を置いています。我々はGoogleが公開しているほとんどの最適化と、公開していない多くの物を実装してきました。Yahoo!はプロジェクトにおいてリーダー的な役割を担っています。なぜなら、プロジェクトのゴールはわれわれ (Yahoo!) のニーズと非常にマッチし、そしてこのテクノロジーを世界中で共有することに利益を見出しているからです。

SD: 最新の公式リリースは0.13.1です。次のリリースで予定されている主要な機能はなんでしょうか?1.0のリリースを行うために何が必要ですか?

DC: 218個の変更とともに(source)、0.14.0のリリースがまさに行われたばかりです。

0.14.0 における最も大きな変更はファイルシステムについてです。データの整合性を非常に向上させました。これはほとんどのユーザに対してはほとんど目に見えない変更ですが、ファイルシステムがデータの破損を早く、より効率的に見つけることができるということを意味しています。これは非常に重要です。なぜなら、我々が扱うデータセットとクラスタのサイズによっては、メモリとディスクのどちらにおいてもデータの破損が頻繁に起こるからです。我々はまた、ファイルの変更日時やMapReduceに対するC++ API、そしてその他にも多くの機能やバグフィックス、最適化を追加しました。

Hadoop 0.15.0はまだ具体化されている最中で、現在のところ88個の変更が計画されています(source)

ファイルシステムに対する認証と権限が追加され、クラスタを共有している人々が、他人のファイルを修正してしまうのを難しくします。また、MapReduceのAPIに多くの変更を行うことも計画しています。

これはユーザにアプリケーションの変更を要求しますので、非常に骨の折れる仕事です。なので、最初の一回で決着をつけてしまいたいと思っています。

我々は現在のところ、1.0以前のリリースとしては0.15が最後になればよいと思っています。一度1.0をリリースしてしまうと、互換性のない変更に対してはより保守的になる必要があるでしょう。我々はすでに後方互換性について多くの注意を払っていますが、1.0ではより重要になることでしょう。計画では、1.0に対して書かれたあらゆるユーザコードは、その後の1.Xリリース全てで、変更することなしに動作すべき、としています。そのため、しばらくの使用にも耐えうるか、せめて後方互換性を保ったまま簡単に拡張することのできるAPIであるかを確かめる必要があります。我々はこうしたことの全てを 0.15でトライし、1.0のリリースでそれらをロックしてしまう前の一リリースとして付き合うつもりです。

原文はこちらです:http://www.infoq.com/articles/hadoop-interview
(このArticleは2007年9月12日にリリースされました)

この記事に星をつける

おすすめ度
スタイル

BT