tecnologias para sistemas distribuidos escalaveis

32
Tecnologias para sistemas distribuídos escaláveis MongoDB, Redis, Hadoop, Storm Cesar Schneider Eworks Tecnologia @cesschneider [email protected]

Upload: luiz-bettega

Post on 25-May-2015

732 views

Category:

Education


1 download

TRANSCRIPT

Page 1: Tecnologias para sistemas distribuidos escalaveis

Tecnologias para sistemas distribuídos escaláveis

MongoDB, Redis, Hadoop, Storm

Cesar SchneiderEworks Tecnologia

@[email protected]

Page 2: Tecnologias para sistemas distribuidos escalaveis

Quem sou eu

• Inventor desde 1988• Programador desde 1998• Analista desde 2003• Gerente/Consultor desde 2008• “Canivete suiço” desde 2010• “Hacker” desde 2012• Arquiteto/Designer desde 2013

Page 3: Tecnologias para sistemas distribuidos escalaveis

O que já aprendi e vivi• C/C++, PHP, Java, Ruby, JavaScript, HTML, CSS, Action Script, Bash,

Linux.

• Trabalhei em diferentes projetos no Brasil, Emirados Árabes, Chile e USA.

• Experiência com os mercados de gerenciamento de risco, rastreamento de veículos, geolocalização, GIS, e-commerce, aplicações móveis, integração de sistemas, Web Services e administração de servidores Linux.

• Apaixonado por esportes radicais, música eletrônica e automobilismo.

Page 4: Tecnologias para sistemas distribuidos escalaveis

Computação Distribuída

• É uma referência à computação paralela e descentralizada, realizada por dois ou mais computadores conectados através de uma rede, cujo objetivo é concluir uma tarefa em comum.

• Uma coleção de computadores independentes que aparecem para o usuário como um único sistema.

Page 5: Tecnologias para sistemas distribuidos escalaveis

Computação Distribuída

Page 6: Tecnologias para sistemas distribuidos escalaveis

Sistemas Escaláveis

• Um sistema é descrito como escalável se permanece eficiente quando há um aumento significativo no número de recursos (dados) e no número de usuários

• São construídos com base numa arquitetura distribuída e que permite adição de novos nós sem que a aplicação necessite ser modificada

Page 7: Tecnologias para sistemas distribuidos escalaveis

Arquitetura Escalável

Page 8: Tecnologias para sistemas distribuidos escalaveis

Tecnologias escaláveis

• MongoDB: base de dados orientado à documentos ou “NoSQL”

• Redis: armazenamento de objetos em memória RAM

• Hadoop: processamento de grandes volumes de dados usando Map/Reduce

• Storm: processamento de dados em tempo real através de “workflows”

Page 9: Tecnologias para sistemas distribuidos escalaveis

Banco de dados orientado a documento que permite armazenar estruturas de dados com alta

performance, disponibilidade, escalabilidade e esquemas flexíveis.

Um banco de dados possui várias coleções (tabelas). Uma coleção possui vários

documentos (registro). Um documento possui vários pares chave/valor.

Page 10: Tecnologias para sistemas distribuidos escalaveis

• Flexibilidade: dados armazenados no formato JSON

• Velocidade: consultas são mais rápidas porque não existem “joins”

• Escalabilidade: capacidade de carga pode ser aumentada facilmente usando “shards”

• Recursos: indices geoespaciais, queries dinâmicas, ordenação, agregação, replicação

Page 11: Tecnologias para sistemas distribuidos escalaveis

{name: “Cesar Schneider”,email: “[email protected]”,age: 34,skills: [“C”, “PHP”, “Java”],availableForConsulting: true

}

Page 12: Tecnologias para sistemas distribuidos escalaveis

Relacional Documento

Escalonamento Possível porém complexo devido a arquitetura

Principal vantagem por ter um arquitetura flexível e sem esquema definido

Consistência Ponto forte. Estrutura rígida garante a consistência dos dados

Eventual, mas garante acesso ao último valor atualizado

Disponibilidade Pode não suportar uma grande demanda de dados

Fator fundamental. Algo grau de distribuição permite maior número de consultas

Page 13: Tecnologias para sistemas distribuidos escalaveis
Page 14: Tecnologias para sistemas distribuidos escalaveis

Servidor de estruturas da dados complexas, armazenadas em memória RAM, que permitem

