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

Embed Size (px)

Citation preview

  • Slide 1
  • 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
  • Slide 11
  • BigTable - Estrutura Exemplo:
  • Slide 12 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()); }">
  • 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
  • Slide 59
  • Perspectivas de mercado
  • Slide 60
  • Concluses
  • Slide 61
  • Referncias BigTable labs.google.com/papers/bigtable- osdi06.pdf
  • Slide 62
  • Referncias GFS http://labs.google.com/papers/gfs.html
  • Slide 63
  • Referncias MapReduce http://www.cloudera.com/videos/mapredu ce_and_hdfs http://www.cloudera.com/wpcontent/uplo ads/2010/01/2-MapReduceAndHDFS.pdf http://labs.google.com/papers/mapreduce- osdi04.pdf http://code.google.com/edu/submissions/ mapreduce-minilecture/listing.html
  • Slide 64
  • Referncias ProtocolBuffer http://code.google.com/apis/protocolbuffe rs/docs/overview.html
  • Slide 65
  • Referncias Hadoop http://hadoop.apache.org/ http://developer.yahoo.com/hadoop/ http://escalabilidade.com/category/hadoop
  • Slide 66
  • Referncias Cassandra http://cassandra.apache.org/ http://about.digg.com/node/564