O Servidor Web Distribuído da Google Os segredos da Google revelados… César Salgado 5911093...
66
O Servidor Web Distribuído da Google Os segredos da Google revelados… César Salgado 5911093 Fernando Teles 5745977 Leandro Leite 5656630
O Servidor Web Distribuído da Google Os segredos da Google revelados… César Salgado 5911093 Fernando Teles 5745977 Leandro Leite 5656630 Tiago Camolesi
O Servidor Web Distribudo da Google Os segredos da Google
revelados Csar Salgado 5911093 Fernando Teles 5745977 Leandro Leite
5656630 Tiago Camolesi 5655201
Slide 2
Motivao Evoluo dos aplicativos web Anos 90 Pginas em sua grande
maioria estticas Pouco volume de contedo 1999 ~ 2003 Transio para
pginas dinmicas Surgimento de contedo gerado por usurios 2004 ~
2007 Redes sociais Servios mais complexos Enfoque a contedo gerado
por usurios
Slide 3
Motivao Evoluo dos aplicativos web 2007 ~ Presente Ubiqidade de
contedo gerado por usurios Altssimo volume de dados Dados pouco
estruturados Tentativa de explorar os dados Minerao de dados em
bancos de dados Web mining Anlise de opinio Marketing direcionado
Agregao
Slide 4
Motivao Evoluo dos aplicativos web Presente Boom de startups
Tentativas bem sucedidas chegam a 50 milhes de US$ nos dois
primeiros anos. Servios inteligentes Cloud computing Amazon EC2
Google AppEngine Proliferao de smartphones Altssimo volume de dados
Big Data Dados, em geral, pouco estruturados De centenas de TB a
dezenas de PB
Slide 5
Motivao Exemplos de startups: Tineye.com : Busca reversa de
imagens Usurio envia uma imagem ou pedao de imagem e o servio
encontra as pginas onde est hospedada twittersentiment.appspot.com
Minerao de opinio realizada sobre o twitter
Slide 6
Motivao Como processar tanta informao ? Clusters de centenas ~
milhares de mquinas Cloud Computing Ferramentas de alto desempenho
Para bancos relacionais: Memcached MySQL Drizzle NoSQL MongoDB
CouchDB Apache Cassandra Hadoop
Slide 7
Google - Hardware Segredo industrial Cerca de 12 datacenters de
grande porte Estimativa de 500.000+ servidores por datacenter Uso
de computadores x86 comuns Baixo custo/benefcio para utilizao de
servidores de alta confiabilidade
Slide 8
BigTable Sistema distribudo de armazenamento de dados
estruturados Objetivos: Escalabilidade: Petabytes de dados Centenas
de milhares de computadores Alto Desempenho Alta
Disponibilidade
Slide 9
BigTable Usado no back-end de: Indexao e busca Google Maps
Google Earth Google Finance Google AppEngine
Slide 10
BigTable - Estrutura NoSQL Orientado a pares (chave,valor)
Estrutura geral de uma grande tabela Linhas Chaves do tipo string
de at 64KB Ordem Lexicogrfica Permite explorar localidade dos dados
maps.google.com com.google.maps Famlias de Colunas Conjunto
ilimitado de colunas Idealmente at 100 por linha Funcionam como um
mapa chave=>valor
Big Table Exemplo // Open the table Table *T =
OpenOrDie("/bigtable/web/webtable"); // Write a new anchor and
delete an old anchor RowMutation r1(T, "com.cnn.www");
r1.Set("anchor:www.c-span.org", "CNN");
r1.Delete("anchor:www.abc.com"); Operation op; Apply(&op,
&r1); Scanner scanner(T); ScanStream *stream; stream =
scanner.FetchColumnFamily("anchor");
stream->SetReturnAllVersions(); scanner.Lookup("com.cnn.www");
for (; !stream->Done(); stream->Next()){ printf("%s %s %lld
%s\n", scanner.RowName(), stream->ColumnName(),
stream->MicroTimestamp(), stream->Value()); }
Slide 13
BigTable Funcionamento Cada coluna armazena dados com
timestamps Diversas verses das colunas so armazenadas Cliente
especifica como armazenar verses antigas ltimas N verses Verses com
at 7 dias de idade Controle de acesso realizado a nvel de famlia de
colunas
Slide 14
BigTable Implementao Construdo sobre diversos outros
aplicativos: GFS Armazenamento de logs e dados Chubby Controle de
concorrncia Alta disponibilidade: 5 cpias ativas Controle de
consistncia: Algoritmo Paxos Downtime mdio: 0.0047% SSTable Formato
de armazenamento de chave valor
Slide 15
BigTable Implementao
Slide 16
Google File System Sistema distribudo e escalvel de arquivos,
para aplicaes com consultas intensas a grandes quantidades de
dados. Os arquivos so replicados, fornecendo tolerncia a falhas e
performance para um grande nmero de usurios.
Slide 17
Google File System Um n Master e vrios Chunkservers.
Chunkservers armazenam os dados, e so replicados na rede no mnimo
trs vezes. Master armazena as localizaes dos Chunks e os arquivos
que eles contm, suas cpias, quais processos esto lendo ou gravando
em cada um. Recebe periodicamente updates (Heart Beats) de cada
Chunk.
Slide 18
Google File System Arquitetura do GFS
Slide 19
Google File System Atende s necessidades de armazenamento da
Google. Amplamente adotado como plataforma de armazenamento para a
gerao e processamento de dados de seus servios. O maior cluster
oferece centenas de TeraBytes de armazenamento atravs de milhares
de disco em mais de mil mquinas, e acessado simultaneamente por
centenas de clientes.
Slide 20
MapReduce Um modelo de programao para processar dados
distribudos
Slide 21
Por que Distribuir? Problemas na Google so muito grandes
Exemplo: 20 bilhes de pginas x 20KB = 400+ terabytes Um computador
pode ler 30-35 MB/seg do disco 4 meses para ler a web
Slide 22
Se distribuir? Em 1000 mquinas < 3 horas.
Slide 23
Exemplo de Processamento Contar a ocorrncia de palavras em um
grande conjunto de documentos.
Slide 24
Que tal uma biblioteca para facilitar? Esconder a complexidade
do programador
Slide 25
O que MapReduce? Interface ou Modelo de Programao introduzido
pela Google desenvolvida em 2003 Criado por Jeffrey Dean e Sanjay
Ghemawat
Slide 26
O que MapReduce faz? MapReduce runtime library prov:
Paralelizao automtica Balanceamento de Carga Otimizaes para rede e
para traferncias no disco Tratamento de falhas de mquinas
Slide 27
Vantagens do MapReduce Pessoas leigas conseguem fazer programas
distribudos Reduo no tempo de desenvolvimento Tolerncia a falhas
Suporte a debugao Melhorias na biblioteca beneficiam todos os
usurios
Slide 28
Como especificar um problema para o MapReduce? Usurio determina
alguns parmetros Define como a entrada ser inserida na funo map
Usurio cria duas funes map reduce MapReduce run-time library faz
praticamente todo o resto
Slide 29
MapReduce map e reduce map (in_key, in_value) -> (out_key,
intermediate_value) list reduce (out_key, intermediate_value list)
-> out_value list
Slide 30
Nmero de Ocorrncias de Palavras - Revisitado map(String
input_key, String input_value): // input_key: nome do documento //
input_value: contedo do documento for each word w in input_value:
EmitIntermediate(w, "1"); reduce(String output_key, Iterator
intermediate_values): // output_key: a word // output_values: a
list of counts int result = 0; for each v in intermediate_values:
result += ParseInt(v); Emit(AsString(result));
Slide 31
Slide 32
Resumindo 1. Leia muito dados 2. Map: Transforme esses dados
num conjunto de pares 3. Agrupe e ordene esses pares por suas
chaves 4. Reduce: agregue, resuma, filtre, ou transforme 5. Escreva
os resultados
Slide 33
Ordenar 1 terabyte 1800 mquinas 15 minutos em 2003 Matando 200
mquinas aumenta menos de um minuto Hoje Hadoop faz em 2
minutos
Slide 34
Tolerncia a Falhas no MapReduce Mestre pings todo worker
periodicamente Qualquer tarefa map completa pelo worker que falhou
se tornam elegveis para escalonamento em outros workers Qualquer
tarefa map ou reduce em progresso num worker que falhou se tornam
elegveis para escalonamento em outros workers Falha no Master?
Slide 35
Protocol Buffers Criado de novo por Jeffrey Dean e Sanjay
Ghemawat em 2000
Slide 36
O que Protocol Buffer? Formato de serializao e linguagem de
descrio de interface Sua implementao oferece um mecanismo automtico
de serializar dados
Slide 37
Vantagens do Protocol Buffer Boa alternativa ao XML. Menor Mais
rpido Menos ambguo Mais simples? Assim como XML : Independente da
linguagem Independente da plataforma
Slide 38
Como funciona Protocol Buffer? Crie arquivos.proto para
especificar a estrutura que quer serializar
Slide 39
Exemplo arquivo.proto
Slide 40
Como funciona Protocol Buffer? Compile o arquivo.proto Gera
data access classes Prov accessors e mtodos para fazer o parse e
serializar para/de bytes Nesse caso gerou classe chamada
Person
Slide 41
Como funciona Protocol Buffer? Se estiver programando em C++
Voc pode ento usar essa classe na sua aplicao para criar,
serializar e recuperar as mensagens
Slide 42
Criar, escrever e recuperar dados em com Protocol Buffer
Slide 43
Hadoop Processamento de grandes massas de dados de forma
distribuda
Slide 44
O que o Hadoop? Uma estrutura lgica de programao para o
processamento de dados distribudos. o ncleo da reduo de dados para
alguns dos maiores mecanismos de pesquisa. Abstrao que une cdigos
comuns entre vrios projetos de software provendo a funcionalidade
de processar grande quantidades de dados. Programado em Linguagem
Java.
Slide 45
Histria do Hadoop Criado por Doug Cutting. A idia surgiu
inicialmente com o Nutch, que tinha os mesmos objetivos (2002).
Divulgao do artigo que descrevia a arquitetura do sistema de
arquivos da Google: o Google FS. Criao do NDFS (Nutch Distributed
Filesystem)
Slide 46
Histria do Hadoop Google publica o artigo que descrevia o
MapReduce. Implementao open-source do MapReduce funcionando em
conjunto como NDFS (2005). Estes projetos foram fundidos em um novo
sub projeto do Lucene chamado Hadoop (2006). Doug Cutting entrou
para o Yahoo!. Hadoop se torna um sistema completo para trabalhar
na escala da web.
Slide 47
O Projeto Hadoop Projeto independente dentro da hierarquia de
projetos da fundao Apache. Os componentes mais conhecidos do Hadoop
so seu sistemas de arquivos distribudos (HDFS) e o MapReduce.
Adicionando valor a estrutura bsica muitos outros projetos
surgiram. Estes projetos facilitam a utilizao do Hadoop assim como
adicionam abstraes de alto nvel para facilitarem a criao de
sistemas mais complexos.
Slide 48
Sub-projetos Hadoop Hadoop MapReduce: um modelo de programao e
framework para criao de aplicaes que rapidamente processam vastas
quantidades de dados em paralelo atravs de grandes clusters de
computadores comuns. HDFS: Hadoop Distributed File System (HDFS) o
sistema bsico de armazenamento utilizado por aplicaes Hadoop. O
HDFS cria rplicas de blocos de dados e que so distribudos no
cluster para permitir computaes extremamente rpidas.
Slide 49
Sub-projetos Hadoop Hive: uma infraestrutura de data warehouse
construdo em cima do Hadoop que prov ferramentas que facilitam a
criao de relatrios e a anlise de quantidades gigantescas de dados
armazenados em arquivos Hadoop. Pig: uma plataforma de
processamento de dados em larga escala que possui uma linguagem de
alto nvel e um compilador que transforma scripts feitos nesta
linguagem em programas MapReduce.
Slide 50
Sub-projetos Hadoop HBase: um banco de dados NoSQL distribudo e
orientado a colunas. Usa como sistema de arquivos o HDFS e permite
tanto processamento de dados em batch utilizando MapReduce como
querys online. ZooKeeper: Um servio de coordenao distribudo. O
ZooKeeper fornece primitivas bsicas para construo de sistemas
distribudos. Chukwa: um sistema distribudo para coletar e analisar
logs dinamicamente.
Slide 51
Mais Dados X Melhores Algortmos Por muito tempo o maior enfoque
nas reas de IA era desenvolver algoritmos cada vez mais poderosos
para conseguir extrair o mximo dos dados disponveis. Em geral,
algoritmos mais poderosos so tambm mais complexos e no escalam bem
para grandes quantidades de dados. Uma propriedade interessante do
uso de datasets massivos que algoritmos mais simples com mais dados
conseguem um desempenho superior a algoritmos melhores com menos
dados.
Slide 52
Mais Dados X Melhores Algortmos Um exemplo disto o Google
Translate. Muitos pensam que o grande sucesso do Google se deve aos
seus brilhantes algoritmos... Boa parte da inovao trazida pelo
PageRank se deve ao fato de ele utilizar dados que at ento no
estavam sendo usados por outros buscadores: os hiperlinks so uma
fonte de informao importante para medir a popularidade de uma pgina
o texto ncora dos hiperlinks importante para definir o assunto da
pgina para qual o link aponta
Slide 53
Mais Dados X Melhores Algortmos A utilizao de volumes gigantes
de dados no oferece maior desempenho sempre. Existe, em muitos
casos, um limite onde o tamanho da base de dados no mais possuir
grande influncia sobre o desempenho do algoritmo.
Slide 54
Mais Dados X Melhores Algortmos Grandes oportunidades para o
processamento de grandes volumes de dados esto se abrindo graas aos
crescentes avanos da computao distribuda. O projeto Hadoop junto
com as plataformas de computao em nuvem, permitem hoje que vrias
empresas possam utilizar um volume computacional grande a custos
razoveis, algo inimaginvel a 4 anos atrs... Hoje eles so utilizados
pelas maiores empresas web do mundo e esto migrando rapidamente
para empresas de outros setores (Facebook, Last.fm, Twitter e at
mesmo IBM e Microsoft ).
Slide 55
Cassandra Sistema de gerenciamento de banco de dados de cdigo
aberto. Criado pelo Facebook, teve seu cdigo aberto em 2008. Hoje
desenvolvido pela Apache. Usado por Digg, Facebook, Twitter,
Reddit, Rackspace, Cloudkick, Cisco e mais companhias que possuem
grandes quantidades de dados. O maior cluster possui 100 TeraBytes
de dados em mais de 150 mquinas.
Slide 56
Cassandra Tolerante a falha: Dados replicados em mltiplos ns.
Descentralizado: Cada n idntico, no h gargalos ou pontos de falha.
Elstico: Leitura e escrita aumentam conforme novas mquinas so
adicionadas, sem interrupo nas aplicaes. Durvel: Indicado quando no
se pode perder dados, mesmo quando um centro de dados cai.
Slide 57
Cassandra NoSQL Famlias de colunas so fixadas quando o banco de
dados criado. O sistema gerencia essas famlias e colunas podem ser
adicionadas elas a qualquer momento. Caso do site Digg.
Slide 58
Perspectivas de mercado Busca por profissionais com
conhecimento de Hadoop e Cloud Computing em crescimento acentuado
Poucos desenvolvedores qualificados Incio do boom h cerca de 2 anos
Altos salrios