Search Mail.Ru、パヌト2倧芏暡な怜玢゚ンゞンのデヌタ準備アヌキテクチャのレビュヌ

Big Search Engineデヌタ準備アヌキテクチャの抂芁



前回は、2010幎にGo.Mail.Ruがどのように開始されたか、そしお以前は怜玢がどのようだったかを思い出したした 。 この投皿では、党䜓像を描いおみたす-他のナヌザヌがどのように機胜するかに぀いお詳しく説明したすが、最初に怜玢配信に぀いお説明したす。



怜玢゚ンゞンの配垃方法



ご芁望のずおり、最も人気のある怜玢゚ンゞンの配信戊略の基本に぀いお説明するこずにしたした。



むンタヌネット怜玢は、ほずんどのナヌザヌが自分で遞択するサヌビスの1぀であり、最匷のものがこの戊いに勝぀べきだずいう意芋がありたす。 この立堎は私たちにずっお非垞に魅力的です。この理由から、私たちは垞に怜玢技術を改善しおいたす。 しかし、垂堎の状況は修正されおおり、いわゆる「ブラりザ戊争」がそもそも介入しおいたす。



怜玢がブラりザに関連しおいなかった時代がありたした。 その埌、怜玢゚ンゞンは、ナヌザヌが自分の裁量でアクセスした別のサむトに過ぎたせんでした。 想像しおみおください-2006幎に登堎した第7バヌゞョンたでのInternet Explorerには怜玢バヌがありたせんでした。 Firefoxには最初のバヌゞョンから怜玢バヌがありたしたが、圌自身は2004幎にのみ登堎したした。



怜玢文字列はどこから来たのですか ブラりザの䜜者によっお発明されたのではありたせん-2001幎にリリヌスされたGoogleツヌルバヌに初めお登堎したした。 Googleツヌルバヌは、ブラりザに「Google怜玢ぞの迅速なアクセス」機胜、぀たりパネルの怜玢行を远加したした。







Googleがツヌルバヌをリリヌスしたのはなぜですか これが、圓時のGoogleのブランドマネヌゞャヌであるダグラス゚ドワヌズが圌の本「I'm Feeling LuckyThe Confessions of Google Employee Number 59」で圌の䜿呜を説明する方法です。



「ツヌルバヌはマむクロ゜フトずの戊争における秘密兵噚でした。 Googleは、ブラりザにツヌルバヌを埋め蟌むこずで、ナヌザヌぞのフィルタリングされおいないアクセスをめぐっお戊いの別の面を開きたした。 Bill GatesはPC゚クスペリ゚ンスを完党に制埡するこずを望んでおり、Windowsの次のバヌゞョンではデスクトップ䞊に怜玢ボックスが組み蟌たれるずいう噂がたくさんありたした。 Googleの怜玢ボックスが時代遅れの遺物にならないようにする必芁がありたした。」



「ツヌルバヌは、マむクロ゜フトずの戊争における秘密兵噚でした。 Googleは、ツヌルバヌをブラりザに統合するこずで、ナヌザヌぞの盎接アクセスの戊いで別の面を開きたした。 Bill Gatesは、ナヌザヌがPCず察話する方法を完党に制埡したいず考えおいたした。次のバヌゞョンのWindowsでは、怜玢バヌがデスクトップに盎接むンストヌルされるずいう噂が広たりたした。 Google怜玢バヌが過去の遺物にならないように察策を講じる必芁がありたした。」



ツヌルバヌはどのように配垃されたしたか はい、すべお同じで、人気のある゜フトりェア RealPlayer 、Adobe Macromedia Shockwave Playerなど。



他の怜玢゚ンゞンがツヌルバヌたずえば、Yahooツヌルバヌを配垃し始めたこずは明らかであり、ブラりザヌメヌカヌはこの機䌚を利甚しお怜玢゚ンゞンから远加の収入源を埗るこずにためらわず、「デフォルト怜玢゚ンゞン」の抂念を導入しお怜玢ラむンに組み蟌みたした。



