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