Buscar

tecnologias para sistemas distribuidos escalaveis MongoDB,Hadoop

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 32 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 32 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 32 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Tecnologias para sistemas
distribuídos escaláveis
MongoDB, Redis, Hadoop, Storm
Cesar Schneider
Eworks Tecnologia
@cesschneider
cesar@eworks.com.br
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
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.
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.
Computação Distribuída
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
Arquitetura Escalável
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”
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.
• 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
{
name: “Cesar Schneider”,
email: “cesar@eworks.com.br”,
age: 34,
skills: *“C”, “PHP”, “Java”+,
availableForConsulting: true
}
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
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.
• Twitter
• Instagram
• Digg
• Stack Overflow
• Flickr
• Mercado Livre
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)
$ redis-cli set mykey "my binary safe value"
OK
$ redis-cli get mykey
my binary safe value
$ redis-cli set counter 100
OK
$ redis-cli incr counter
(integer) 101
$ redis-cli incr counter
(integer) 102
Use cases
• Auto complete
• Message queue
• Publish/subscribe
• Notification center
• Sorting/Ranking
• Timeline
É 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.
• 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)
• 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)
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.
Storm Use Cases
• Twitter
• Groupon
• Rubicon Project
• Full Contact
• Alibaba
• Mercado Livre
Storm Architecture
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)
Storm Topology
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"));
That’s all, folks!

Continue navegando

Outros materiais