paper:37 Uma Abordagem de Classificação não Supervisionada de Carga de Trabalho MapReduce Utilizando Análise de Log Ivan Luiz Picoli¹, Eduardo Cunha de Almeida¹ Nível: Mestrado; Ano de Ingresso: 2013; Data da defesa de proposta: 19/05/2014; Época esperada de conclusão: Início de 2015 1 Programa de Pós-Graduação em Informática Departamento de Informática Universidade Federal do Paraná (UFPR) PR Brasil ilpicoli@inf.ufpr.br, eduardo@inf.ufpr.br Etapas já concluídas: Estudo sobre o estado da arte, definição do tema, definição do problema, definição da solução, desenvolvimento da ferramenta, implementação do algoritmo de classificação K-Means, classificação de logs hadoop/hive, experimentos preliminares, defesa da proposta, implementação da ferramenta. Etapas futuras: Término da implementação do mecanismo proposto; implementação de outros algoritmos de classificação; implementação de outras entradas de dados; classificação de logs de outros sistemas mapreduce; execução de experimentos em base de treinamento, teste e validação; defesa da dissertação. Abstract. Performance tuning in MapReduce query processing systems is a current hot topic in database research. Solutions such as Starfish and AutoConf provide mechanisms to tune MapReduce queries by changing the values of the configuration parameters for each job on the query plan. The goal of this paper is showing an approach for parameter tuning in MapReduce systems by using unsupervised machine learning. With this approach, we can trace the correct use of resources required by MapReduce jobs in order to improve performance tuning of similar upcoming jobs. Resumo. Ajuste de desempenho no processamento de consultas em MapReduce é um tópico crescente na pesquisa em banco de dados. Soluções como Starfish e AutoConf possuem mecanismos que ajustam as consultas modificando os valores dos parâmetros de configuração das tarefas no plano de consulta, melhorando o desempenho. O objetivo do trabalho é apresentar uma abordagem de ajuste de parâmetros de configuração utilizando aprendizagem de máquina não supervisionado. A abordagem será capaz de encontrar o real uso de recursos exigidos pelas tarefas, possibilitando então, o ajuste de parâmetros em futuras execuções de tarefas semelhantes. Palavras-chave: MapReduce, query processing, parameter tuning, machine learning. 1. Introdução O paradigma de programação MapReduce, desenvolvido em 2004 pela Google Inc., [Dean and Ghemawat 2004], foi projetado para simplificar as tarefas de processamento distribuído que necessitavam de escalabilidade linear. As principais características são relacionadas a tornar transparente a programação distribuída. Dentre 353
estas características, encontramos: o gerenciamento de falhas, redundância dos dados, e transferência de informações; balanceamento de carga; e a escalabilidade. O MapReduce é baseado na estrutura de dados em formato de chave/valor, estrutura que vem sendo cada vez mais utilizada entre os novos sistemas de banco de dados. Entre os sistemas baseados em MapReduce estão o Hadoop, Disco, Spark, Hadapt e Impala. Processos de análise de dados e plataformas em nuvem podem ser reduzidas às aplicações MapReduce, juntamente com o seu ecossistema de aplicações. O desempenho das aplicações MapReduce está ligado diretamente aos parâmetros de configuração, e o correto ajuste desses parâmetros faz com que as aplicações aloquem recursos computacionais distribuídos de maneira mais eficiente. Diversos fatores influenciam no desempenho de aplicações MapReduce, como por exemplo a leitura e escrita em disco que torna-se custoso devido ao sistema de arquivos estar fragmentado na rede. Tarefas com diferentes usos de recursos requerem configurações diferentes em seus parâmetros para que haja diminuição no tempo de resposta da aplicação. Um software autoajustável, o qual ajusta parâmetros de acordo com a carga de trabalho é uma solução para a diminuição do tempo de processamento. 2. Fundamentação Teórica O MapReduce auxilia no processamento do tipo OLAP (On-line Analytical Processing), porém há um grande desafio em manter um bom desempenho neste tipo de sistema. Considere várias tarefas chegando a um cluster MapReduce onde cada uma delas possui características diferentes como o tamanho dos dados de entrada e o consumo de recursos de memória, disco, rede e processador. A mudança dos parâmetros ligados ao uso desses recursos afeta diretamente o desempenho da execução das tarefas, pois gerenciam o fluxo de informações entre os nodos do sistema distribuído. O ajuste de parâmetros pode ser aplicado para otimização, e pode ser feito de duas formas, pelo administrador do cluster MapReduce manualmente, ou automaticamente por uma ferramenta de autoajuste. Dentre as abordagens de autoajuste de parâmetros de desempenho do Hadoop, se encontram o StarFish (otimização de parâmetros e geração de perfis de uso de recursos), [Herodotou 2011], Stubby (análise de fluxo de trabalho), [Lim, Herodotou e Babu 2012], e AutoConf (modificação de parâmetros em tempo de execução), [Lucas Filho 2013]. A geração de perfis consiste em coletar informações sobre a execução de uma tarefa e criar o que chamamos de perfil, contendo todas as informações coletadas. Essa abordagem é importante, pois através de buscas e análises nas informações coletadas é possível ajustar os parâmetros de sistemas MapReduce, [Herodotou 2011]. Starfish é um sistema que foi criado para determinar um perfil às tarefas do Hadoop e oferecer ao administrador do sistema melhores configurações de parâmetro, porém, monitora a tarefa durante sua execução, consumindo recursos que seriam utilizados pela tarefa. Sistemas como o Mochi e o Rumen analisam os logs do Hadoop com a finalidade de mostrar ao administrador informações relevantes sobre o ambiente, como: tempo total de execução, volume de dados processados e tarefas falhas. Porém, esses sistemas apenas mostram o uso de recursos, cabendo ao administrador tomar as decisões. Outra ferramenta abordada é o AutoConf, desenvolvido para otimização de consultas do 354
sistema de Data Warehouse Apache Hive, [Thusoo 2009]. O AutoConf realiza a análise dos operadores (TableScan, GroupBy, etc.) utilizados em cada estágio da consulta e extrai uma assinatura de código para esses estágios (i.e. ocorrência de operadores de consulta no código fonte). Cada assinatura possui uma configuração de parâmetros associada, a qual é aplicada em tempo de execução no Hadoop antes das tarefas serem executadas. Os grupos de tarefas classificados a partir das assinaturas de código recebem o nome de grupos de intenção. Nossa abordagem amplia as funcionalidades dos sistemas citados, analisando a tarefa após a execução e possibilitando o ajuste de parâmetros em tarefas futuras, sem consumir recursos para análise durante a execução. Utilizando automaticamente as informações coletadas dos logs, a abordagem proposta visa encontrar o real uso de recursos computacionais de uma tarefa. Figura 1. AutoConf em meio ao ecossistema do Hive e Hadoop [Autoria Própria] A Figura 1 mostra a arquitetura do AutoConf. Em (1) as Interfaces de Usuário submetem uma consulta HiveQL; Após o Hive gerar e otimizar o plano de consulta, em (2) os estágios da consulta (tarefas) são enviados ao Hadoop; O JobTracker antes de ordenar a execução em (3) envia a consulta ao AutoConf; Após a extração da assinatura de código e a associação com a configuração correta, em (4) o AutoConf envia ao Job- Tracker os valores de parâmetros a serem ajustados; Por fim o JobTracker ajusta os parâmetros e ordena a execução da tarefa que agora possui as configurações ajustadas. 3. Caracterização da Contribuição Classificar tarefas MapReduce antes da execução exige a extração de informações através de regras (abordagem AutoConf), resultando em dados menos precisos do que se a análise fosse realizada após a execução. Ao trabalhar com dados incertos, as tarefas MapReduce podem ser classificadas erroneamente, e os parâmetros de configuração receberão valores inapropriados. Para que as tarefas MapReduce sejam ajustadas de forma mais precisa, propomos encontrar o uso real de recursos computacionais que as tarefas exigem do sistema, auxiliando em futuras execuções. Para tal, propomos uma abordagem de classificação de tarefas MapReduce que possuam informações de uso de recursos persistidos em arquivos de log de execução. Realizaremos a análise dos logs através do uso de algoritmos de classificação não supervisionada. Os algoritmos irão gerar como 355
resultado classes que determinam o uso de recursos que foram utilizados pelas tarefas. Nossa hipótese é que grupos de tarefas que possuam o mesmo uso de recursos podem receber a mesma configuração de parâmetros. Então, através de nossa abordagem qualquer tarefa MapReduce submetida para execução e que se assemelhe às tarefas já classificadas, poderão receber o mesmo ajuste de parâmetros. 4. Uma Abordagem de Classificação Não Supervisionada de Análise de Log Propomos as seguintes contribuições nesta dissertação de mestrado: Objetivo: Aumentar a representatividade da classificação das tarefas utilizando algoritmos de classificação não supervisionados; Desafio: Validar o uso do algoritmo K-Means para classificação através da comparação dos valores de uso de recursos encontrados com o real uso encontrado por monitoramento; Objetivo: Viabilizar um mecanismo de troca de algoritmo de classificação e de entradas de log para comparações futuras e implementação em mais de um framework MapReduce; Desafio: Criar uma arquitetura que possibilite a troca do algoritmo e das entradas de log; Objetivo: Auxiliar com mais precisão no ajuste de parâmetros de sistemas MapReduce, como: Hive e PIG, [Olston 2008]; Desafio: Avaliar a qualidade dos parâmetros. 4.1. Algoritmos de Classificação A classificação é uma das técnicas de mineração de dados e sua função é agrupar os dados com características comuns. A classificação supervisionada pode ser utilizada quando se sabe a natureza dos dados a serem analisados e os mesmos encontram-se préclassificados. Quando não se conhece a natureza dos dados utiliza-se classificação não supervisionada, onde não é preciso informar nenhuma informação prévia dos registros (no nosso caso, os logs). 4.2. Abordagem de Classificação de Logs MapReduce Nosso objetivo é apresentar uma abordagem de classificação não supervisionada de uso de recursos de tarefas MapReduce através da análise de logs. A vantagem que propomos nesse trabalho é o possível uso de diversos algoritmos de classificação na análise dos logs, ou seja, uma abordagem extensível de classificação. Também propomos a possível implementação da abordagem em qualquer framework MapReduce que gere arquivos de log. A Figura 2 mostra os componentes de nossa abordagem, destacados pela linha pontilhada. Na Figura 2, podemos visualizar a geração dos chamados grupos de comportamento, esses grupos são encontrados pelo algoritmo de classificação e os valores de seus centróides equivalem ao uso médio de recursos das tarefas pertencentes ao mesmo grupo. Cada grupo de comportamento recebe uma configuração de parâmetros que poderá ser aplicada em tarefas classificadas. 356
Figura 2. Nossa abordagem em meio ao ecossistema MapReduce [Autoria Própria] Neste trabalho nos baseamos no algoritmo de classificação K-means [Aggarwal 2010], e pode ser descrito em cinco passos, descritos pelo Algoritmo 1 no estudo de caso ao analisar logs. Algoritmo 1. Algoritmo K-Means em um estudo ao analisar logs [Autoria Própria] No Algoritmo 1, os vetores C e LC armazenam o resultado final da classificação. C contém as classes que representam o uso dos recursos computacionais, onde os recursos são representados pelas dimensões dim_x. LC contém a referência para os logs e a qual classe eles pertencem após a classificação. 4.3. Protótipo Na implementação do protótipo, integramos nossa abordagem com a arquitetura do AutoConf e nomeamos o novo software de Chameleon. Essa proposta possui apenas a implementação do algoritmo K-Means. Essa estratégia irá complementar o AutoConf na otimização de consultas do Hive não somente pela assinatura de código, mas também através da comparação da tarefa com os grupos de comportamento gerados pela nossa abordagem. A Figura 3 mostra a arquitetura do Chameleon, e podemos visualizar os módulos de análise de log e um banco de dados (Workload Database) que armazena os resultados da classificação inseridos na arquitetura da Figura 1. 357
Figura 3. Chameleon e o ecossistema do Hadoop [Autoria Própria] Tendo como base o funcionamento dos módulos e o objetivo do Chameleon na otimização das consultas do Hive, vê-se necessário uma forma de integração com o AutoConf. A conexão será feita após a identificação da assinatura de código e antes da aplicação da nova configuração. É realizada uma chamada remota ao módulo responsável por determinar a configuração, que será aplicada a partir dos grupos de comportamento e não mais a partir dos grupos de intenção do AutoConf. O método pode ser visualizado no Algoritmo 2, que mostra o processo de ajuste utilizando os grupos de comportamento. Algoritmo 2. Aplicação da configuração pelos grupos de comportamento [Autoria Própria] No Algoritmo 2 ao chamar o método remoto, o AutoConf envia ao método um histórico de tarefas (I={j 0,...,j n }) que utilizaram a mesma configuração da tarefa a ser ajustada (j n +1), ou seja, que possuam a mesma assinatura de código (grupo de intenção). Como essas tarefas de histórico já foram completadas, elas possuem logs que estarão armazenados no Workload Database, e então o Clustering (módulo responsável pela classificação) gera uma lista chave/valor (C) onde a chave é o identificador do grupo de comportamento e o valor é a quantidade de logs que foram enviados pelo AutoConf e que estão relacionados ao grupo. Esses dados são adquiridos ao analisar as duas tabelas citadas (intenção e comportamento) e podemos visualizar a geração da lista no laço entre as linhas 4 e 7 do Algoritmo 2. O retorno do método remoto é o identificador do grupo de comportamento o qual a tarefa a ser ajustada se enquadra, ou seja, o grupo que mais obteve ocorrências de tarefas vindas do grupo de intenção (linha 8 e 9 do Algoritmo 2). Em seguida, o AutoConf aplica a configuração relacionada ao grupo de comportamento encontrado. 358
5. Resultados Preliminares e estado atual do Trabalho O trabalho está na fase inicial dos experimentos. Neste seção apresentamos resultados preliminares da nossa abordagem de classificação não supervisionada. Em nossos experimentos foram extraídos 1505 logs de tarefas executadas em um cluster MapReduce com 10 máquinas idênticas. Os logs foram gerados através da execução do benchmark TPC-H adaptado para HiveQL. O TPC-H foi escolhido por possuir um grupo de consultas capaz de exercitar um data warehouse de formas distintas. Cada tarefa executada possui um arquivo de log contendo mais de 60 tipos de informações, e em nossos testes utilizamos cinco informações que estão descritas na Tabela 1, resultando em cinco entradas para cada um dos 1505 arquivos de log na execução do algoritmo. Foram realizados experimentos variando o número de classes do algoritmo e também as informações utilizadas. A Tabela 1 mostra os resultados de um dos testes. Tabela 1. Algoritmo K-Means agrupando logs Hadoop com 8 grupos [Autoria Própria] Podemos descrever as próximas tarefas de testes e experimentos em: execução de testes com o Hadoop+AutoConf e comparação com Hadoop+Abordagem utilizando K-Means; validação dos resultados comparando o uso de recursos encontrados com dados de monitoramento de uso de hardware no momento da execução das tarefas; repetir o experimento utilizando outra carga de dados além do TPC-H para validação. 6. Referências Aggarwal, Sonali e Phadke, Shashank e Bhandarkar, Milind A. Characterization of hadoop jobs using unsupervised learning. CloudCom, 2010, pages 748 753. Dean, J e Ghemawat, S. MapReduce: Simplified data processing on large clusters. 6 Th OSDI, 2004, pages 137 150. Herodotou, H. e Lim, H. e Luo, Gang e Borisov, N. e Dong, Liang e Cetin, F. B. e Babu, S. Starfish: A self-tuning system for big data analytics. CIDR, 2011. Lim, H e Herodotou, H e Babu, S. A transformation-based optimizer for mapreduce workflows. VLDB, 2012. Lucas Filho, Edson Ramiro. HiveQL self-tuning Curitiba, 2013. 44f. : il. color. ; 30 cm. Dissertation (master) UFPR, Pos-graduate Program in Informatics, 2013. Olston, C. e Reed, B. e Srivastava, U. e Kumar, R. e Tomkins, A. Pig latin: A not-soforeign language for data processing. SIGMOD, 2008. Thusoo, A. e Sarma, J. S. e Jain, N. e Shao, Z. e Chakka, P. e Anthony, S. e Liu, Hao e Wycko, P. e Murthy, R. Hive - a warehousing solution over a mapreduce framework. VLDB, 2009. 359