ブラりザヌメヌカヌの事業郚門は、明らかな戊略を遞択したした。ブラりザヌはむンタヌネットぞのナヌザヌの゚ントリポむントであり、ブラりザヌの芖聎者はデフォルトの怜玢蚭定を䜿甚する可胜性が高いので、これらの蚭定を販売したせんか たた、むンタヌネット怜玢は「粘着性」がほずんどない補品であるため、圌らは独自の方法で正しかったのです。



この時点で、さらに詳しく説明する䟡倀がありたす。 「いや、人は怜玢に慣れお、自分が信頌するシステムだけを䜿甚したす」ず倚くの人が怒りたすが、実際は逆のこずを蚌明したす。 たずえば、受信トレむたたは゜ヌシャルアカりントの堎合。 䜕らかの理由でネットワヌクが利甚できず、すぐに別のメヌルサヌビスや他の゜ヌシャルネットワヌクにアクセスしないでください。アカりントに「スタック」しおいるためです。友人、同僚、家族はそれらを知っおいたす。 アカりントの倉曎は、長くお苊しいプロセスです。 怜玢゚ンゞンでは、すべおがたったく異なりたす。ナヌザヌは特定のシステムに瞛られおいたせん。 䜕らかの理由で怜玢゚ンゞンが䜿甚できない堎合、ナヌザヌは座っお最終的に機胜するのを埅ちたせん-他のシステムに移動するだけですたずえば、競合他瀟の1぀がクラッシュしたずきに、LiveInternetカりンタヌでこれを明確に確認したした  同時に、すべおの怜玢゚ンゞン怜玢行、ク゚リ、結果ペヌゞがほが同じように配眮されおいるため、ナヌザヌは事故にあたり苊しみたせん。 さらに、玄90の堎合、ナヌザヌはどのシステムを怜玢しおも、質問に察する回答を受け取りたす。



そのため、䞀方で怜玢には実質的にれロの「粘着性」がありたす英語では「粘着性」ずいう特別な甚語がありたす。 䞀方、ある皮の怜玢はデフォルトでブラりザにすでにプリむンストヌルされおおり、かなりの数の人がそこから䜿甚するのが䟿利であるずいう理由でのみそれを䜿甚したす。 たた、怜玢行の背埌の怜玢がナヌザヌのタスクを満たしおいる堎合、ナヌザヌは匕き続き䜿甚できたす。

私たちは䜕に来たすか 䞻芁な怜玢゚ンゞンには、ブラりザの怜玢文字列を争う以倖に遞択肢がありたせんでした。デスクトップ怜玢補品-ツヌルバヌは、むンストヌルプロセス䞭にナヌザヌのブラりザのデフォルト怜玢を倉曎したす。 この闘争のむニシ゚ヌタヌはグヌグルであり、残りは身を守らなければなりたせんでした。 たずえば、Yandexの䜜成者であり所有者であるArkady Volozhのむンタビュヌでそのような蚀葉を読むこずができたす。



「2006-2007幎 ロシアの怜玢垂堎でのGoogleのシェアは拡倧し始めたしたが、最初はその理由を理解できたせんでした。 その埌、GoogleがブラりザOpera、Firefoxに埋め蟌むこずで、Googleが自らを宣䌝しおいるこずが明らかになりたした。 たた、独自のブラりザずモバむルオペレヌティングシステムのリリヌスにより、Googleは関連する垂堎党䜓を砎壊し始めたした。」

Mail.Ruも怜玢であるため、「ブラりザ戊争」から免れるこずはできたせん。 他の垂堎よりも少し遅れお垂堎に参入したした。 珟圚、怜玢の品質は著しく向䞊しおおり、私たちの配信は、垂堎で繰り広げられおいるツヌルバヌの非垞に苊劎に察する反応です。 さらに、怜玢を䜿甚しようずしおいる人の数が増えおいるこずが結果に満足しおいるこずは、私たちにずっお本圓に重芁です。



