Googleを巨大にした友情(7/9)

入門/解説

1.Googleを巨大にした友情(7/9)まとめ

・分散コンピューティング環境でリリース作業が面倒だったのでMapReduceを書いた
・使い勝手が良かったので社内でも様々な場面で使われるようになり論文を公開した
・クローンとしてHadoopが作られ世界中で分散コンピューティングが一般的になった

2.MapReduceの開発

以下、www.newyorker.comより「The Friendship That Made Google Huge」の意訳です。元記事の投稿は2018年12月3日、James Somersさんによる投稿です。

JeffとSanjayは、2003年の4か月で、おそらく単一のアップグレードとしては過去最大のアップグレードをGoogleに行いました。彼らはMapReduceと呼ばれるソフトウェアによってそれを行いました。

MapReduceは、彼らがGoogleのクローラーと索引を三度目に書き直した際に思いついたアイディアでした。クローラーや索引を書き直すような大規模なプロジェクトでは、彼らは毎回同じ事、つまり地理的に分散され、個々の信頼性が低い、膨大な数のコンピューターで手間のかかる作業を行う必要がありました。

この大変な作業を簡単にする手段があれば、同じ事を何度も何度も繰り返す必要はなくなるでしょう。しかし、それはGoogleのプログラマがまるで膨大な数のコンピュータが、惑星サイズの一台のコンピューターであるかのように扱う事が出来るツールが必要となります。

JeffとSanjayがアヒルが泳いでいる池が見下ろせるオフィスで書いたMapReduceは、非常に複雑なプロセスに秩序を課します。MapReduceが登場する前は、各プログラマは自分でデータを分割し、配布し、作業を割り当て、ハードウェア障害を考慮する方法を考え出す必要がありました。MapReduceはこれらの問題を体系的に扱う手段をプログラマに与えました。

シェフが料理の下ごしらえを準備する際には、食材を組み合わせる前に食材を準備します。同様にMapReduceはプログラマに彼らの仕事を2段階に分ける事を望みます。まず、プログラマは各マシンに「マップ(Map)」段階の作業の実行方法を指示します(たとえば、Webページに単語が何回表示されるかを数えるなど)。次に、プログラマは全てのマシンの出力結果を「減らす(Reduce)」ための指示を書きます。(たとえば、それらを合計する事など)。MapReduceは配布の詳細を処理します。 – そして、こうすることによって、その作業をプログラマが考えなくとも良いようにします。

翌年、JeffとSanjayは、MapReduceを利用してGoogleのクローラーとインデックス作成システムを書き直しました。すぐに他のエンジニアもそれが強力であることに気付き、彼らはビデオ処理やGoogleマップでタイルをレンダリングする際にMapReduceを使い始めました。

MapReduceはとてもシンプルなので、様々な新しい作業に応用する事ができました。

Googleには「日中使用曲線」として知られるものがあります。夜よりも日中の方がトラフィックが多いのです。MapReduceを用いて夜間の使われていない計算機パワーを有効活用する事ができるようになりました。人間の脳は夜間に夢を見ているその日中に経験した事を処理しています。同様に、今、Googleは日中のデータを夜間に処理しているのです。

初期の頃から、グーグルは検索エンジンを提供している会社ではなくAIの会社である事を暗示していました。2001年に、JeffとSanjayとオフィスを共有していたNoam Shazeerは、Googleが他の会社からライセンスを受けて使用していたスペルチェッカーにイライラしていました。それは「TurboTax」と入力したユーザーに、「turbot axの間違いですか?」などと誤った単語を提案してくるような間違いを犯し続けました。turbotは北大西洋に住んでいるヒラメを意味します。

Shazeerは、スペルチェッカーの優秀さは搭載している辞書に比例している事、及びGoogleが人類史上最大の辞書、Webにアクセスできることに気付きました。彼は、どの単語がスペルミスである可能性が高いかを判断するためにWeb上のテキストの統計的特性を使用するソフトウェアを作成しました。

