2. •
•
•
•
•
•
•
Mestre em Tecnologia (UTFPR)
Bacharel em Processamento de Dados
Desenvolvedor a mais de 18 anos....
Mono Hacker desde 2003
Linguagens Fluente: C#, Java, PHP,
Outras: C++, C , Pascal, Python, Ruby, Boo, etc.
Atualmente atua como desenvolvedor/consultor para algumas empresas:
3. • O conceito de computação em nuvem refere-se à
utilização da memória, processamento e das
capacidades de armazenamento e cálculo de
servidores compartilhados e interligados por meio da
Internet, seguindo um modelo computacional (Grid
Computing) capaz de alcançar uma alta taxa de
processamento dividindo as tarefas entre diversas
máquinas.
5. • DaaS - Development as a Service ou Desenvolvimento
como Serviço :
– as ferramentas de desenvolvimento tomam forma no cloud
computing como ferramentas compartilhadas, ferramentas de
desenvolvimento web-based e serviços baseados em mashup.
• SaaS - Software as a Service ou Software como Serviço :
– uso de um software em regime de utilização web (p.ex.: Google
Docs , Microsoft Sharepoint Online).
• CaaS - Communication as a Service ou Comunicação como
Serviço :
– uso de uma solução de Comunicação Unificada hospedada em
Data Center do provedor ou fabricante.
6. Cloud Computing é dividida em cinco tipos:
• IaaS - Infrastructure as a Service ou Infraestrutura como Serviço:
– quando se utiliza uma porcentagem de um servidor,
geralmente com configuração que se adeque à sua
necessidade.(p. Ex: Hadoop)
• PaaS - Plataform as a Service ou Plataforma como
Serviço (em português):
– utilizando-se apenas uma plataforma como um banco
de dados, um web-service, etc. (p.ex.: Windows
Azure).
7. • Um plataforma como serviços
– Aplicações distribuídas com framework
consistente
– Armazenamento de Dados
• TABLE, BLOBs e SQL Azure
– Pagamento sob Demanda
– Escalonamento sob Demanda
– 7 Mega Datacenters já construídos
12. • Blobs – prover uma interface simples para
armazenamento de arquivosnomeados
com metadados para o arquivo
• Tables –armazenamento estruturado. Uma
tabela é um conjunto de entidades, que
contêm um conjunto de propriedades
• Queues – Fornecer armazenamento confiável
e entrega de mensagens para uma aplicação
19. •
•
•
•
Grandes volumes de dados (Tera Bytes)
Processamento dos dados
Tolerância a falha
Distribuição do serviço
20. • Requisitos
–
–
–
–
500M+ usuário únicos por mês
Bilhões de eventos interessantes por dia
Necessidade de scalabilidade massiva
PB’s de storage, milhares de arquivos, 1000’s de nós
• Necessidade de ter baixo custo
– Uso de hardware comum
– Compartilhar recursos com vários projetos
– Fornecer escala quando necessário
• Precisa de infraestrutura confiável
– Deve ser capaz de lidar com falhas - hardware, software, networking
• A falha é esperada, e não uma exceção
– Transparente para as aplicações
• muito caro para construir confiabilidade em cada aplicação
• A infra-estrutura do Hadoop prove essas capacidade.
21. • Histórico
–
–
–
–
Em 2004: Google publica um artigo sobre MapReduce
2005: Doug Cutting integra MapReduce no Hadoop
2006: Doug Cutting contratado pelo Yahoo
Yahoo! tornou-se o promeiro contribuidor em 2006
• Escalou de 20 node para 4000 node clusters em 2010
– 2008: Cloudera é Fundada (www.cloudera.com)
• Características
– Escrito em Java, OpenSource
– Roda em hardware comum
– Linux, Mac OS/X, Windows, and Solaris
22. • O Apache Hadoop é um projeto desenvolvimento como
open-source software para escalavel , confiável e
processamento distribuído. Inclui:
– MapReduce e Sistema de arquivos distribuído framework para
for large commodity clusters
– Master/Slave
– JobTracker organiza todas as tarefas e coordena o fluxo de
dados entre os TaskTrackers
– TaskTracker manipula todos os worker no node
– Worker Task executa as operações de map ou reduce
– Integra-se com HDFS com os dados localmente
23. • Um sistema escalável e confiável para
armazenamento compartilhado e análises.
• Ele automaticamente trata da replicação de
dados e da falhas em cada nó.
• Ele faz o trabalho duro - desenvolvedor pode se
concentrar em processamento da lógica de dados
• Permite que os aplicativos usem petabytes de
dados em paralelo
24. • Hadoop Core
– Distributed File System
– MapReduce Framework
• Pig (criado pelo Yahoo!)
– Parallel Programming Language e Runtime
• Hbase (criado pelo Powerset)
– Table storage for semi-structured data
• Zookeaper (criado pelo Yahoo!)
– Coordinating distributed systems
• Hive (criado pelo Facebook)
– SQL-like query language and metastore
26. • Colaboração com grandes universidades de
pesquisa(via open cirrus)
–
–
–
–
Carnegie Mellon University
The University of California at Berkeley
Cornell University
The University of Massachusetts at Amherst joined
• Seed Facility:
Datacenter na caixa (DiB)
– 500 nodes, 4000 cores, 3TB RAM, 1.5PB disk
– Conexão de alta velocidade com a internet
– Localizado no Yahoo no campu Coorporativo
• Roda Hadoop
• Tem sido usado no últimos 2 anos
27. • Cluster em produção
–
–
–
–
–
4800 cores, 600 máquina, 16GB por máquina – Abril/2009
8000 cores, 1000 máquinas, 32 GB por máquina – julho/2009
4 SATA discos de 1 TB por máquina
2 níveis de rede hierarquica, 40 máquinas por rack
Total do tamanho do cluster 2 PB, projetado para 12 PB no Q3 2009
• Cluster de Teste
• 800 cores, 16GB cada
28.
29. Tipicamente em 2 níveis
– Nós são PCs comuns
– 30-40 nodes/rack
– Rack em Uplink de 3-4 gigabit
– Rack-interno de 1 gigabit
30. • Inspirado em GFS
• Projetado para trabalhar com arquivos muito
grandes
• Executado em hardware commodity
• Streaming de acesso a dados
• Replicação e localidade
31. • Projetado para escalar a petabytes de armazenamento, e
correr em cima dos sistemas de arquivos do sistema
operacional subjacente.
• “NameNode” - Master
– Gerencia o sistema de arquivos namespace
Conhece todos os blocos de localização
– lida com a replicação, exclusão, criação
• “DataNode” - Slave (workers)
– Manter os blocos de dados
– Relatório de volta para namenode suas listas de blocos
periodicamente
– lida com a recuperação de dados
32. • Dados de entrada é
copiado para HDFS é
dividido em blocos
• Cada blocos de dados é
replicado para várias
máquinas
33. • Sistema de Arquivos Distribuído para grande
Volumes
– 10K nodes, 100 milhões de arquivos, 10 PB
• Hardware Comum (comodite)
– Os arquivos são replicados esperando falha de
hardware
– Detecção de falhas e recuperação
• Otimizado para Batch Processing
– Os dados ficam expostos, a computação pode
ser movida onde os dados estiverem
• Roda em diversos OS (win, linux, mac)
34. • MapReduce é um modelo de programação e
implementação associados para o
processamento e geração de grandes conjuntos
de dados (Jeffrey Dean e Sanjay Ghemawat, 2004)
– A ideia tem mais de 40 anos
– Baseado em um modelo de programação funcional
(como Lisp, Ml, etc)
– Processamento de dados base em batch
– A abstração limpa para programadores
– Paralelização automática e distribuição
– Tolerância a falhas
35.
36. • Input:
– Registros de alguma fonte de dados (por exemplo,
linhas de arquivos, linhas de um banco de dados,
...) estão associados no par (chave, valor)
• Output:
– Um ou mais valores intermediários no formato
(chave, valor)
• Exemplo: (palavra, numero_de_ocorrencias)
37.
38. map (k, v):
if (isPrime(v)) then emit (k, v)
(“foo”, 7) (“foo”, 7)
(“test, 10) (nothing)
39. Depois que a fase de mapeamento terminar, todos
os valores intermediários vão para uma chave de
saída, estes são combinadas em uma lista
• Input
– Valores Intermediários :
– Example: (“A”, [42, 100, 312])
• Output
– Normalmente, apenas um valor final por chave
– Exemplo (“a”, 454)
40.
41. reduce (k, vals):
sum = 0
foreach int v in vals:
sum += v
emit (k, sum)
(“A”, [42, 100, 312]) (“A”, 454)
(“B”, [12, 6, -2]) (“B”, 16)
42.
43. map (String key, String value):
// key: nome do documento
// value: conteudo do documento
for each word w in value:
EmitIntermediate(w, "1");
44. reduce(String key, Iterator values):
// key: a palavra
// values: a lista de valores
int result = 0;
for each v in values:
result += ParseInt(v);
Emit(AsString(result));
45. • Os passos básicos para a execução de um
trabalho Hadoop são:
– Compile o seu trabalho em um arquivo JAR
– Copiar dados de entrada no HDFS
– Execute hadoop passando para o JAR
os parametros relevantes
– Monitorar tarefas via interface Web (opcional)
– Examinar a saída quando o trabalho estiver
completo
47. • Mahout - scalable machine learning
– Mahout é uma biblioteca de código aberto da
Apache de máquina de aprendizagem. Os
algoritmos que implementa caiem sob o guardachuva amplo de "aprendizagem de máquina", ou
"inteligência coletiva“.
– Motores de filtragem Colaborativa
– Motor de recomendação
– Clustering e classificação.
48. •
•
•
•
•
•
•
•
•
•
Collaborative Filtering
User and Item based recommenders
K-Means, Fuzzy K-Means clustering
Mean Shift clustering
Dirichlet process clustering
Latent Dirichlet Allocation
Singular value decomposition
Parallel Frequent Pattern mining
Complementary Naive Bayes classifier
Random forest decision tree based classifier