ずころで、私たちの配信ポリシヌは、最も近い競合他瀟の配信ポリシヌよりも数倍アクティブではありたせん。 これは、runetのほずんどのWebサむトにむンストヌルされおいるカりンタヌtop.mail.ruで確認できたす。 ナヌザヌが配信補品ツヌルバヌ、独自のブラりザヌ、パヌトナヌブラりザヌのブラりザヌボックスのいずれかを介しおオンデマンドでサむトに移動するず、パラメヌタヌclid =がURLに存圚したす...したがっお、配信リク゚ストの容量を芋積もるこずができたす。私たちのものより。



しかし、配垃から他の怜玢゚ンゞンの動䜜に移りたしょう。 結局、他の怜玢゚ンゞンのアヌキテクチャ゜リュヌションの研究から、アヌキテクチャの内郚議論を自然に始めたした。 アヌキテクチャの詳现に぀いおは説明したせん。代わりに、公開資料ぞのリンクを瀺し、重芁な゜リュヌションの特城を匷調したす。



倧芏暡な怜玢゚ンゞンでのデヌタ準備



ランブラヌ


珟圚閉鎖されおいるランブラヌ怜玢゚ンゞンには、興味深い建築䞊のアむデアがたくさんありたした。 たずえば、独自のデヌタストレヌゞシステムNoSQL、珟圚そのようなシステムを呌び出すこずが流行しおいるためおよび分散コンピュヌティングHICS たたはHCS に぀いお知られおおり、特にリンクグラフでの蚈算に䜿甚されたした。 HICSでは、怜玢内のデヌタの衚瀺を単䞀の汎甚圢匏で暙準化するこずもできたした。



ランブラヌのアヌキテクチャは、クモの組織においお私たちのものずはたったく異なっおいたした。 私たちのスパむダヌは、ダりンロヌドされたペヌゞのアドレスの独自の自己蚘述ベヌスで、別個のサヌバヌずしお実行されたした。 各サむトをダりンロヌドするために、個別のプロセスが起動され、ペヌゞを同時にダりンロヌドし、それらを解析し、新しいリンクを匷調衚瀺しお、すぐにフォロヌするこずができたした。 ランブラヌのクモはもっず簡単になりたした。



1台のサヌバヌで、Ramblerが認識しおいるドキュメントのすべおのアドレスが1行に1぀ず぀、蟞曞線集順に䞊べられた倧きなテキストファむルが芋぀かりたした。 1日1回、このファむルはバむパスされ、ポンピング甚のその他のテキストファむルタスクが生成されたした。これは、アドレスのリストからのみドキュメントをダりンロヌドできる特別なプログラムによっお実行されたした。 次に、ドキュメントが解析され、リンクが抜出され、すべおの既知のドキュメントのこの倧きなファむルリストの隣に配眮され、゜ヌトされた埌、リストが新しい倧きなファむルにマヌゞされ、サむクルが再び繰り返されたした。



このアプロヌチの利点は、単玔さ、すべおの既知のドキュメントの単䞀のレゞストリの存圚でした。 欠点は、新しいドキュメントのダりンロヌドがスパむダヌの次の反埩でのみ発生する可胜性があるため、新しく抜出されたドキュメントアドレスにすぐに移動できないこずでした。 さらに、デヌタベヌスのサむズずその凊理速床は1぀のサヌバヌに制限されおいたした。



それどころか、スパむダヌはサむトからのすべおの新しいリンクをすばやくたどるこずができたしたが、倖郚からの管理は非垞に䞍十分でした。 远加のデヌタをアドレスに「泚ぐ」こずは困難でしたサむト内のドキュメントのランク付け、ポンプの優先順䜍の決定に必芁、デヌタベヌスをダンプするこずは困難でした。



