Tecnologias para mineração de dados nas nuvens
-
Upload
alessandro-binhara -
Category
Technology
-
view
1.031 -
download
4
description
Transcript of Tecnologias para mineração de dados nas nuvens
• 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:
• O conceito de computação em nuvem refere-se àutilização da memória, processamento e dascapacidades de armazenamento e cálculo deservidores compartilhados e interligados por meio daInternet, seguindo um modelo computacional (GridComputing) capaz de alcançar uma alta taxa deprocessamento dividindo as tarefas entre diversasmáquinas.
• Alta disponibilidade
• Recuperação de Falhas
• Backup é inerente ao sistema
• Segurança dos dados
• Escalonamento sob demanda
• 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.
Cloud Computing é dividida em cinco tipos:• IaaS - Infrastructure as a Service ou Infra-
estrutura 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).
• 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
ServiceBus
AccessControl
Workflow
…
Database
Reporting
Analytics
…
Compute Storage Manage
Identity
Devices
Contacts
…
…
…
Suas Aplicações
• Blobs – prover uma interface simples para armazenamento de arquivosnomeadoscom 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
BlockBlobContainerAccount
Account
Pictures
IMG001.JPG
IMG002.JPG
Movies MOV1.AVI
Block AAAA
Block AAAB
Block AAAC
MessageQueueAccount
Account
Thumbnail Jobs
128x128, http://…
256x256, http://…
Indexing Jobs
http://…
http://…
EntityTableAccount
Account
Users
Name=…hash=…
Name=…hash=…
PhotoIndex
Tag=…id=…
Tag=…,id=…
• Grandes volumes de dados (Tera Bytes)
• Processamento dos dados
• Tolerância a falha
• Distribuição do serviço
• 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.
• 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
• 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
• 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
•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
• Buscapé / Ebehavior
• Amazon/A9
• IBM
• Joost
• Last.fm
• New York Times
• PowerSet
• Veoh
• Yahoo!
• 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
• 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
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
• Inspirado em GFS
• Projetado para trabalhar com arquivos muito grandes
• Executado em hardware commodity
• Streaming de acesso a dados
• Replicação e localidade
• 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
• Dados de entrada é copiado para HDFS é dividido em blocos
• Cada blocos de dados é replicado para várias máquinas
• Sistema de Arquivos Distribuído para grandeVolumes– 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 podeser movida onde os dados estiverem
• Roda em diversos OS (win, linux, mac)
• 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
• 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)
map (k, v):
if (isPrime(v)) then emit (k, v)
(“foo”, 7) (“foo”, 7)
(“test, 10) (nothing)
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)
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)
map (String key, String value):
// key: nome do documento
// value: conteudo do documento
for each word w in value:
EmitIntermediate(w, "1");
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));
• 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
hadoop jar /usr/lib/hadoop/hadoop-*-examples.jar pi 10 100
hadoop fs -mkdir inputhadoop fs -put /etc/hadoop-0.20/conf/*.xml inputhadoop-0.20 fs -ls inputhadoop-0.20 jar /usr/lib/hadoop-0.20/hadoop-*-examples.jar grepinput output 'dfs[a-z.]+'
hadoop-0.20 fs -mkdir inputwordshadoop-0.20 fs -put /etc/hadoop-0.20/conf/*.xml inputwordshadoop-0.20 fs -ls inputwordshadoop-0.20 jar /usr/lib/hadoop-0.20/hadoop-*-examples.jar grepinputwords outputwords 'dfs[a-z.]+'
• 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 guarda-chuva amplo de "aprendizagem de máquina", ou "inteligência coletiva“.
– Motores de filtragem Colaborativa
– Motor de recomendação
– Clustering e classificação.
• 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
• www.azuris.com.br
• Alessandro de Oliveira Binhara