このソフトウェアは、「pritany spears」と「brinsley spears」の両方が「Britney Spears(訳注:ブリトニー・スピアーズ、アメリカの女性歌手です)」を意図したスペルミスである事を学習する事が出来ました。ShazeerがGoogleの週次T.G.I.Fでこのプログラムをデモしたとき、他の従業員はプログラムの誤動作を引き出そうとしましたが、ほとんど失敗しました。

JeffおよびGeorges Harikというエンジニアと共同で、Shazeerは広告をWebページに関連付けるために同様の手法を適用しました。ターゲティング広告は大きな収入源になり、同社がコンピューティングインフラストラクチャに力を入れるための大きな流れとなりました。

それは良い循環の始まりでした。巨大である事がGoogleが優秀な人材を集める事を可能にします。優秀な人材は収益の源泉です。そして、収益は会社の成長を可能にします。それは会社を並外れた、不安を抱かせるほど、支配的立場にしました。

進取の気性に富んだコーダー達はGoogleのデータから洞察を引き出すためにMapReduceを使いました。ユーザーのボイスメールを転記したり、質問に答えたり、クエリを自動補完したり、100以上の言語で翻訳する事が可能になりました。これらのシステムは、比較的複雑でない機械学習アルゴリズムを使用して開発されました。

「非常に単純な手法であっても、大量のデータがある場合は、依然として非常にうまく機能します」とJeffは言います。

データが重要なのです。 BigTable、MapReduce、およびそれらの後継製品でデータは保管および処理されます。Googleはデータ指向が主流となり、Googleの世界規模のインフラストラクチャがよりシームレスかつ柔軟になりました。

分散コンピューティングの考えは新しいものではありません。「クラウドコンピューティング」や「ビッグデータ」などの概念は、Google設立前から存在しました。しかし、一般的なプログラマも分散プログラムを容易に書けるようにする事により、JeffとSanjayはGoogle社内でこれらの技術をより高いレベルで用いる事を可能にしました。ユーザーも何かが変わったと感じていたかもしれません。Googleのクラウドはよりスマートになっていました。

2004年に、JeffとSanjayは天文学者、遺伝学者、そして処理すべき多くのデータを持つ他の科学者にとってMapReduceは有用であろうと考え、彼らは論文「MapReduce: Simplified Data Processing on Large Clusters」を書き、これを一般公開しました。

MapReduceの論文は、deus ex machina(訳注:デウス・エクス・マキナ、機械仕掛けの神)として降臨しました。

安価なハードウェアとWebサービスおよび接続されたデバイスの増加が大量のデータをもたらしましたが、この膨大な情報を処理するソフトウェアを持っている企業はほとんど存在しませんでした。

Nutchと言う小さな検索エンジンの規模拡大に苦労していた2人のエンジニア、Mike CafarellaとDoug Cuttingは、MapReduceの重要性を確信し、このシステムの無料のクローンをゼロから作成することにしました。Cuttingの息子のお気に入りの象のぬいぐるみにちなんで、彼らは最終的に彼らのプロジェクトをHadoopと呼ぶ事にしました。

Hadoopが成熟するにつれて、Fortune 50、世界で最も称賛される企業50社の半分が採用しました。それは「ビッグデータ」と同義語になりました。

よく知られているように、Facebookはユーザーのメタデータ(クリックしたもの、イイネしたもの、表示した広告に関する情報など)を保存および処理するために「Hadoop MapReduce」を使用しました。ある時点では、Facebookは世界最大のHadoopクラスターを持っていました。

Hadoop MapReduceはLinkedInとNetflixのパワーアップも助けました。国家安全保障局の元技術責任者であるRandy Garrettは、その機関の責任者であるGeneral Keith AlexanderにHadoopをデモした時の事を覚えています。

Hadoopは、従来のシステムよりも18,000倍も高速に分析タスクを実行しました。何人かの観察者が「collect it all(訳注:スノーデンさんが警告していた、ありとあらゆる情報を収集する対テロ戦争下での新アプローチ)」と呼ぶ、情報収集の新しいアプローチの基礎となりました。

 

3.Googleを巨大にした友情(7/9)関連リンク

1)www.newyorker.com
The Friendship That Made Google Huge

2)static.googleusercontent.com
MapReduce: Simplified Data Processing on Large Clusters

 

コメント

タイトルとURLをコピーしました