ダンデックス


Den Raskovalovが講矩コヌスで語ったたで、Yandexの内郚怜玢゚ンゞンに぀いおはあたり知られおいたせんでした。



そこから、Yandex怜玢が2぀の異なるクラスタヌで構成されおいるこずがわかりたす。





1぀目は通垞のむンタヌネットダりンロヌドに䜿甚され、2぀目は衚瀺されたばかりの最も興味深いドキュメントのむンデックスぞの配信に䜿甚されたす。 これたではバッチ凊理のみを怜蚎したす。これは、むンデックスがリアルタむムで曎新される前にかなり離れおいたため、2日ごずにむンデックスを曎新するために出かけたかったためです。







同時に、Yandexバッチ凊理クラスタヌが倖偎のスむングクラスタヌずむンデックスクラスタヌのペアに倚少類䌌しおいるずいう事実にもかかわらず、いく぀かの重倧な違いがありたした。







グヌグル


Googleは間違いなく䞖界のテクノロゞヌリヌダヌであるため、Googleは垞にそれに泚目し、䜕を、い぀、なぜ行ったかを分析しおいたす。 もちろん、Googleの怜玢アヌキテクチャは私たちにずっお最も興味深いものでした。 残念ながら、グヌグルがそのアヌキテクチャヌ機胜を公開するこずはめったにありたせん。各蚘事は倧きなむベントであり、説明されたテクノロゞヌを実装する䞊行オヌプン゜ヌスプロゞェクト時には1぀ではないをほが瞬時に生成したす。



Google怜玢の機胜に興味のある方は、瀟内のむンフラストラクチャに関する最も重芁な専門家の1人、 ゞェフリヌディヌンゞェフリヌディヌンのほがすべおのプレれンテヌションずスピヌチを自信を持っお孊習するこずをお勧めしたす。



これらのプレれンテヌションに基づいお、Google怜玢アヌキテクチャの次の機胜を匷調できたす。





これはかなり合理的に芋えたす既知のすべおのドキュメントアドレスは1぀の倧きなテヌブルに栌玍され、優先順䜍が付けられ、リンクグラフ䞊で蚈算されたす。怜玢スパむダヌはポンプアりトされたペヌゞのコンテンツをそこにもたらし、その結果、むンデックスが構築されたす。



もう1぀のGoogleスペシャリストであるDaniel PengDaniel PengによるBigTableの革新に関する興味深いプレれンテヌションがありたす。これにより、数分で新しいドキュメントをむンデックスに远加するこずができたす。 この「倖郚の」テクノロゞヌはCaffeineずいう名前で宣䌝されおおり、出版物ではPercolatorず呌ばれおいたした。 OSDI'2010でのパフォヌマンスのビデオはこちらでご芧いただけたす 。



非垞に無瀌に蚀えば、これは同じBigTableですが、いわゆる トリガヌ-テヌブル内の倉曎に察しお機胜するコヌドをロヌドする機胜。 これたでのずころ、デヌタのバッチ凊理、぀たり 可胜であれば、デヌタが結合されお䞀緒に凊理される堎合、トリガヌぞの同じ実装は完党に異なりたす。 クモが䜕かをダりンロヌドし、新しいコンテンツをテヌブルに配眮したずしたす。 トリガヌがトリガヌされ、「新しいコンテンツが登堎したした。むンデックスを䜜成する必芁がありたす。」 むンデックス䜜成プロセスがすぐに開始されたした。 結果ずしお、怜玢゚ンゞンのすべおのタスクをサブタスクに分割でき、各タスクは独自のクリックで起動されるこずがわかりたした。 Googleが瀺したように、倧量の機噚、リ゜ヌス、デバッグされたコヌドにより、新しいドキュメントを远加する問題をわずか1分ですばやく解決できたす。



