tecnologias para mineração de dados nas nuvens

50

Upload: alessandro-binhara

Post on 11-Jun-2015

1.031 views

Category:

Technology


4 download

DESCRIPTION

Apresentação de tecnologias para mineração de dados nas nuvens com windows azure e hadoop

TRANSCRIPT

Page 1: Tecnologias para mineração de dados nas nuvens
Page 2: 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:

Page 3: Tecnologias para mineração de dados nas nuvens

• 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.

Page 4: Tecnologias para mineração de dados nas nuvens

• Alta disponibilidade

• Recuperação de Falhas

• Backup é inerente ao sistema

• Segurança dos dados

• Escalonamento sob demanda

Page 5: Tecnologias para mineração de dados nas nuvens

• 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.

Page 6: Tecnologias para mineração de dados nas nuvens

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).

Page 7: Tecnologias para mineração de dados nas nuvens

• 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

Page 8: Tecnologias para mineração de dados nas nuvens
Page 9: Tecnologias para mineração de dados nas nuvens
Page 10: Tecnologias para mineração de dados nas nuvens
Page 11: Tecnologias para mineração de dados nas nuvens

ServiceBus

AccessControl

Workflow

Database

Reporting

Analytics

Compute Storage Manage

Identity

Devices

Contacts

Suas Aplicações

Page 12: Tecnologias para mineração de dados nas nuvens

• 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

Page 13: Tecnologias para mineração de dados nas nuvens

BlockBlobContainerAccount

Account

Pictures

IMG001.JPG

IMG002.JPG

Movies MOV1.AVI

Block AAAA

Block AAAB

Block AAAC

Page 14: Tecnologias para mineração de dados nas nuvens

MessageQueueAccount

Account

Thumbnail Jobs

128x128, http://…

256x256, http://…

Indexing Jobs

http://…

http://…

Page 15: Tecnologias para mineração de dados nas nuvens

EntityTableAccount

Account

Users

Name=…hash=…

Name=…hash=…

PhotoIndex

Tag=…id=…

Tag=…,id=…

Page 16: Tecnologias para mineração de dados nas nuvens
Page 17: Tecnologias para mineração de dados nas nuvens
Page 18: Tecnologias para mineração de dados nas nuvens
Page 19: Tecnologias para mineração de dados nas nuvens

• Grandes volumes de dados (Tera Bytes)

• Processamento dos dados

• Tolerância a falha

• Distribuição do serviço

Page 20: Tecnologias para mineração de dados nas nuvens

• 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.

Page 21: Tecnologias para mineração de dados nas nuvens

• 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

Page 22: Tecnologias para mineração de dados nas nuvens

• 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

Page 23: Tecnologias para mineração de dados nas nuvens

• 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

Page 24: Tecnologias para mineração de dados nas nuvens

•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

Page 25: Tecnologias para mineração de dados nas nuvens

• Buscapé / Ebehavior

• Amazon/A9

• Facebook

• Google

• IBM

• Joost

• Last.fm

• New York Times

• PowerSet

• Veoh

• Yahoo!

Page 26: Tecnologias para mineração de dados nas nuvens

• 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

Page 27: Tecnologias para mineração de dados nas nuvens

• 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

Page 28: Tecnologias para mineração de dados nas nuvens
Page 29: Tecnologias para mineração de dados nas nuvens

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

Page 30: Tecnologias para mineração de dados nas nuvens

• Inspirado em GFS

• Projetado para trabalhar com arquivos muito grandes

• Executado em hardware commodity

• Streaming de acesso a dados

• Replicação e localidade

Page 31: Tecnologias para mineração de dados nas nuvens

• 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

Page 32: Tecnologias para mineração de dados nas nuvens

• Dados de entrada é copiado para HDFS é dividido em blocos

• Cada blocos de dados é replicado para várias máquinas

Page 33: Tecnologias para mineração de dados nas nuvens

• 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)

Page 34: Tecnologias para mineração de dados nas nuvens

• 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

Page 35: Tecnologias para mineração de dados nas nuvens
Page 36: Tecnologias para mineração de dados nas nuvens

• 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)

Page 37: Tecnologias para mineração de dados nas nuvens
Page 38: Tecnologias para mineração de dados nas nuvens

map (k, v):

if (isPrime(v)) then emit (k, v)

(“foo”, 7) (“foo”, 7)

(“test, 10) (nothing)

Page 39: Tecnologias para mineração de dados nas nuvens

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)

Page 40: Tecnologias para mineração de dados nas nuvens
Page 41: Tecnologias para mineração de dados nas nuvens

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)

Page 42: Tecnologias para mineração de dados nas nuvens
Page 43: Tecnologias para mineração de dados nas nuvens

map (String key, String value):

// key: nome do documento

// value: conteudo do documento

for each word w in value:

EmitIntermediate(w, "1");

Page 44: Tecnologias para mineração de dados nas nuvens

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));

Page 45: Tecnologias para mineração de dados nas nuvens

• 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

Page 46: Tecnologias para mineração de dados nas nuvens

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.]+'

Page 47: Tecnologias para mineração de dados nas nuvens

• 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.

Page 48: Tecnologias para mineração de dados nas nuvens

• 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

Page 49: Tecnologias para mineração de dados nas nuvens

• www.azuris.com.br

• Alessandro de Oliveira Binhara

[email protected]

[email protected]

Page 50: Tecnologias para mineração de dados nas nuvens