TDC Conn 2022_ O Esqueleto de um Projeto de Dados (2).pdf
Arquiteturas, Tecnologias e Desafios para Análise de BigData
1. Arquiteturas, Tecnologias e Desafios
para Análise de BigData
Sandro S. Andrade
Instituto Federal de Educação, Ciência e Tecnologia (IFBa)
Grupo de Pesquisa em Sistemas Distribuídos, Otimização,
Redes e Tempo-Real (GSORT)
sandroandrade@ifba.edu.br
@andradesandro
Arquiteturas, Tecnologias e Desafios para Análise de BigData – Sandro S. Andrade
2. Arquiteturas, Tecnologias e Desafios para Análise de BigData – Sandro S. Andrade
Agenda
● Motivação
● O MapReduce
● O Hadoop
● Design Patterns para MapReduce
● Hadoop – Projetos Relacionados
● Desafios Atuais
● Conclusão
7. Motivação
Arquiteturas, Tecnologias e Desafios para Análise de BigData – Sandro S. Andrade
● BigData:
– Termo utilizado para descrever qualquer conjunto de
dados grande e complexo o suficiente para inviabilizar
o uso das tecnologias tradicionais de armazenamento
e processamento
● Características:
– Volume
– Variedade
– Velocidade
– Variabilidade
– Complexidade
8. Motivação
● BigData hoje:
– eBay.com: cluster Hadoop de 40PB para busca,
recomendações e propaganda
– Amazon.com: armazenamentos de 7.8, 18.5 e 24.7TB
– Wallmart: 1 milhão de transações de clientes por hora,
armazenadas em uma base de 2.5PB
– Facebook: 50 bilhões de fotos, 600TB de novos dados
por dia, 684.478 postagens por minuto
– Youtube: 48h de novos vídeos por minuto
– Instagram: 3600 novas fotos por minuto
Arquiteturas, Tecnologias e Desafios para Análise de BigData – Sandro S. Andrade
9. Motivação
● BigData hoje:
– Colisor LHC: 15 PB por ano
– Radiologia: 69 PB por ano
– Square Kilometre Array (SKA): 0.5 ZB por ano em 2022
– Observação da terra: 4PB por ano
– Análise de dados sísmicos: alguns TB por dia
Arquiteturas, Tecnologias e Desafios para Análise de BigData – Sandro S. Andrade
10. Motivação
● Porque analisar todos estes dados ?
– Marketing mais efetivo
– Aumento nos lucros
– Redução de custos
– Melhorias nas tamadas de decisão
– Sistemas de recomendação
– Análise de risco
– Smart Cities
Arquiteturas, Tecnologias e Desafios para Análise de BigData – Sandro S. Andrade
11. O MapReduce
● Estilo arquitetural e paradigma de computação
para processamento distribuído de dados que
residem em uma grande quantidade de
computadores
● Criado pelo Google e popularizado em 2004, no
artigo “MapReduce: Simplified Data Processing on
Large Clusters”
● Logo depois o projeto Hadoop foi criado por Doug
Cutting, financiado pelo Yahoo! e passou a
integrar a Apache Foundation
Arquiteturas, Tecnologias e Desafios para Análise de BigData – Sandro S. Andrade
12. O MapReduce
● Visão geral do MapReduce:
– Dados são armazenados em um sistema de arquivos
distribuído, implementado em milhares de máquinas
em um cluster
– Jobs são implementados como tarefas de map e
tarefas de reduce que executam em um cluster
– Cada tarefa processa um pequeno subconjunto dos
dados, de modo que a carga é dividida entre as
máquinas do cluster
Arquiteturas, Tecnologias e Desafios para Análise de BigData – Sandro S. Andrade
13. O MapReduce
● Visão geral do MapReduce:
– A tarefa de map geralmente faz carga, parse,
transformação e filtragem de dados
– A tarefa de reduce é responsável por tratar um
subconjunto dos dados de saída das tarefas de map
– Dados intermediários são copiados das tarefas map
para as tarefas reduce, de modo a agregar e agrupar
os dados de saída
– Um amplo conjunto de problemas pode ser resolvido
com este paradigma, desde agregações numéricas
simples até joins e produtos cartesianos
Arquiteturas, Tecnologias e Desafios para Análise de BigData – Sandro S. Andrade
14. O MapReduce
● Visão geral do MapReduce:
Arquiteturas, Tecnologias e Desafios para Análise de BigData – Sandro S. Andrade
15. O MapReduce
● Visão geral do MapReduce – exemplo de job:
Arquiteturas, Tecnologias e Desafios para Análise de BigData – Sandro S. Andrade
16. O Hadoop
● Framework open source para armazenamento e
processamento de BigData em larga-escala
● Serviços:
– Sistema de arquivos distribuído (HDFS)
– Framework para execução de aplicações paralelas
(YARN)
– MapReduce como um dos modelos de computação
distribuída suportados no YARN
● Mantido pela Apache Foundation
– http://hadoop.apache.org/
Arquiteturas, Tecnologias e Desafios para Análise de BigData – Sandro S. Andrade
17. O Hadoop
● Excelente escalabilidade e tolerância a falhas
● Jobs podem ser programados em Java ou em
outras linguagens (via Hadoop Streaming)
● Boa escalabilidade horizontal (rebalanceamento)
● Cerca de 190 parâmetros de configuração
● Usos atuais:
– Yahoo!: 42.000 máquinas rodando Hadoop
– Facebook: 100PB de armazenamento no HDFS, 2.000
máquinas (8/16 núcleos, 32GB RAM, 12TB HD). 0.5 PB
de novos dados por dia
Arquiteturas, Tecnologias e Desafios para Análise de BigData – Sandro S. Andrade
18. O Hadoop
● Arquitetura do HDFS:
Arquiteturas, Tecnologias e Desafios para Análise de BigData – Sandro S. Andrade
19. O Hadoop
● Arquitetura do YARN:
Arquiteturas, Tecnologias e Desafios para Análise de BigData – Sandro S. Andrade
20. O Hadoop
● Arquitetura do YARN:
Arquiteturas, Tecnologias e Desafios para Análise de BigData – Sandro S. Andrade
21. O Hadoop
● Arquitetura do YARN:
Arquiteturas, Tecnologias e Desafios para Análise de BigData – Sandro S. Andrade
22. O Hadoop
● YARN - escalonadores:
– Fair Scheduler:
● Desenvolvido pelo Facebook
● Jobs são agrupados em pools
● Garante-se a cada pool uma disponibilidade mínima de
recursos
● O excesso de capacidade é dividido entre os jobs
– Capacity Scheduler:
● Desenvolvido pelo Yahoo!
● Jobs são submetidos a filas, que usam uma fração dos
recursos
● Recursos livres podem ser alocados a filas além da sua
capacidade total
Arquiteturas, Tecnologias e Desafios para Análise de BigData – Sandro S. Andrade
23. O Hadoop
● Exemplo – contador de palavras – main
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();
if (otherArgs.length != 2) {
System.err.println("Usage: wordcount <in> <out>");
System.exit(2);
}
Job job = new Job(conf, "word count");
job.setJarByClass(WordCount.class);
job.setMapperClass(TokenizerMapper.class);
job.setCombinerClass(IntSumReducer.class);
job.setReducerClass(IntSumReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
FileInputFormat.addInputPath(job, new Path(otherArgs[0]));
FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
Arquiteturas, Tecnologias e Desafios para Análise de BigData – Sandro S. Andrade
24. O Hadoop
● Exemplo – contador de palavras – mapper
public static class TokenizerMapper
extends Mapper<Object, Text, Text, IntWritable>{
private final static IntWritable one = new IntWritable(1);
private Text word = new Text();
public void map(Object key, Text value, Context context
) throws IOException, InterruptedException {
StringTokenizer itr = new StringTokenizer(value.toString());
while (itr.hasMoreTokens()) {
word.set(itr.nextToken());
context.write(word, one);
}
}
}
Arquiteturas, Tecnologias e Desafios para Análise de BigData – Sandro S. Andrade
25. O Hadoop
● Exemplo – contador de palavras – reducer
public static class IntSumReducer
extends Reducer<Text,IntWritable,Text,IntWritable> {
private IntWritable result = new IntWritable();
public void reduce(Text key, Iterable<IntWritable> values,
Context context
) throws IOException, InterruptedException {
int sum = 0;
for (IntWritable val : values) {
sum += val.get();
}
result.set(sum);
context.write(key, result);
}
}
Arquiteturas, Tecnologias e Desafios para Análise de BigData – Sandro S. Andrade
26. Design Patterns para MapReduce
● Numerical Summarizations
● Inverted Index Summarizations
● Counting with Counters
Arquiteturas, Tecnologias e Desafios para Análise de BigData – Sandro S. Andrade
● Filtering
● Top Ten
● Structured to Hierarchical
● Reduce Side Join
● Replicated Join
● … muitos outros
27. Hadoop – Projetos Relacionados
● Ambari: provisionamento, gerenciamento e
monitoramento de clusters Hadoop
● Cassandra: banco de dados com escalabilidade
linear e alta disponibilidade (nenhum ponto único
de falha)
● HBase: banco de dados não relacional
desenvolvido sobre o HDFS
● Hive: análise de dados através de linguagem SQL-like
(HiveQL). Desenvolvido pelo Facebook e
Arquiteturas, Tecnologias e Desafios para Análise de BigData – Sandro S. Andrade
Netflix
28. Hadoop – Projetos Relacionados
● Manout: biblioteca escalável para aprendizado de
máquina
● Pig: análise de dados com linguagens de
alto nível
● Spark: mapreduce de alto desempenho
● Tez: processamento de dados com grafos
direcionados acíclicos
● ZooKeeper: coordenação e comunicação em grupo
● Giraph: processamento interativo
de grafos
Arquiteturas, Tecnologias e Desafios para Análise de BigData – Sandro S. Andrade
29. Hadoop – Ecossistema
● Commits por empresa:
Arquiteturas, Tecnologias e Desafios para Análise de BigData – Sandro S. Andrade
30. Desafios Atuais
● Garantia de QoS em clusters Hadoop
● Controle e sintonia automática de parâmetros
● Elasticidade automática
● Mecanismos de alto nível (próximos ao negócio)
para análise de dados
Arquiteturas, Tecnologias e Desafios para Análise de BigData – Sandro S. Andrade
31. Conclusão
● Escalabilidade como requisito não-funcional
primordial
● Foco na acomodação de falhas de hardware
● O MapReduce é interessante, mas limita o projeto
e implementação dos jobs
● É necessário formação profissional na área de
sistemas distribuídos, arquitetura de software e
análise de desempenho
● Análise de BigData como diferencial competitivo
nas organizações
Arquiteturas, Tecnologias e Desafios para Análise de BigData – Sandro S. Andrade
32. Obrigado !
Sandro S. Andrade
Instituto Federal de Educação, Ciência e Tecnologia (IFBa)
Grupo de Pesquisa em Sistemas Distribuídos, Otimização,
Redes e Tempo-Real (GSORT)
sandroandrade@ifba.edu.br
@andradesandro
Arquiteturas, Tecnologias e Desafios para Análise de BigData – Sandro S. Andrade