Mercator: A Scalable, Extensible Web Crawler or High Performance Web Crawling Allan Heydon and Marc Najork september 26, 2001
Vue d ensemble Comment Mercator est-il conçu? Architecture de Mercator. Est-ce si facile que ça? Quelques détails. Conclusion
Comment Mercator est-il conçu? Scalabilité : La taille des structures gardées en mémoire est bornée. Flexibilité : Composé de modules faciles à réécrire pour des tâches différentes. Possible rajout de fonctionnalités. Haute performance : 4Compaq DS20E 666 Mhz Alpha servers, connexion au Net 160 Mbit/sec => ~50 milions documents processés par jour, durant 17 jours. autres : Politesse : Ne surcharge pas les serveurs. Configurable pour de divers niveaux de politesse envers ceux-ci. Continuité : Conçu pour faire du crawling continu. Planifie en fonction d une priorité tenue à jour quelles URL sont à rafraîchir.
Comment? (suite) Multi-threadé : (Java) entre 100 et 500 worker threads pour un grand crawl. Multi-protocole : Http, Ftp, Gopher. Multi-document-type : text/html, gif, etc. (au début) Pas distribué : initialement conçu à être exécuté sur une seule machine. mais actuellement il a été adapté. La version actuelle est distribuée. C : ceci confirme sa flexibilité!
Architecture de Mercator URL Frontier : La file d attente des URL - synchronisé. Protocol module : Fait appel au DNS resolver (synchronisé) et verifie le fichier robots.txt. Basé sur le protocole approprié download le document dans un... RIS (RewindInputStream): abstraction similaire à un InputStream habituel, mais qui introduit des fonctionnalités supplémentaires : rewind( ) method. Content seen : teste si une page identique a été vue. Processer : process( ) method pour tout processer. Link extractor Tag counter, Gif statistics autre. URL Filter : élimine des URL selon des critères spécifiés DUE : liste des URL déjà visitées - synchronisé.
Architecture de Mercator (suite) " Worker threads VS Background thread (BT) BT fait : logs statistiques, stop?, checkpoint!
Est-ce si facile que ça? Quelques details. Fingerprint - l algorithme. URL Frontier - technique et algorithmique. DNS Resolver - technique.
Est-ce si facile que ça? Quelques détails. Fingerprint (fp) Idée : des étiquettes courtes pour des objets grands. Comment les choisir : i) fp1!= fp2 => obj1!= obj2 ii) fp1 = fp2 => prob(obj1!= obj2 ) très petite. Collision si ii) est fausse. Théorie ( un tout petit peu :-)). On cherche : fp : EnsembleObjets --> {0,1} k telle que i) et ii) vraies. Rabins s fingerprinting method pour chaînes Soit A = (a 1, a 2,, a m ) une chaîne binaire, a 1 =1. On lui associe A(t) = a 1 t m-1 + a 2 t m-2 + +a m. Soit P(t) un polynôme irreductible de degré k, sur Z 2. On définit fp(a) = A(t) mod P(t). C i) et ii) sont vérifiées.
Est-ce si facile que ça? Quelques détails. URL Frontier URL = URL + download history Calcule priorité p {1,, k} et pour une URL u et l insère dans la file p. Quand une end-queue q est vidée, choisit une front-queue et enfile sa tête en queue (!). Table host - end-queue File de priorité host - timestamp Contient les adresses d une seule host. Note : #end-queues ~ time-policy
Est-ce si facile que ça? Quelques détails. DNS Resolver Versions existantes : synchronisées, une seule requête est possible à la fois. Conséquence : 70% du temps de travail d un thread est passé à attendre le résultat de la requête DNS. Solution : Programmé un propre multi-threaded DNS Resolver.
Conclusion Il y a une forte tension entre les requis de la haute performance d une part et ceux de la scalabilité, la politesse, la flexibilité d autre part. Avoir toutes ces fonctionnalités simultanément représente des défis techniques et algorithmiques importants. Bibliographie : 1. A. Heydon, M. Najork Mercator : A Scalable, Extensible Web Crawler. 2. M. Najork, A. Heydon High-Performance Web Crawling. 3. A. Broder Some applications of Rabin s fingerprinting method.