Apache Hadoop Apache Hadoop Conceitos teóricos e práticos, evolução e novas possibilidades Daniel Cordeiro Departamento de Ciência da Computação Instituto de Matemática e Estatística Universidade de São Paulo Baseado no curso apresentado no CSBC’12 pelos professores Alfredo Goldman e Fabio Kon (USP); Francisco Pereira Jr., Ivanilton Polato e Rosangela de Fátima Pereira (UTFPR) ERAD/SP – 25 de julho de 2012
89
Embed
Apache Hadoop - Conceitos teóricos e práticos, evolução e ... · Apache Hadoop Apache Hadoop Conceitosteóricosepráticos,evolução enovaspossibilidades DanielCordeiro Departamento
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Apache Hadoop
Apache HadoopConceitos teóricos e práticos, evolução
e novas possibilidades
Daniel Cordeiro
Departamento de Ciência da ComputaçãoInstituto de Matemática e Estatística
Universidade de São Paulo
Baseado no curso apresentado no CSBC’12 pelos professoresAlfredo Goldman e Fabio Kon (USP);
Francisco Pereira Jr., Ivanilton Polato e Rosangela de Fátima Pereira (UTFPR)
ERAD/SP – 25 de julho de 2012
Apache Hadoop
Introdução
Motivação
Uso potencial em aplicações “BigData”
Conjuntos de dados na ordem de petabytesComputação intensiva sobre os dados
Computação paralela não é trivial
Divisão das subtarefasEscalonamento das subtarefasBalanceamento de carga
Daniel Cordeiro (IME/USP) — [email protected] ERAD/SP – 25 de julho de 2012 2 / 88
Arcabouço para processamento e armazenamento de dados emlarga escala:
Código abertoImplementado em JavaInspirado no GFS e MapReduce do GoogleProjeto top-level da Fundação ApacheTecnologia recente, porém já muito utilizada
Daniel Cordeiro (IME/USP) — [email protected] ERAD/SP – 25 de julho de 2012 4 / 88
Em 2007, o jornal The New York Times converteu para PDFtodos seus os artigos publicados entre 1851 e 1980Cada artigo é composto por várias imagens previamentedigitalizadas que precisavam ser posicionadas eredimensionadas de forma coerente pra a criação do PDFO Hadoop foi utilizado para converter 4 TB de imagens TIFFem 11 milhões de arquivos PDF100 instâncias EC2 da Amazon foram utilizadas durante24 horas para gerar 1,5 TB de arquivos PDF, a um custo deaproximadamente US$ 240,00
Daniel Cordeiro (IME/USP) — [email protected] ERAD/SP – 25 de julho de 2012 9 / 88
Permite facilmente adicionar máquinas ao aglomeradoAdição não implica na alteração do código-fonteLimitação apenas relacionada a quantidade de recursosdisponíveis
Daniel Cordeiro (IME/USP) — [email protected] ERAD/SP – 25 de julho de 2012 16 / 88
Mover dados é caro (largura de banda pequena)Mover computação é baratoProgramação paralela e distribuída é difícil
Ideias e soluções do Apache Hadoop
Mover a computação para onde estão os dadosEscrever programas que são fáceis de se distribuirParalelismo de dados utilizando conceitos de linguagemfuncional
Daniel Cordeiro (IME/USP) — [email protected] ERAD/SP – 25 de julho de 2012 20 / 88
O modelo inicial proposto pelo Google apresentou conceitospara simplificar alguns problemasParalelização da computação em um aglomerado de máquinascomuns (com centenas/milhares de CPUs)Paralelização e distribuição automática de computação deveriaser o mais simples possívelO sistema de execução se encarrega de:
particionar e distribuir os dados de entradaescalonar as execuções em um conjunto de máquinastratar as falhascomunicação entre as máquinas
Daniel Cordeiro (IME/USP) — [email protected] ERAD/SP – 25 de julho de 2012 24 / 88
O modelo de programação paralela MapReduce aborda osproblemas da seguinte forma:
1 Leia uma grande quantidade de dados2 Aplique a função MAP: extrai alguma informação de valor!3 Fase intermediária: Shuffle & Sort4 Aplique a função REDUCE: reúne, compila, filtra, transforma,
etc.5 Grave os resultados
Daniel Cordeiro (IME/USP) — [email protected] ERAD/SP – 25 de julho de 2012 25 / 88
A ideia do modelo de programação Map e Reduce não é novaPresente em linguagens funcionais há mais de 40 anos!No Hadoop é a parte do arcabouço responsável peloprocessamento distribuído (paralelo) de grandes conjuntos dedadosUsa padrões já conhecidos:
O modelo MapReduce é adequado para trabalhar com grandesquantidades de dadosRealiza computação sobre os dados (pouca movimentação dedados)Os dados são compartilhados através de um sistema dearquivos distribuído
Daniel Cordeiro (IME/USP) — [email protected] ERAD/SP – 25 de julho de 2012 29 / 88
A função Map atua sobre um conjunto de entrada com chavese valores, produzindo uma lista de chaves e valoresA função Reduce atua sobre os valores intermediáriosproduzidos pelo Map para, normalmente, agrupar os valores eproduzir a saída
Gerar o índice invertido das palavras de um conjunto dearquivos dadoMap: faz a análise dos documentos e gera pares de (palavra,docId)Reduce: recebe todos os pares de uma palavra, organiza osvalores docId, e gera um par (palavra, lista(docId))
Daniel Cordeiro (IME/USP) — [email protected] ERAD/SP – 25 de julho de 2012 36 / 88
Execução pseudo-distribuída:“Cluster” de uma máquina sóConfiguração similar à do processamento em um cluster...... porém, o processamento continua sendo executado namáquina local
Daniel Cordeiro (IME/USP) — [email protected] ERAD/SP – 25 de julho de 2012 53 / 88
Execução completamente distribuída:Processamento real de uma aplicação HadoopDeve indicar quais máquinas irão efetivamente executar oscomponentes Hadoop
Daniel Cordeiro (IME/USP) — [email protected] ERAD/SP – 25 de julho de 2012 54 / 88
Problema:Suponha que você tenha dadosdos seus usuários em um arquivo,logs de acesso a sites em outro, evocê quer saber quais são os 5sites mais visitados por usuárioscom idades entre 18 e 25 anos.
Filtrar por idade Ler páginas
Ler usuários
Junção por nome
Agrupar por URL
Contar visitas
Ordenar por númerode visitas
Pegar as 5 primeiras
Daniel Cordeiro (IME/USP) — [email protected] ERAD/SP – 25 de julho de 2012 64 / 88
Users = load ‘users’ as (name, age);Fltrd = filter Users by
age >= 18 and age <= 25;Pages = load ‘pages’ as (user, url);Jnd = join Fltrd by name, Pages by user;Grpd = group Jnd by url;Smmd = foreach Grpd generate group,
COUNT(Jnd) as clicks;Srtd = order Smmd by clicks desc;Top5 = limit Srtd 5;store Top5 into ‘top5sites’;
Daniel Cordeiro (IME/USP) — [email protected] ERAD/SP – 25 de julho de 2012 66 / 88
Ao executar o script Pig, a plataforma se encarrega de:
fazer o parse do arquivoverificar erros de sintaxeotimizar o código do scriptcriar um plano de execução — quais tarefas Map e Reduceserão necessárias e qual a melhor ordem para executá-las?enviar todos os arquivos necessários para o HDFSmonitorar os processos em execução
Daniel Cordeiro (IME/USP) — [email protected] ERAD/SP – 25 de julho de 2012 67 / 88
Funções definidas pelo usuário (UDFs) são elementos deprimeira ordem da linguagem. Podem ser escritos paratransformações em colunas (toUpper()) ou agregação(sum())Quatro tipo de joins diferentes: hash, fragment-replicate,merge e skewedMulti-query : Pig irá combinar certos tipos de operações emum único pipeline para reduzir o número de vezes que ummesmo dado precisa ser analisadoOrder by provê ordem total entre os “reducers”Piggybank, uma coleção de funções UDF disponibilizadas pelacomunidade de usuários
Daniel Cordeiro (IME/USP) — [email protected] ERAD/SP – 25 de julho de 2012 69 / 88
Em 2010, tarefas MapReduce geradas pelo Pig correspondiama 70% das tarefas executadas no Yahoo!O Pig também é usado pelo Twitter, LinkedIn, Ebay, AOL, etc.Usos comuns:
Processamento de logs de servidores webConstrução de modelos de predição de comportamento deusuáriosProcessamento de imagensConstrução de índices de páginas da webPesquisa em conjuntos de dados “brutos”
Daniel Cordeiro (IME/USP) — [email protected] ERAD/SP – 25 de julho de 2012 72 / 88
a classe PigStorage, que fornece um modo conveniente de lerarquivos com entradas separadas por um delimitadorespecificado com uma expressão regular, ouuma classe Java personalizada
Daniel Cordeiro (IME/USP) — [email protected] ERAD/SP – 25 de julho de 2012 73 / 88
Grunt Shell: modo iterativo, comandos são digitadosmanualmente usando um shell iterativoArquivo de script: os comandos são definidos em um arquivode scriptModo embutido: os comandos do Pig podem ser executadosde dentro de um outro programa
Modos de distribuição
Modo local, as tarefas MapReduce são executadas na máquinalocalModo Hadoop (MapReduce): a plataforma executa as tarefasMapReduce em uma instalação do Hadoop e do HDFS remota
Daniel Cordeiro (IME/USP) — [email protected] ERAD/SP – 25 de julho de 2012 74 / 88
É uma biblioteca de algoritmos de aprendizado de máquinaÉ um projeto da Fundação ApacheSoftware livre (licença Apache)Principal objetivo: ser escalável para manipular grandesvolumes de dados
Daniel Cordeiro (IME/USP) — [email protected] ERAD/SP – 25 de julho de 2012 79 / 88
Exemplo: Large-scale Parallel Collaborative Filtering for the NetflixPrize (AAIM’08 – Zhou et al., HP Labs)
Constrói uma matriz de co-ocorrênciaComputa o número de vezes que cada par de itens aparecemjuntos na lista de preferências de algum usuárioSe existem 9 usuários que expressam preferência pelo itens X eY, então X e Y co-ocorrem 9 vezesCo-ocorrência é como similaridade, quanto mais dois itensaparecerem juntos, mais provável que sejam similares
Daniel Cordeiro (IME/USP) — [email protected] ERAD/SP – 25 de julho de 2012 82 / 88
Um vetor para cada usuárioCom n itens na base de dados, o vetor de preferências terá ndimensõesSe o usuário não exprime nenhuma preferência por umdeterminado item, o valor correspondente no vetor será zeroNeste exemplo, o vetor do usuário três é [2.0, 0.0, 0.0, 4.0,4.5, 0.0, 5.0]
Daniel Cordeiro (IME/USP) — [email protected] ERAD/SP – 25 de julho de 2012 84 / 88
Intuitivamente, olhando para a linha 3 da tabela, se o item destalinha co-ocorre com muitos itens que o usuário 3 expressou suapreferência, então é provável que seja algo de que o usuário 3 goste.
Daniel Cordeiro (IME/USP) — [email protected] ERAD/SP – 25 de julho de 2012 86 / 88