グーグルが「Google File System」次期バージョンを開発中
グーグルが独自に開発した分散ファイルシステム「Google File System」(GFS)。GFSには、グーグルがクローラが集めてきた大量のコンテンツ、GMailなどの利用者が保存する大量のファイル、 Google Mapsなどが表示する大量の画像など、想像を絶するほど大量のデータが保存されています。
GFSは約10年前に開発され、その後改良を加えられてはきましたが、いくつかの弱点が表面化してきています。それらの弱点を克服するために現在グーグルでは GFSの次のバージョンを開発中で、開発責任者であるSean Quinlan氏へのインタビューが、米国の計算機学会であるACMのWebサイトに掲載されています。
また、そのインタビューの概要がニュースサイトRegisterの記事「Google File System II: Dawn of the Multiplying Master Nodes • The Register」でも紹介されています。
インタビューの内容をいくつかピックアップしていきましょう。
シングルマスターシステムの弱点
GFSはシングルマスター、つまりGFSを管理するマスターサーバが1つ存在し、その管理下で大量のデータを保存する、という構造になっています。なぜこのような構造になったのか、という質問に、Quinlan氏は次のように答えています。
The decision to go with a single master was actually one of the very first decisions, mostly just to simplify the overall design problem. That is, building a distributed master right from the outset was deemed too difficult and would take too much time.
シングルマスターにするという決定は、非常に初期に行われ、全体的な構造の問題をシンプルにするために選択された。分散マスターを全く何もないところから作り上げるというのは非常に困難で時間がかかることになるからだ。
記事によると、グーグルは当初、独自の分散ファイルシステムを作る計画はなかったのですが、ネット全体をカバーする大規模なクローラとインデックスを開発するとした時点で、それを支えるファイルシステムを作らざるを得なくなったのだそうです。そのために、分散マスター構造による堅牢性よりも、シンプルな構造で早く開発できることが優先されたと説明されています。
The decision to build the original GFS around the single master really helped get something out into the hands of users much more rapidly than would have otherwise been possible.
GFSをシングルマスターで構成するという決断は、そうせずに実現しようとしていた場合よりもずっと早く、何らかの結果を出すことを助けてくれた。
また、シングルマスターといってもグーグル全体で1つのマスターが存在するのではなく、1つのデータセンターで複数のマスターが稼働している、という構造になっているようです。
GFSは当初、クローラやインデックスといったグーグル内部のバッチ処理用に開発され、その後GMailなどのアプリケーションでも用いられるようになりました。そしてこのようなアプリケーション用のファイルシステムとして使われたとき、弱点の1つが表面化しました。
One GFS shortcoming that this immediately exposed had to do with the original single-master design. A single point of failure may not have been a disaster for batch-oriented applications, but it was certainly unacceptable for latency-sensitive applications, such as video serving. The later addition of automated failover capabilities helped, but even then service could be out for up to a minute.
GFS の1つの弱点がシングルマスター構造であることはすぐに表面化した。シングルマスターが障害を起こしても、バッチ処理ならばそれほど大した問題にはならない。しかしビデオ再生のようなレイテンシが重要なアプリケーションでは大問題だ。そのため後になってGFSには自動フェイルオーバー機能が追加されたが、それでも数分はサービスが停止することになる。
検索結果のランキングを計算するような処理であれば、処理がエラーになって結果が出るのが半日遅れたとしても目立った問題にはなりません。しかし、人が利用するアプリケーションの場合にはそうは行きません。GFSはこの点で課題を抱えてしまっていたようです。
チャンクの大きさの弱点
GFS はデータを保存するチャンクの大きさが64MB固定となっていました。これはクローラーやインデックスのような大きなデータ処理には向いていますが、 GMailやGoogle Docsのようなアプリケーションにとっては大きなサイズです。これも新たな弱点となりました。
Rapid growth also put pressure on another key parameter of the original GFS design: the choice to establish 64 MB as the standard chunk size. That, of course, was much larger than the typical file-system block size, but only because the files generated by Google's crawling and indexing system were unusually large.
急速な成長は、当初のGFSの構造により決定されたパラメータにもプレッシャーとなった。それは64MBのチャンクサイズだ。これは一般的なファイルシステムのブロックサイズよりもずっと大きく、しかしグーグルのクロールやインデックスシステムには適していたために決定されたものだ。
As the application mix changed over time, however, ways had to be found to let the system deal efficiently with large numbers of files requiring far less than 64 MB (think in terms of Gmail, for example). The problem was not so much with the number of files itself, but rather with the memory demands all of those files made on the centralized master, thus exposing one of the bottleneck risks inherent in the original GFS design.
期間を経てさまざまなアプリケーションが追加されたことで、64MBよりも小さな大量のファイルを効率よく扱わなければならなくなった(GMailを考えてみてほしい)。この問題はファイルの数それ自体ではなく、むしろそれらのファイルがマスターのメモリを使用することにある。結果、これも当初のGFSの構造がボトルネックになるというリスクを表面化させた。
今後グーグルがさらにWebアプリケーションを強化しようと考えているところで、このボトルネックは解消されなければならないと考えるのは当然のことでしょう。
新たに次世代のGFSを作り直す
ここにあげた以外にもいくつかの課題をGFSは抱えていて、現在グーグルは次世代のGFSを開発中とのことです。約10年にわたってグーグルを支えてきたGFSを刷新するというのは、グーグル自身にとって次の10年を左右する重要なプロジェクトであるはずです。
Quinlan氏は次世代のGFSが具体的にどのようなものになるのか、インタビュー中で明かしていません(チャンクの大きさは1MBあたりが適当ではないか、など一部は明かしています)。現在のGFSの弱点を克服したもの、すなわち分散マルチマスター構造で1MBチャンクによって構成され、より大きなスケーラビリティとリアルタイム性、耐障害性を備えたものになるのは間違いないとして、例えばSSDに最適化されたファイルシステム、あるいはメモリグリッドを最大限に活用したシステムなど、これからのハードウェアの進化に沿った新しい設計になるのではないでしょうか。
GFSがどのように進化するのか注目したいところですが、グーグルは内部の技術については基本的に秘密主義を貫いている企業であり、すぐに詳細な情報が流れてくることはあまり期待できないかもしれません。
関連記事 on Publickey
- グーグルの最新のデータセンターは非常識なほど進化している
- Google App Engineにデータストアの障害発生。復帰まで約6時間、原因は現在も不明
- ついに無制限に解放されたGoogle App Engine/Java。RoRやPHP、もちろんJavaも試そう
- グーグル、バナーを現実世界に表示。Google Appsは本気だ