Arquitectura de um motor de busca: exemplo do Google

Transcrição

Arquitectura de um motor de busca: exemplo do Google
Mestrado em Informática e Sistemas
SEMINÁRIO 1
ARQUITECTURA DE UM MOTOR DE
BUSCA:
EXEMPLO DO GOOGLE
por Vasco Nuno Sousa Simões Pereira
[email protected]
Sumário. Este artigo explica em modos gerais a arquitectura de um dos motores de busca mais populares
actualmente, o Google. Pretende-se mostrar como uma aplicação que lida com um volume de dados gigantesco pode
beneficiar de uma abordagem que envolve computação paralela e de bases de dados distribuídas. No fim são feitas
algumas considerações sobre aplicações desta arquitectura a outros cenários.
Palavras chave. Internet, bases de dados distribuídas, computação paralela, motores de busca
1. Introdução
No início a Internet era um meio de comunicação
acedido por apenas uma comunidade restrita. Com o
aparecimento da WWW (World Wide Web) com base
no protocolo HTTP (Hyper Text Transfer Protocol),
essa comunidade teve um crescimento exponencial,
permitindo o acesso generalizado de uma vasta faixa
de população. Os novos utilizadores não só passaram
a poder aceder a um conjunto de informação de uma
maneira rápida como puderam também participar no
aumento dessa mesma informação criando sites
acerca dos mais variados temas e conteúdos. Isto
gerou uma dinâmica nunca antes vista com milhares
de novos sites a aparecerem num curto espaço de
tempo. Começou então a surgir a questão de como
catalogar esses sites, como fazer para que fossem do
conhecimento do resto da comunidade. As
abordagens tradicionais, como a lista telefónica,
tiveram um êxito limitado pois a dinâmica da Internet
não se compadecia com um meio de divulgação tão
estático. Na data de saída de cada lista já esta estava
completamente desactualizada, com uma grande parte
dos sites a ficar irremediavelmente de fora. Era então
necessária outra forma de catalogar a Internet. Essa
solução foi encontrada com motores de busca,
aplicações que permitiam pesquisas pela Internet com
base em uma ou mais palavras-chave. Neste pequeno
artigo vai-se apresentar a arquitectura de um dos mais
populares motores de busca do momento, o Google.
O artigo não pretende ser exaustivo nem demasiado
profundo, apenas dar a conhecer uma aplicação
prática, de grande relevância, do uso massivo de
computação paralela e de bases de dados distribuídas.
Este trabalho insere-se no mestrado em Informática e
Sistemas do Departamento de Engenharia Informática
da Universidade de Coimbra, e foca dois dos temas
abordados na disciplina de Seminário 1, computação
paralela e bases de dados distribuídas.
2. Solução Google
Criado por dois investigadores da Universidade de
Stanford em 1998, o Google é um dos mais populares
motores de busca da Internet, existindo em várias
línguas e distribuído por vários continentes. Nas suas
bases de dados constam cerca de 6 biliões de itens,
maioritariamente páginas web [1], os quais têm
actualmente cerca de 200 milhões de acessos por dia.
De modo a suportar esta performance foi criado um
cluster de cerca de 15000 servidores Linux de baixo
custo que, num tempo médio próximo do meio
segundo, devolve os resultados pretendidos pelo
utilizador. Na génese da arquitectura do Google um
factor foi essencial: a relação preço/performance [2].
2.1 Enquadramento do problema
Os motores de busca para a Internet são programas
que, dadas determinadas palavras-chave ou
expressões, por um qualquer utilizador, devolvem
uma lista de hiper-ligações para documentos onde
essas palavras existem. De modo a poderem realizar
essa tarefa os motores de busca têm armazenadas na
sua base de dados um vasto conjunto de informação
extraída da Internet, que previamente indexaram e
catalogaram. Para criar essas bases de dados existem
programas auxiliares (webcrawlers ou spiders) que
percorrem constantemente a Internet à procura de
sites novos, os quais são posteriormente tratados e
adicionados às bases de dados. Cada motor de busca
usa um algoritmo específico de indexação das
palavras existentes nos documentos encontrados, de
modo a poder depois devolver resultados por ordem
de relevância.
Cada pedido a um motor de busca gera uma sequência
de operações que necessita de uma grande capacidade
de computação, bem como de um grande número de
acessos a disco. É necessário pesquisar Terabytes de
informação constantes das bases de dados, agregar e
ordenar resultados e, por fim, devolver os dados
Departamento de Engenharia Informática, Universidade de Coimbra
2003/2004
Mestrado em Informática e Sistemas
obtidos ao utilizador. Além disso, tem de se ter em
conta que o número de pedidos de pesquisas, por
segundo, está na ordem dos milhares. Para que o
sistema tenha um tempo de resposta aceitável é então
necessário uma grande velocidade de processamento
e de acesso a disco. Uma das formas de tornar real
este cenário era recorrer a alguns dos mais rápidos
super-computadores do mundo. O uso de supercomputadores tem no entanto vários problemas. O
primeiro é o custo. Além de um elevado custo inicial
há ainda o custo de se usar um sistema proprietário,
onde qualquer alteração ou operação de manutenção
implica ainda mais elevados custos. Outro factor
importante é a escalabilidade. Com o aumento
previsível do número de páginas nos próximos anos,
bem como a indexação de outro tipo de conteúdos
(ex. imagens), existirá uma inevitável diminuição da
performance do sistema, requerendo alterações que se
traduzirão num novo aumento exponencial de custos.
Outro problema ainda é a fiabilidade desse sistema
quando o que se pretende é um serviço contínuo sem
falhas nem períodos de manutenção perceptíveis.
SEMINÁRIO 1
que distribui equitativamente os pedidos pelos vários
servidores. Estes GWS vão ser responsáveis por gerir
a execução da pesquisa do utilizador e por formatar
no fim os resultados em HTML (Hyper Text Markup
Language).
Pesquisa do
utilizador
Escolha do
cluster no DNS
Cluster A
...
GWS 2
Verificador de
sintaxe
O que a Google descobriu foi que as operações
realizadas por um motor de busca eram altamente
paralelizáveis, i.e., várias operações poderiam ser
realizadas em paralelo devido ao facto de não
dependerem umas das outras [2]. Esse foi o factor
chave para a solução que viriam a adoptar. Essa
solução passou pela criação de um cluster (conjunto
de máquinas que trabalham com um mesmo
objectivo, portando-se como uma única) de máquinas
vulgares que, aproveitando a possibilidade de
processamento paralelo, tinham a performance de um
super-computador por uma fracção do custo. Esta
arquitectura trazia ainda mais uma vantagem
essencial, tornava o processo escalável. Em seguida
será apresentada a arquitectura geral e alguns
componentes de um cluster Google.
O inicio de qualquer pesquisa no Google começa pela
introdução de palavras-chave, ou expressões, por um
utilizador, usando um vulgar browser. Após o
utilizador introduzir os termos a pesquisar, o primeiro
passo é saber a qual dos clusters distribuídos por
vários locais do mundo é que o utilizador se vai ligar.
Essa selecção é feita por um balanceador de carga a
nível do DNS (Domain Name Server), o qual devolve
o endereço do cluster mais próximo do utilizador.
Deste modo, é proporcionado um menor trajecto dos
dados entre o utilizador e os servidores Google, ao
mesmo tempo que se distribui a carga por vários
locais do mundo. Em seguida, depois de escolhido o
cluster, o pedido é redireccionado para um servidor
web da Google (Google Web Server - GWS). Esta
operação também é feita por um balanceador de carga
...
GWS 1
2.2. Arquitectura do Google
Pesquisa. O objectivo do Google é responder às
pesquisas dos vários utilizadores. Um esquema
simplificado de todo o processo de pesquisa e
devolução de resultados é apresentado na Figura 1.
Cluster B
Servidor de
publicidade
Servidor de Indíces 1
Servidor de docs 1
Servidor de Indíces 2
Servidor de docs 2
...
...
Servidor de Índices 1
Sub-Índice 1
PC 1
PC 2
Sub-Índice 2
...
PC 1
...
...
Agregar resultados e calcular
relevância dos documentos
Lista de Documentos por ordem
Figura 1 – Esquema simplificado da arquitectura
do Google
Quando a expressão de pesquisa chega ao GWS, e
depois de verificada a sua sintaxe, vai começar a
pesquisa às bases de dados. O primeiro acesso é feito
pelos servidores de índices. Estes servidores acedem
aos índices com base nas palavras-chave pedidas e
retornam identificadores das páginas onde os termos
foram encontrados. Devido ao seu grande tamanho, o
índice é subdividido em várias partes, cada uma tendo
um conjunto específico de máquinas associadas. Cada
máquina destas replica as outras permitindo assim
várias pesquisas simultâneas a essa parte do índice
geral. Para que o trabalho
seja dividido
equitativamente, também aqui é usado um
balanceador de carga. Os resultados finais da pesquisa
Departamento de Engenharia Informática, Universidade de Coimbra
2003/2004
Mestrado em Informática e Sistemas
são então agregados e intersectados de modo a obter
uma lista ordenada por relevância. O critério usado
para calcular a relevância de uma página é
proprietário da Google e é designado por PageRank
[3]. Após saber quais os identificadores dos
documentos, um processo análogo à pesquisa nos
índices é realizado sobre os servidores de
documentos. Pretende-se agora obter o título dos
documentos, o seu URL e a parte do texto onde a
palavra-chave é referida. Para que isto seja possível
os servidores de documentos armazenam várias
cópias da web! Em paralelo, é também feita uma
pesquisa a um servidor de publicidade que determina
se existe algum anúncio relevante tendo como base as
palavras-chave inseridas pelo utilizador. Por fim a
página é devolvida ao utilizador, depois de formatada
em HTML.
População das bases de dados. Devido à grande
dinâmica da Internet as bases de dados têm de ser
actualizadas com bastante regularidade, o que implica
uma constante pesquisa de páginas na Internet. Isso é
feito por vários spiders que, a partir de um URL
(Uniform Resource Locator) inicial percorrem as
várias páginas disponíveis. Essas páginas são depois
indexadas por um programa indexador que faz o
parsing do documento convertendo-o numa lista de
palavras. De tempos a tempos as bases de dados de
índices presentes nos vários milhares de máquinas,
são actualizadas [4].
Paralelismo. Devido ao facto da maioria das
operações poder ser realizada em paralelo, é possível
ter pesquisas diferentes a usar diferentes
processadores e ter uma mesma pesquisa dividida por
vários processadores. Pode-se por exemplo dividir
uma pesquisa nos seu vários termos (palavras-chave)
e usar máquinas diferentes para pesquisar resultados.
No final, após encontrados os resultados parcelares, é
apenas necessária uma operação de agregação dos
resultados que, comparativamente, é bastante mais
rápida. Ao mesmo tempo, não há problemas
relevantes de coerência de dados visto que a grande
maioria de operações são apenas de leitura.
Escalabilidade. A solução apresentada pela Google
apresenta-se bastante escalável. Conforme os índices
e o número de documentos vão crescendo apenas é
necessário juntar à estrutura mais um conjunto de PCs
que pesquisem o novo pedaço do índice ou o novo
conjunto de documentos. Ao mesmo tempo, se o
problema for o tempo médio de resposta, basta
acrescentar máquinas a cada grupo para que cada uma
trate de menos pedidos de cada vez.
Fiabilidade. Uma das grandes vantagens desta
arquitectura é a sua inerente tolerância a falhas, que é
assegurada por software. Não são feitos investimentos
em hardware redundante como várias fontes de
alimentação ou soluções RAID (Redundant Array of
Inexpensive Disks), mas assegura-se por software que
caso uma das máquinas tenha algum problema, outra
tome o seu lugar. Embora esta solução possa implicar
SEMINÁRIO 1
uma perda de performance temporária, manterá
sempre o sistema completamente funcional. Deste
modo, aproveita-se a replicação natural inerente à
arquitectura usada, diminuindo ao mesmo tempo os
custos. Como resultado final, consegue-se obter uma
estrutura fiável a partir de máquinas individualmente
não fiáveis.
Hardware. Na Google grande parte dos
computadores usados são vulgares PCs, correndo
Linux, apenas se distinguindo por terem bastante
capacidade de disco. As máquinas usadas não são
escolhidas em termos de performance máxima mas
sim pela relação performance/custo. A arquitectura é
orientada para uma lógica de alto débito de respostas
do cluster, em detrimento de uma lógica de
performance pura de uma máquina. Todas as
máquinas estão ligadas por uma rede Ethernet a 100
Mbps com as ligações principais entre grupos de
máquinas a chegarem aos 2Gbps. Não são usados
esquemas complexos para redundância visto que esta
é assegurada pela replicação intrínseca à própria
arquitectura.
PageRank. O PageRank é usado pelo Google para
permitir ordenar por relevância os resultados de uma
pesquisa. O algoritmo usado algoritmo interpreta “um
link de uma Página A para a Página B como um voto
da Página A para a Página B”[5], avaliando a
importância de uma página pelos votos que ela
recebe.[3][6]
3. Conclusões
A solução apresentada pela Google, idealizada para o
universo específico dos motores de busca, permite
obter escalabilidade, fiabilidade e um elevado
desempenho, tendo como base um cluster de
máquinas comuns. No entanto, esta solução só é
possível devido ao facto do problema dos motores de
busca ter algumas propriedades especiais. Entre estas
propriedades podemos destacar o facto de a maior
parte das operações serem de leitura e de poderem
ocorrer em paralelo. Em cenários que impliquem uma
constante actualização ou inserção de dados, o
software de controle e os processos de replicação dos
dados pelas várias máquinas, teriam de ser bastante
mais complexos. Apesar disso, há uma série de
aplicações que podem beneficiar desta abordagem,
como é o caso de servidores web que guardem
grandes quantidades de informação e em que as
escritas não sejam frequentes. Também repositórios
de informação como bases de dados de artigos
científicos, catálogos on-line de equipamentos,
bibliotecas digitais on-line, podem beneficiar desta
abordagem. Outras aplicações que não partilhem das
características enunciadas podem beneficiar de
soluções mistas. Para isso será necessário criar uma
nova arquitectura, complementada com um software
de gestão que permita a manutenção da coerência dos
dados
dentro
do
cluster,
sem
diminuir
significativamente a performance.
Departamento de Engenharia Informática, Universidade de Coimbra
2003/2004
Mestrado em Informática e Sistemas
SEMINÁRIO 1
Referências
1.
Google Press Release (2004), Google Achieves
Search Milestone With Immediate Access To
More Than 6 Billion Items,
http://www.google.com/intl/pt/press/pressrel/6bil
lion.html
2.
Barroso, L., Dean, J., Hölzle, U. (2003) Web
Search For a Planet: The Google Cluster
Architecture, IEEE Micro, March-April 2003, pp.
22-28
http://www.computer.org/micro/mi2003/m2022.p
df
3.
Brin, S., Page L. (1998) The Anatomy of a LargeScale Hypertextual Web Search Engine, Proc.
Seventh World Wide Web Conference
http://wwwdb.stanford.edu/pub/papers/google.pdf
4.
Sobek, M. Google Dance - The Index Update of
the Google Search Engine
http://dance.efactory.de/
5.
Google Inc. Technology Overview
http://www.google.com/press/overview_tech.htm
l
6.
Rogers, I. (2002) The Google Pagerank
Algorithm and How it Works,
http://www.iprcom.com/papers/pagerank/Pageran
k Explained Correctly with Examples.htm
Departamento de Engenharia Informática, Universidade de Coimbra
2003/2004
Mestrado em Informática e Sistemas
SEMINÁRIO 1
Ficha de Caracterização de Trabalho
Título: Arquitectura de um motor de busca: exemplo do Google
Resumo: Este artigo explica em modos gerais a arquitectura de um dos motores de busca mais
populares actualmente, o Google. Pretende-se mostrar como uma aplicação que lida com um
volume de dados gigantesco pode beneficiar de uma abordagem que envolve computação
paralela e de bases de dados distribuídas. No fim são feitas algumas considerações sobre
aplicações desta arquitectura a outros cenários.
URL: www.dei.uc.pt/~vasco/portfolio/Google_v1.pdf
Data: 19-Fev-2004
Esforço:
Motivação: Conhecer o funcionamento de uma aplicação que trabalha com um volume de
dados gigantesco e que, através de um cluster constituído por PCs normais consegue alcançar
performances muito elevadas.
Aprendizagem: Clusters, computação paralela, bases de dados distribuídas
Conteúdos:
Processos: (que procedimentos e comportamentos aprendeu)
Futuro:
Departamento de Engenharia Informática, Universidade de Coimbra
2003/2004

Documentos relacionados