•
•
•
•
•
•
•

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

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 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).
• 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
Suas Aplicações

Service
Bus

Workflow

Database

Analytics

Identity

Contacts

Access
Control

…

Reporting

…

Devices

…

Compute

Storage

Manage

…

…
• 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
Account

Container

Blob

Block

IMG001.JPG
Pictures
IMG002.JPG

Account

Block AAAA
Movies

MOV1.AVI

Block AAAB
Block AAAC
Account

Queue

Message

128x128, http://…
Thumbnail Jobs
256x256, http://…
Account
http://…
Indexing Jobs
http://…
Account

Table

Entity

Name=…hash=…

Users
Name=…hash=…
Account
Tag=…id=…
PhotoIndex
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 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)
• 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 input
hadoop fs -put /etc/hadoop-0.20/conf/*.xml input
hadoop-0.20 fs -ls input
hadoop-0.20 jar /usr/lib/hadoop-0.20/hadoop-*-examples.jar grep
input output 'dfs[a-z.]+'
hadoop-0.20 fs -mkdir inputwords
hadoop-0.20 fs -put /etc/hadoop-0.20/conf/*.xml inputwords
hadoop-0.20 fs -ls inputwords
hadoop-0.20 jar /usr/lib/hadoop-0.20/hadoop-*-examples.jar grep
inputwords 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 guardachuva 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
Tecnologias para mineração de dados nas nuvens

Tecnologias para mineração de dados nas nuvens

  • 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 conceitode 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.
  • 4.
    • • • • • Alta disponibilidade Recuperação deFalhas Backup é inerente ao sistema Segurança dos dados Escalonamento sob demanda
  • 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 plataformacomo 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
  • 11.
  • 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
  • 13.
  • 14.
    Account Queue Message 128x128, http://… Thumbnail Jobs 256x256,http://… Account http://… Indexing Jobs http://…
  • 15.
  • 19.
    • • • • Grandes volumes dedados (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 ApacheHadoop é 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 sistemaescalá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
  • 25.
  • 26.
    • Colaboração comgrandes 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 emproduçã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
  • 29.
    Tipicamente em 2ní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 emGFS • Projetado para trabalhar com arquivos muito grandes • Executado em hardware commodity • Streaming de acesso a dados • Replicação e localidade
  • 31.
    • Projetado paraescalar 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 deentrada é copiado para HDFS é dividido em blocos • Cada blocos de dados é replicado para várias máquinas
  • 33.
    • Sistema deArquivos 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
  • 36.
    • Input: – Registrosde 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)
  • 38.
    map (k, v): if(isPrime(v)) then emit (k, v) (“foo”, 7) (“foo”, 7) (“test, 10) (nothing)
  • 39.
    Depois que afase 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)
  • 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)
  • 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, Iteratorvalues): // key: a palavra // values: a lista de valores int result = 0; for each v in values: result += ParseInt(v); Emit(AsString(result));
  • 45.
    • Os passosbá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
  • 46.
    hadoop jar /usr/lib/hadoop/hadoop-*-examples.jarpi 10 100 hadoop fs -mkdir input hadoop fs -put /etc/hadoop-0.20/conf/*.xml input hadoop-0.20 fs -ls input hadoop-0.20 jar /usr/lib/hadoop-0.20/hadoop-*-examples.jar grep input output 'dfs[a-z.]+' hadoop-0.20 fs -mkdir inputwords hadoop-0.20 fs -put /etc/hadoop-0.20/conf/*.xml inputwords hadoop-0.20 fs -ls inputwords hadoop-0.20 jar /usr/lib/hadoop-0.20/hadoop-*-examples.jar grep inputwords outputwords 'dfs[a-z.]+'
  • 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 andItem 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
  • 49.
    • • • • www.azuris.com.br Alessandro de OliveiraBinhara binhara@gmail.com binhara@azuris.com.br