Googleアヌキテクチャずリアルタむムむンデックス曎新システムも瀺されたYandexアヌキテクチャの違いは、Googleが䞻匵したように、むンデックスの構築手順党䜓がトリガヌで実行されるのに察し、Yandexは最高の、ほずんどのサブセットに察しおのみ行われるこずです。貎重な文曞。



ルセン


別の怜玢゚ンゞンであるLuceneに蚀及する䟡倀がありたす。 これは、Javaで曞かれたフリヌりェアの怜玢゚ンゞンです。 ある意味では、Luceneは怜玢゚ンゞンを䜜成するためのプラットフォヌムです。たずえば、Nutchず呌ばれるWeb怜玢゚ンゞンはそこから発展しおいたす。 実際、Luceneはむンデックスず怜玢゚ンゞンを䜜成するための怜玢゚ンゞンであり、NutchはWeb䞊のドキュメントを怜玢するずは限らないため、ペヌゞをポンピングするスパむダヌず同じものです。



実際、Lucene自䜓には、数十億のドキュメントを備えた倧芏暡なWeb怜玢゚ンゞンで䜿甚できる興味深い゜リュヌションはあたりありたせん。 䞀方、HadoopおよびHBaseプロゞェクトを立ち䞊げたのはLucene開発者であるこずを忘れないでくださいGoogleからの新しい興味深い蚘事が登堎するたびに、Luceneの著者は自宅で音声゜リュヌションを適甚しようずしたした。たずえば、BigTableクロヌンであるHBaseが登堎したした 。 ただし、これらのプロゞェクトは長い間単独で存圚しおいたした。



Lucene / Nutchの私にずっお、圌らがHadoopをどのように䜿甚したかは興味深いものでした。 たずえば、Nutchでは、Webをポンピングするための特別なスパむダヌが䜜成されたした。これは、Hadoopのタスクの圢で完党に実行されたした。 ぀たり スパむダヌ党䜓は、MapReduceパラダむムのHadoopで実行されるプロセスにすぎたせん。 これは、Hadoopの䜿甚方法を超えた、かなり珍しい゜リュヌションです。 結局のずころ、これは倧量のデヌタを凊理するためのプラットフォヌムであり、デヌタがすでに利甚可胜であるこずを前提ずしおいたす。 しかし、ここではこのタスクは䜕も蚈算も凊理もしたせんが、逆にダりンロヌドしたす。



䞀方では、この゜リュヌションはそのシンプルさに魅了されたす。 結局のずころ、スパむダヌは、ポンピングのために1぀のサむトのすべおのアドレスを取埗し、それらを次々に移動する必芁があり、スパむダヌ自䜓も耇数のサヌバヌで分散しお実行する必芁がありたす。 そこで、サむトのアドレスの区切りの圢匏でマッパヌを䜜成し、レデュヌサヌの圢匏で個々のポンピングプロセスを実装したす。



䞀方、これはかなり倧胆な決定です。サむトを送り出すのが難しいためです。すべおのサむトが保蚌時間の責任を負うわけではなく、クラスタヌのコンピュヌティングリ゜ヌスは他の誰かのWebサヌバヌからの応答を埅぀だけです。 さらに、十分に倚数のポンピングアドレスが存圚する堎合、「遅い」サむトの問題が垞に存圚したす。 20の時間で、スパむダヌは高速Webサむトから文曞の80を汲み䞊げ、次に䜎速Webサむトをダりンロヌドしようず80の時間を費やしたす-そしお、それらを完党に汲み䞊げるこずはほずんど䞍可胜です。



このような解決策をしばらく分析し、その結果、それを攟棄したした。 おそらく私たちにずっお、このクモのアヌキテクチャは䞀皮の「吊定的な䟋」ずしお興味深いものでした。



怜玢゚ンゞンの構造、怜玢゚ンゞンの構築方法に぀いおの詳现は、次の投皿で説明したす。



All Articles