filesystem distribuído com hadoop!!!

40
Filesystem Distribuído com Hadoop!!! Alessandro Binhara

Upload: alessandro-binhara

Post on 04-Dec-2014

969 views

Category:

Technology


1 download

DESCRIPTION

Começão com Hadoop para file system distribuido hdfs, e processamento distribuido com map-reduce . Palestra realizado no TDC em São Paulo

TRANSCRIPT

Page 1: Filesystem distribuído com hadoop!!!

Filesystem Distribuído com Hadoop!!!

Alessandro Binhara

Page 2: Filesystem distribuído com hadoop!!!

Começando com Hadoop!!!

• Grandes volumes de dados (Tera Bytes)

• Processamento dos dados

• Tolerância a falha

• Distribuição do serviço

Page 3: Filesystem distribuído com hadoop!!!

Por que ???

• 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 4: Filesystem distribuído com hadoop!!!

Começando com Hadoop!!!

• 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 5: Filesystem distribuído com hadoop!!!

O que é o Hadoop

• 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 6: Filesystem distribuído com hadoop!!!

Características do Hadoop

• 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 7: Filesystem distribuído com hadoop!!!

Ecosistema Hadoop

• 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

Hadoop CoreDistributed File SystemMapReduce Framework

Pig (criado pelo Yahoo!)Parallel Programming Language e Runtime

Hbase (criado pelo Powerset)Table storage for semi-structured data

Zookeaper (criado peloYahoo!)

Coordinating distributed systems

Hive (criado pelo Facebook)SQL-like query language and metastore

Page 8: Filesystem distribuído com hadoop!!!

Quem usa o Hadoop ?

• Buscapé / Ebehavior

• Amazon/A9

• Facebook

• Google

• IBM

• Joost

• Last.fm

• New York Times

• PowerSet

• Veoh

• Yahoo!

Page 9: Filesystem distribuído com hadoop!!!

M45(open cirrus cluster )

• 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 10: Filesystem distribuído com hadoop!!!

Hadoop no Facebook

• 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 11: Filesystem distribuído com hadoop!!!

Yahoo Hadoop Cluster

Page 12: Filesystem distribuído com hadoop!!!

Uso de Hardware Comum

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 13: Filesystem distribuído com hadoop!!!

HDFS

• Inspirado em GFS

• Projetado para trabalhar com arquivos muito grandes

• Executado em hardware commodity

• Streaming de acesso a dados

• Replicação e localidade

Page 14: Filesystem distribuído com hadoop!!!

HDFS

• 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 15: Filesystem distribuído com hadoop!!!

HDFS - Duplicação

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

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

Page 16: Filesystem distribuído com hadoop!!!

HDFS – Hadoop FileSystem

• 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 17: Filesystem distribuído com hadoop!!!

HDFS - MapReduce Data Flow

Page 18: Filesystem distribuído com hadoop!!!
Page 19: Filesystem distribuído com hadoop!!!

Modos de Operação

• Standalone

• Pseudo-distributed

• Fully-distributed

Page 20: Filesystem distribuído com hadoop!!!

O que é Map Reduce

• 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 21: Filesystem distribuído com hadoop!!!

MapReduce x Hadoop

MapReduce Hadoop

Org Google Yahoo/Apache

Impl C++ Java

Distributed File Sys

GFS HDFS

Data Base Bigtable HBase

Distributed lock mgr

Chubby ZooKeeper

Page 22: Filesystem distribuído com hadoop!!!

MapReduce – Função Map

• 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 23: Filesystem distribuído com hadoop!!!

MapReduce – Função Map

Page 24: Filesystem distribuído com hadoop!!!

Exemplo – Função Map

map (k, v):

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

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

(“test, 10) (nothing)

Page 25: Filesystem distribuído com hadoop!!!

MapReduce – Função Reduce

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 26: Filesystem distribuído com hadoop!!!

MapReduce – Função Reduce

Page 27: Filesystem distribuído com hadoop!!!

Exemplo – Função Reduce

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 28: Filesystem distribuído com hadoop!!!

MapReduce - Terminologia

• Job: unidade de trabalho que o cliente quer ser realizados– Dados de entrada + programa MapReduce +

configuração da informação

• Task: parte do trabalho– Mapa e reduzir tarefas

• Jobtracker: nó que coordena todos os trabalhos na sistema de agendamento de tarefas para rodar em tasktrackers.

• TaskTracker: nós que executar tarefas e enviar o progresso ao jobtracker

Page 29: Filesystem distribuído com hadoop!!!

Fluxo do Trabalho

Page 30: Filesystem distribuído com hadoop!!!

Exemplo Real

map (String key, String value):

// key: document name

// value: document contents

for each word w in value:

EmitIntermediate(w, "1");

Page 31: Filesystem distribuído com hadoop!!!

Reduce

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 32: Filesystem distribuído com hadoop!!!

Map/Reduce Cluster

split 0

split 1

split 2

split 3

split 4

Output 0

Output 1

Input

files

Output

files

M map

tasksR reduce

tasks

Intermediate

files

Vários Map ou Reducepodem ser executados em um único computador

Cada tarefa reducecorresponde uma partição

Cada arquivo intermediário é dividido em partições R, pela função de particionamento

Page 33: Filesystem distribuído com hadoop!!!

Execução

Page 34: Filesystem distribuído com hadoop!!!

Map Reduce

Page 35: Filesystem distribuído com hadoop!!!

Exemplo Java - Mapper

Page 36: Filesystem distribuído com hadoop!!!

Exemplo Java – Reduce

Page 37: Filesystem distribuído com hadoop!!!

JobJava

Page 38: Filesystem distribuído com hadoop!!!

Passo a Passo

• 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 AJR os parametros relevantes

– Monitorar tarefas via interface Web (opcional)

– Examinar a saída quando o trabalho estiver completo

Page 39: Filesystem distribuído com hadoop!!!

Exemplo

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 grep input 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 grep inputwords outputwords 'dfs[a-z.]+'

Page 40: Filesystem distribuído com hadoop!!!

Obrigado

• Alessandro de Oliveira Binhara

[email protected]

[email protected]

• www.facebook.com/azuriscompany