a execução de operações complexas e manipulação de dados com baixa latência.

Possibilita a execução de operações atômicas como concatenar strings, incrementar contadores, ordenar listas, computar

interseções, uniões e diferenças.

Page 15: Tecnologias para sistemas distribuidos escalaveis

• Twitter• Instagram• Digg• Stack Overflow• Flickr• Mercado Livre

Page 16: Tecnologias para sistemas distribuidos escalaveis

Data types

• Strings (“string”)• Lists (“a”, “a”, “b”, “b”, ”c”, ”c”)• Sets (“a”, ”b”, “c”)• Hashes (“username cesar password 12345”)• Sorted sets (cada elemento possui um score)

Page 17: Tecnologias para sistemas distribuidos escalaveis

$ redis-cli set mykey "my binary safe value"OK$ redis-cli get mykeymy binary safe value

$ redis-cli set counter 100OK$ redis-cli incr counter(integer) 101$ redis-cli incr counter(integer) 102

Page 18: Tecnologias para sistemas distribuidos escalaveis

Use cases

• Auto complete• Message queue• Publish/subscribe• Notification center• Sorting/Ranking• Timeline

Page 19: Tecnologias para sistemas distribuidos escalaveis
Page 20: Tecnologias para sistemas distribuidos escalaveis

É framework mantido pela Apache Foundation que permite processamento de grandes volumes de dados distribuídos em um cluster que pode conter algumas dezenas ou milhares de nós, onde cada nós executa e armazena dados de localmente.

Ao invés de utilizar hardwares caros e com alta disponibilidade, é possível montar um cluster Hadoop com qualquer tipo de máquina porque foi desenhado com esta finalidade.

Page 21: Tecnologias para sistemas distribuidos escalaveis

• Hadoop Common• Hadoop Distributed File System (HDFS)• Hadoop YARN (job scheduling and cluster resource management)• Hadoop MapReduce (YARN based parallel data processing)

• Ambari (web-based monitoring, management and provisioning)• AVRO (data serialization system)• Cassandra (multi-master database sem SPF)• Hbase (distributed database for structured data and big tables)• Hive (datawarehouse infrastructure for data summarization)• Pig (data-flow language and execution framework)• Mahout (machine learning e data mining)• Zookeeper (serviço de coordenação para aplicações distribuídas)

Page 22: Tecnologias para sistemas distribuidos escalaveis

• Indexação de busca de produtos (Amazon)• Sistema de recomendação (Netflix)• Analise de logs e relatórios analíticos (Facebook)• Analise de metadados de arquivos de audio

(last.fm)• Pessoas que talvez você conheça (LinkedIn)• Previsão de resultados (Obama)

Page 23: Tecnologias para sistemas distribuidos escalaveis
Page 24: Tecnologias para sistemas distribuidos escalaveis
Page 25: Tecnologias para sistemas distribuidos escalaveis
Page 26: Tecnologias para sistemas distribuidos escalaveis

Storm

Sistema distribuído de processamento de dados em tempo real a partir de “streams” de dados.

Uma topologia Storm consume “streams” de dados realizando processamentos complexos

destas informações, reparticionando estes dados em diversar fases de processamento de acordo com a necessidade do resultado final.

Page 27: Tecnologias para sistemas distribuidos escalaveis

Storm Use Cases

• Twitter• Groupon• Rubicon Project• Full Contact• Alibaba• Mercado Livre

Page 28: Tecnologias para sistemas distribuidos escalaveis

Storm Architecture

Page 29: Tecnologias para sistemas distribuidos escalaveis

Storm Concepts

• Topologies (grafos de transformações de dados composto por nós que podem ser “spouts” ou “bolts”)

• Streams (compostos por fontes de dados e processadores de dados)

• Data Models (definição dos campos e tipos de dados do resultado final)

Page 30: Tecnologias para sistemas distribuidos escalaveis

Storm Topology

Page 31: Tecnologias para sistemas distribuidos escalaveis

Storm Topology

TopologyBuilder builder = new TopologyBuilder(); builder.setSpout("sentences", new RandomSentenceSpout(), 5);

builder.setBolt("split", new SplitSentence(), 8) .shuffleGrouping("sentences");

builder.setBolt("count", new WordCount(), 12) .fieldsGrouping("split", new Fields("word"));

Page 32: Tecnologias para sistemas distribuidos escalaveis

That’s all, folks!