Minicurso
Map/Reduce: Execução Eficiente e Paralela de Aplicações
Intensivas em Grandes Bases de Dados
Francisco Brasileiro, Carla Souza, Thiago Emmanuel Pereira da Cunha Silva,
Geraldo Sarmento
1
Universidade Federal de Campina Grande
Departamento de Sistemas e Computação
Laboratório de Sistemas Distribuı́dos
Av. Aprı́gio Veloso, s/n - Bodocongó
Campina Grande - PB - 58.429-900, Brazil
{carla,geraldoasn,thiagoepdc}@lsd.ufcg.edu.br, [email protected]
1. Dados Gerais
O modelo emergente de programação Map/Reduce [Dean and Ghemawat 2008] tem
atraı́do bastante atenção na área de processamento paralelo de dados. Proposto pela
Google Inc., Map/Reduce é utilizado para processamento de grandes bases de dados
de forma distribuı́da e paralelizada utilizando grandes quantidades de nós. Uma das
implementações do Map/Reduce mais utilizadas é o Hadoop [Hadoop 2010, White 2010].
Desenvolvido pela Apache, o arcabouço Hadoop possui mecanismos para prover alta
disponibilidade dos dados armazenados, replicando-os, e implementação de tolerância
a faltas dos nós.
Este minicurso tem como objetivos i) fornecer diretrizes que permitam decidir
para quais classes de problemas o modelo MapReduce é uma solução apropriada; ii)
como estes problemas são resolvidos em implementações que seguem este modelo; e
iii) detalhar como operar o arcabouço de sistemas que compõem a implementação aberta
deste modelo de programação, o Hadoop.
Este curso tem como público alvo estudantes e profissionais interessados em
aplicações intensivas em dados. Exige-se conhecimento básicos de administração de sistemas e programação.
2. Proposta de Material didático
O minicurso proposto é constituı́do de duas partes. A primeira delas consiste em uma
fundamentação teórica com respeito a modelos de programação para aplicações intensivas
em dados, ao passo que a segunda parte está concentrada no Hadoop, o arcabouço aberto
para Map/Reduce.
As seções seguintes contém o esboço do material didático a ser produzido como
suporte ao minicurso proposto. O material didático está dividido em três grandes partes.
A primeira consiste em uma revisão da literatura sobre computação intensiva em dados.
A segunda incorpora diretrizes para programar aplicações intensivas em dados usando o
modelo MapReduce. Por fim, a terceira parte detalha o projeto, funcionamento e operação
do Hadoop.
Este material didático tanto expande o conteúdo como aprofunda alguns assuntos
que não serão vistos durante o minicurso devido a limitação de sua duração.
2.1. Modelos de Programação para aplicações intensivas em dados
Como dito na Seção 1, um dos objetivos deste minicurso é fornecer diretrizes que permitam decidir para quais classes de problemas o modelo MapReduce é uma solução apropriada. Para tanto, uma revisão da literatura será feita a respeito de diversos modelos e sistemas de computação distribuı́da [Anderson 2004, Acharya et al. 1997, Cirne et al. 2006,
Gonzalez et al. 2008, Korpela et al. 2002]. Este levantamento colocará em perspectiva
as vantagens e desvantagens dos modelos pesquisados de acordo com caracterı́sticas das
aplicações intensivas em dados.
Previsão de páginas: 4.
2.2. MapReduce com Hadoop
Este capı́tulo conterá uma visão geral do conjunto de sistemas que compõem o arcabouço
Hadoop. Serão consideradas as decisões arquiteturais que refletiram no projeto atual do
sistema, bem como estas decisões têm sido modificadas desde o inı́cio do projeto. Em
linhas gerais, o objetivo deste capı́tulo será mostrar como o Hadoop funciona – da submissão de tarefas, passando pelo escalonamento e execução remota – e todos os grandes
módulos de software envolvidos neste fluxo. Além disto, será feito um levantamento de
aplicações existentes sobre o Hadoop. Isto reforçará o entendimento sobre que tipo de
problemas podem ser resolvidos com MapReduce. Este capı́tulo introduzirá temas que
serão aprofundados nos capı́tulos seguintes, conforme delineado nas próxima seções.
Previsão de páginas: 4.
2.2.1. Desenvolvendo e executando aplicações MapReduce
A ampla disseminação do MapReduce pode ser notada pelo número de serviços construı́dos sobre esta plataforma, por exemplo: mineração de dados [Mahout 2010], bases
de dados distribuı́das [Hbase 2010] e soluções para data warehouse [Hive 2010]. A base
de todos estes serviços são aplicação escritas conforme as primitivas do modelo MapReduce. Este capı́tulo contemplará todo o ciclo de desenvolvimento de aplicações. A
primeira parte deste ciclo de desenvolvimento compreende métodos para decompor problemas em tarefas MapReduce, ou seja, como usar as primitivas de programação fornecidas pelo modelo para compor aplicações intensivas em dados. A segunda parte do ciclo
consiste na submissão das aplicações para execução na infraestrutura. Dois modos de
submissão serão contemplados: local e remoto. A submissão local tem como objetivo
depurar possı́veis erros na aplicação MapReduce escrita pelo desenvolvedor e não utiliza
a infraestrutura distribuı́da que compõe uma instalação Hadoop. Sobre o modo de submissão remoto será considerado o empacotamento de aplicações, a submissão destas ao
escalonador, o recebimento de resultados e a depuração de erros.
Previsão de páginas: 3.
2.2.2. Arquitetura do Hadoop: HDFS
MapReduce atinge altas vazões ao dividir os dados a serem processados em blocos e processar estes blocos em paralelo em múltiplos nós de processamento. Parte essencial para
o desempenho do MapReduce é a existência de um sistema de arquivos distribuı́do que armazena e serve estes blocos de dados eficientemente nos nós de computação. Em Hadoop,
esta função é realizado pelo HDFS [HDFS 2010] que por sua vez é inspirado no projeto
do GFS [Ghemawat et al. 2003], sistema de arquivos que faz parte da implementação
Map/Reduce proposto pelo Google. Este capı́tulo conterá um resumo dos conceitos envolvidos no projeto do HDFS, com foco no modelo de consistência e interface de acesso
providos, uma vez que estes conceitos têm influência na maneira como aplicações são
desenvolvidas.
Previsão de páginas: 2.
2.2.3. Arquitetura do Hadoop: Escalonamento
Inicialmente, Hadoop foi projetado para executar grandes conjuntos de trabalho. Neste
cenário as tarefas eram executadas conforme a ordem de submissão. Entretanto novos
cenários de uso do Hadoop tornaram-se populares, entre eles tarefas interativas de pequena escala. Com isto, o escalonador do Hadoop passou a considerar a execução de
múltiplas tarefas, possivelmente com natureza diferentes, de maneira concorrente em uma
mesma instalação. Um benefı́cio direto desta nova abordagem de escalonamento é o aumento da utilização da instalação.
Dada esta potencial diversidade de cenários, o escalonador de tarefas de Hadoop
tornou-se um componente plugável. Este capı́tulo tratará dos escalonadores correntes para
cenários de múltiplos usuários: Fair Scheduler e Capacity Scheduler. Será dada diretrizes
que permitam a escolha entre um ou outro escalonador, bem como uma visão geral de seu
funcionamento.
Previsão de páginas: 2.
2.2.4. A infraestrutura Hadoop
A última parte do material didático do curso proposto será uma visão do arcabouço
Hadoop na perspectiva de administradores de sistema. Deste modo, será considerado
a instalação, configuração, operação e manutenção de uma instalação Hadoop. Isto inclui as atividades de instalação de dependências e configuração do ambiente tais como
a criação de novos usuários e atribuições de segurança. Ainda, serão contemplados procedimentos para testar a conformidade da instalação bem como benchmarks. Melhores
práticas para operação e manutenção serão discutidas, aı́ incluı́das atividades de monitoramento, logging, backups, adição e remoção de nós e procedimentos para atualizações. No
material didático, duas infraestruturas serão consideradas: a primeira usa recursos locais
e a segunda usando recursos de provedores de cloud computing.
Previsão de páginas: 3.
References
Acharya, A., Edjlali, G., and Saltz, J. (1997). The utility of exploiting idle workstations for parallel computation. ACM SIGMETRICS Performance Evaluation Review,
25(1):225–234.
Anderson, D. (2004). BOINC: A system for public-resource computing and storage. In
proceedings of the 5th IEEE/ACM International Workshop on Grid Computing, pages
4–10. IEEE Computer Society.
Cirne, W., Brasileiro, F., Andrade, N., Costa, L., Andrade, A., Novaes, R., and Mowbray,
M. (2006). Labs of the world, unite!!! Journal of Grid Computing, 4(3):225–246.
Dean, J. and Ghemawat, S. (2008). Mapreduce: simplified data processing on large clusters. Communications of the ACM, 51(1):107–113.
Ghemawat, S., Gobioff, H., and Leung, S.-T. (2003). The google file system. SIGOPS Operating Systems Review, 37(5):29–43.
Gonzalez, D., Gil, G., de Vega, F., and Segal, B. (2008). Centralized boinc resources manager for institutional networks. In Parallel and Distributed Processing, 2008. IPDPS
2008. IEEE International Symposium on, pages 1–8. IEEE.
Hadoop (2010). Hadoop. http://hadoop.apache.org.
Hbase (2010). Hadoop data base. http://hbase.apache.org/.
HDFS (2010). Hadoop distributed file system (hdfs). http://hadoop.apache.
org/hdfs.
Hive (2010). Hadoop hive. http://hive.apache.org/.
Korpela, E., Werthimer, D., Anderson, D., Cobb, J., and Leboisky, M. (2002). Seti@
home-massively distributed computing for seti. Computing in Science & Engineering,
3(1):78–83.
Mahout (2010). Scalable machine learning with hadoop. http://mahout.apache.
org/.
White, T. (2010). Hadoop: The Definitive Guide. Yahoo Press.
Curriculum dos Autores
Carla de Araujo Souza
Diretório de grupos de pesquisa
Bacharel em Ciência da Computação pela Universidade Federal de Campina Grande (2009).
Atualmente mestranda em Ciência da Computação pela Universidade Federal de Campina
Grande. Tem experiência na área de Ciência da Computação, com ênfase em Sistemas
Distribuídos e Administração de infraestrutura de TI.
(Texto informado pelo autor)
Última atualização do currículo em 05/05/2010
Endereço para acessar este CV:
http://lattes.cnpq.br/4317544927868756
Dados pessoais
Nome
Nome em citações
bibliográficas
Carla de Araujo Souza
SOUZA, C. A.
Sexo Feminino
Endereço profissional Universidade Federal de Campina Grande.
Aprígio Veloso, 882 - Laboratório de Sistemas DIstribuídos (Bloco CO)
Bodocongó
58109-970 - Campina Grande, PB - Brasil
Telefone: (83) 33101365
URL da Homepage: www.lsd.ufcg.edu.br
Formação acadêmica/Titulação
2010
Mestrado em andamento em Ciência da Computação (Conceito CAPES 4) .
Universidade Federal de Campina Grande, UFCG, Brasil.
Título: Não definido no momento, Orientador: Francisco Vilar Brasileiro e Walfredo Cirne.
Bolsista do(a): Coordenação de Aperfeiçoamento de Pessoal de Nível Superior, , .
Grande área: Ciências Exatas e da Terra / Área: Ciência da Computação / Subárea: Administração de Redes de
Computadores.
Grande área: Ciências Exatas e da Terra / Área: Ciência da Computação / Subárea: Sistemas de Computação.
2004 - 2009
Graduação em Ciência da Computação .
Universidade Federal de Campina Grande, UFCG, Brasil.
Título: Expansão do portfólio de virtualização do OurGrid.
2001 - 2003
Ensino Médio (2º grau) .
Colégio Imaculada Conceição - Damas.
Formação complementar
1996 - 2003
Inglês. (Carga horária: 720h).
Centro Cultural Anglo-Americano.
Atuação profissional
Google Inc., Google, Estados Unidos.
Vínculo institucional
2010 - Atual Vínculo: Institucional, Enquadramento Funcional: Estudante
Outras informações
Participação no programa Google Summer of Code na modalidade Estudante, atuando no projeto Open Source
Puppet.
Universidade Federal de Campina Grande, UFCG, Brasil.
Vínculo institucional
2008 - 2009
Outras informações
Vínculo: Estagiária, Enquadramento Funcional: Pesquisa e Desenvolvimento, Carga horária: 16
Pesquisa e Desenvolvimento na área de Sistemas Multi-Agentes
Vínculo institucional
Vínculo: Voluntária, Enquadramento Funcional: Administrador de Sistemas, Carga horária: 10
2006 - 2009
Outras informações
Membro voluntário do grupo Guardians, que trabalha na administração de rede e sistemas do Laboratório de
Ciência da Computação, situado na UFCG
Vínculo institucional
Vínculo: Estagiária, Enquadramento Funcional: Administrador de Sistemas, Carga horária: 20
2007 - 2008
Outras informações
Administração de toda infraestrutura de redes e sistemas do Laboratório de Sistemas Distribuídos, localizado na
UFCG
Atividades
02/2009 - 11/2009
Outras atividades técnico-científicas , Centro de Engenharia Elétrica e Informática, Departamento de Sistemas
e Computação.
Atividade realizada
Monitoria da disciplina Laboratório de Programação 2, sob orientação da professora Raquel Lopes Vigolvino.
07/2006 - 05/2007
Outras atividades técnico-científicas , Centro de Engenharia Elétrica e Informática, Departamento de Sistemas
e Computação.
Atividade realizada
Monitoria da disciplina Introdução à Ciência da Computação, sob orientação do professor Roberto Faria.
07/2005 - 06/2006
Outras atividades técnico-científicas , Centro de Engenharia Elétrica e Informática, Departamento de Sistemas
e Computação.
Atividade realizada
Monitoria da disciplina Introdução à Ciência da Computação, sob orientação do professor José Albos.
Áreas de atuação
1. Grande área: Ciências Exatas e da Terra / Área: Ciência da Computação / Subárea: Sistemas de Computação.
2. Grande área: Ciências Exatas e da Terra / Área: Ciência da Computação / Subárea: Administração de Sistemas.
3. Grande área: Ciências Exatas e da Terra / Área: Ciência da Computação / Subárea: Administração de Redes de
Computadores.
4. Grande área: Ciências Exatas e da Terra / Área: Ciência da Computação / Subárea: Sistemas de Computação /
Especialidade: Sistemas Distribuídos.
5. Grande área: Ciências Exatas e da Terra / Área: Ciência da Computação / Subárea: Sistemas de Computação /
Especialidade: Virtualização.
Idiomas
Inglês
Português
Compreende Bem, Fala Razoavelmente, Lê Bem, Escreve Bem.
Compreende Bem, Fala Bem, Lê Bem, Escreve Bem.
Produção em C,T & A
Produção bibliográfica
Trabalhos completos publicados em anais de congressos
1.
SOUZA, C. A. ; LACERDA, A. ; SILVA, J ; CUNHA, T ; SOARES, A ; BRASILEIRO, F . BeeFS: Um Sistema de Arquivos
Distribuído POSIX Barato e Eficiente para Redes Locais. In: XXVIII Simpósio Brasileiro de Redes de Computadores e Sistemas
Distribuído, 2010, Gramado - RS. Anais do XXVIII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos (Salão de
Ferramentas), 2010. v. 1. p. 1-8.
Produção técnica
Trabalhos técnicos
1.
Eventos
SOUZA, C. A. . Suporte à Implantação e Teste do BeeFS. 2009.
Eventos
Participação em eventos
1. Latin-American Symposium on Dependable Computing. 2009. (Simpósio).
Página gerada pelo Sistema Currículo Lattes em 14/12/2010 às 16:34:06
Download

Minicurso Map/Reduce: Execuç ˜ao Eficiente e Paralela de Aplicaç