O documento apresenta diversas tecnologias para sistemas distribuídos escaláveis, incluindo MongoDB, Redis, Hadoop e Storm. Descreve brevemente cada uma delas, destacando suas principais características e aplicações.
3. O quejáaprendievivi
• C/C++, PHP, Java, Ruby, JavaScript, HTML, CSS, Action Script, Bash,
Linux.
• Trabalheiemdiferentesprojetos no Brasil, EmiradosÁrabes, Chile e
USA.
• Experiência com osmercados de gerenciamento de risco,
rastreamento de veículos, geolocalização, GIS, e-commerce,
aplicaçõesmóveis, integração de sistemas, Web Services
eadministração de servidores Linux.
• Apaixonadoporesportesradicais, músicaeletrônicaeautomobilismo.
6. SistemasEscaláveis
• Um sistemaédescritocomoescalável se
permaneceeficientequandohá um
aumentosignificativo no número de recursos
(dados) e no número de usuários
• São construídos com base
numaarquiteturadistribuídaequepermiteadiçã
o de novosnóssemque a aplicaçãonecessite
ser modificada
8. Tecnologiasescaláveis
• MongoDB: banco de dados
orientadoàdocumentosou“NoSQL”
• Redis: armazenamento de dados emmemória
RAM com replicaçãoem disco
• Hadoop: processamento de grandes volumes
de dados usando Map/Reduce
eoutrosalgoritmos
• Storm: processamento de dados em tempo
real através de topologiasbaseadasemgrafos
9. Banco de dados orientado a
documentoquepermitearmazenarestruturas de
dados com alta performance,
disponibilidade,escalabilidadeeesquemasflexívei
s.
Um banco de dados possuiváriascoleções
(tabelas). Umacoleçãopossuiváriosdocumentos
(registro). Um documentopossuivários pares
chave/valor.
10. • Flexibilidade: dados armazenados no formato
JSON
• Velocidade:
consultassãomaisrápidasporquenãoexistem
“joins”
• Escalabilidade: capacidade de cargapode ser
aumentadafacilmenteusando“shards”
• Recursos: indices geoespaciais, queries
dinâmicas, ordenação, agregação, replicação
14. Servidor de estruturasda dados complexas,
armazenadasemmemória RAM, quepermitem a
execução de operaçõescomplexasemanipulação
de dados com baixalatência.
Possibilita a execução de
operaçõesatômicascomoconcatenar strings,
incrementarcontadores, ordenarlistas,
computarinterseções, uniõesediferenças.
17. $ redis-cli set mykey "my binary safe value"
OK
$ redis-cli get mykey
my binary safe value
$ redis-cli set counter 100
OK
$ redis-cliincr counter
(integer) 101
$ redis-cliincr counter
(integer) 102
20. É framework mantidopela Apache Foundation
quepermiteprocessamentode grandes volumes de
dados distribuídosem um cluster
quepodeconteralgumasdezenasoumilhares de nós,
ondecadanósexecutaearmazena dados de localmente.
Aoinvés de utilizarhardwarescarose com
altadisponibilidade, épossívelmontar um cluster
Hadoop com qualquertipo de
máquinaporquefoidesenhado com estafinalidade.
21. •
•
•
•
Hadoop Common
Hadoop Distributed File System (HDFS)
Hadoop YARN (job scheduling and cluster resource management)
HadoopMapReduce (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çãoparaaplicaçõesdistribuídas)
22. •
•
•
•
Indexação de busca de produtos (Amazon)
Sistema de recomendação (Netflix)
Analise de logs erelatóriosanalíticos (Facebook)
Analise de metadados de arquivos de audio
(last.fm)
• Pessoasquetalvezvocêconheça (LinkedIn)
• Previsão de resultados (Obama)
26. Storm
Sistemadistribuído de processamento de dados
em tempo real a partir de “streams” de dados.
Umatopologia Storm consume “streams” de
dados
realizandoprocessamentoscomplexosdestasinfor
mações, reparticionandoestes dados
emdiversarfases de processamento de acordo
com a necessidade do resultado final.
29. Storm Concepts
• Topologies (grafos de transformações de
dados compostopornósquepodem ser
“spouts” ou “bolts”)
• Streams (compostosporfontes de dados
eprocessadores de dados)
• Data Models (definição dos camposetipos de
dados do resultado final)
31. 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"));