tecnologias para mineração de dados nas nuvens

Post on 11-Jun-2015

1.031 Views

Category:

Technology

4 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

• 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

• Facebook

• Google

• 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

• binhara@gmail.com

• binhara@azuris.com.br

top related