Академический Документы
Профессиональный Документы
Культура Документы
CENTRO DE TECNOLOGIA
CURSO DE CINCIA DA COMPUTAO
TRABALHO DE GRADUAO
Adriano Pereira
por
Adriano Pereira
A vida uma tragdia quando vista de perto, mas uma comdia quando vista
de longe.
C HARLES C HAPLIN
AGRADECIMENTOS
RESUMO
Trabalho de Graduao
Curso de Cincia da Computao
Universidade Federal de Santa Maria
MINERAO DE DADOS DISTRIBUDA E ESCALVEL USANDO APACHE
MAHOUT
Autor: Adriano Pereira
Orientador: Profa . Andrea Schwertner Charo
Local e data da defesa: Santa Maria, 06 de Dezembro de 2010.
Grandes volumes de dados vm sendo gerados por ferramentas computacionais. Nestes dados, podem haver padres implcitos, a partir dos quais pode ser possvel extrair
novos conhecimentos. A minerao de dados preocupa-se com a busca de relaes, especialmente, em grandes quantidades de dados, possibilitando a extrao de novas informaes teis. O uso de computao distribuda permite a descentralizao dos dados e a
acelerao do processo de minerao. Apache Mahout uma ferramenta para a minerao de dados distribuda, que faz uso do modelo de programao MapReduce, prometendo
escalabilidade ao dividir a carga de trabalho em tarefas independentes entre si. Este trabalho tem como objetivo verificar o desempenho do Apache Mahout, atravs da seleo de
algoritmos implementados pela ferramenta, preparao de um conjunto de dados, e execuo destes algoritmos, neste conjunto de dados, em diferentes ambientes distribudos,
analisando a escalabilidade da ferramenta, quanto ao ganho de desempenho em relao
ao acrscimo de nodos ou ncleos ao processamento.
ABSTRACT
Trabalho de Graduao
Undergraduate Program in Computer Science
Universidade Federal de Santa Maria
SCALABLE AND DISTRIBUTED DATA MINING WITH APACHE MAHOUT
Author: Adriano Pereira
Advisor: Profa . Andrea Schwertner Charo
Huge data sets have been generated from computing tools. Implicit patterns could
be present in this data. Data mining worries in look for relationship, specially, in large
data sets, enabling the extration of useful new information. Distributed computing allows
the data decentralization and speeds up the data mining process. Apache Mahout is a
distributed data mining tool, which uses MapReduce program model, promising scalability by spliting the workload in independents tasks, among themselves. This work has
as objective to verify Apache Mahouts performance, through a implemented algoritms
choice, data set preparation and mining of these data in differents distributed environments, analyzing the tools scalability, as the performance improvement due to nodes or
cores addition to the processing.
LISTA DE FIGURAS
30
33
33
34
36
42
42
43
43
44
45
45
Figura 4.1
Figura 4.2
Figura 4.3
Figura 4.4
Figura 4.5
Figura 4.6
Figura 4.7
Figura 4.8
46
46
47
48
49
49
50
50
LISTA DE TABELAS
Tabela 4.1
Tabela 4.2
Tabela 4.3
Tabela 4.4
Tabela 4.5
Tabela 4.6
Tabela 4.7
Tabela 4.8
39
41
42
44
46
47
48
49
API
ARFF
CPD
CF
Collaborative Filtering
CRISP-DM
CSV
Comma-Separated Values
FPG
Parallel FPGrowth
FPM
HDFS
PUCRS
JAR
Java ARchive
JVM
LAD
SSH
Secure Shell
UFSM
URI
SUMRIO
1 INTRODUO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1
Justificativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2
Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3
Estrutura do Texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
14
15
15
2 FUNDAMENTAO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1
Minerao de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.1
Descoberta do Conhecimento em Bases de Dados . . . . . . . . . . . . . . . . . . . . . . . .
2.1.2
Modelo de Processo CRISP-DM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.3
Pr-processamento dos dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.4
Tarefas de Minerao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2
Minerao de Dados Distribuda e Escalvel . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.1
Conceituao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.2
Ferramentas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3
Ferramentas Utilizadas no Trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.1
Apache Hadoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.2
Apache Mahout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
16
17
17
19
22
23
23
24
25
25
27
3 DESENVOLVIMENTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1
Instalao e Configurao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.1
Requisitos do Apache Mahout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.2
Requisitos do Apache Hadoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.3
Configurao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2
Escolha dos Algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3
Utilizao do Mahout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4
Preparao dos Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4.1
Integrao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4.2
Transformao dos Dados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
29
30
31
31
32
34
35
36
36
4 RESULTADOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1
Ambientes de Teste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2
Casos de Teste e Desempenho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.1
Caso I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.2
Caso II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.3
Caso III . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3
Avaliao dos Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
39
40
41
42
45
50
CONCLUSO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
REFERNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
APNDICE A
CDIGOS FONTE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
INTRODUO
A evoluo da tecnologia de informao, a partir da dcada de 60, transformou sistemas simples de processamentos de arquivos em sofisticadas bases de dados. O progresso
contnuo das tecnologias de hardware visualizado nas ltimas trs dcadas culminou com
a criao de poderosas ferramentas computacionais. Estas ferramentas impulsionaram a
indstria de informao, gerando uma grande quantidade de bases de dados (HAN; KAMBER, 2006). O crescimento da quantidade de dados disponveis ocorre em todas as reas
de esforo humano, como em dados de transaes de mercado, uso de cartes de crdito,
detalhes de chamadas de telefone, estatsticas de governo, bases de dados moleculares e
registros mdicos (HAND; MANNILA; SMYTH, 2001).
Com a disponibilidade de grandes volumes de dados digitais, surge interesse em investigar teorias e ferramentas para auxiliar a extrao de informao e conhecimento teis
deles (FAYYAD; PIATETSKY-SHAPIRO; SMYTH, 1996). Manter bases de dados apenas para realizao de consultas e processamento de transaes no mais visto de maneira satisfatria. Dessa forma, o prximo alvo trata da investigao avanada dos dados
(HAN; KAMBER, 2006), a partir da qual possvel encontrar relaes e padres implcitos, descobrindo informaes teis. Neste ponto est a minerao de dados, um processo
de descoberta de novas relaes, tendncias e padres significativos, atravs da filtragem
de grandes quantidades de dados armazenados em repositrios, utilizando tecnologias de
reconhecimento de padres, matemticas e estatsticas (LAROSE, 2005).
Diferentes razes levam distribuio geogrfica dos dados de interesse, como questes de segurana e uso de diferentes bases de dados, tornando invivel a aplicao centralizada dos processos de minerao (KARGUPTA et al., 1999). O uso de tcnicas centralizadas no adequado aos cenrios atuais, devido complexidade das tarefas de minerao. Nestes caso, tcnicas de sistemas distribudos podem ser utilizadas, possibilitando
14
1.1 Justificativa
Este trabalho justifica-se ao passo da necessidade visualizada para a execuo de algoritmos de minerao de dados, utilizando ferramentas computacionais. Tcnicas e ferramentas de minerao de dados so utilizadas em vrios tipos de aplicao, como em
marketing, vendas, aplicaes mdicas e processo de controle industrial (BERRY; LINOFF, 2004).
Com o surgimento de novas tecnologias, dispostas a implantar a minerao de forma
distribuda, visualiza-se a necessidade da realizao de testes, para verificar o comportamento, quanto ao desempenho, dessas novas abordagens. A partir da escolha de algoritmos de minerao, preparao de um conjunto de dados e execuo destes algoritmos,
analisando o conjunto de dados preparado, em diferentes ambientes distribudos, pode-se
verificar o desempenho da ferramenta.
A escolha pela ferramenta Apache Mahout deu-se em funo de ser uma soluo
recente, distribuda como cdigo fonte aberto, e que faz uso do modelo de programao
MapReduce para a implementao dos algoritmos, prometendo, com isso, ser escalvel.
15
1.2 Objetivos
Este trabalho tem como objetivo geral investigar a ferramenta Apache Mahout como
soluo para minerao de dados distribuda e escalvel. Para realizar esta anlise, ser
feita a preparao de um conjunto de dados a serem minerados, escolhidos e executados
algoritmos de minerao implementados pela ferramenta, e feita a anlise do desempenho
obtido em diferentes ambientes de execuo.
Especificamente, o trabalho tem como objetivos:
Estudar o funcionamento do Apache Mahout, identificando os algoritmos suportados pela ferramentas e os requisitos para seu funcionamento em ambientes centralizado e distribudo;
Selecionar um conjunto de algoritmos de minerao implementados pela ferramenta;
Preparar uma fonte de dados, selecionando e convertendo os dados de forma a serem
suportados pela ferramenta; e
Avaliar os resultados de desempenho obtidos, a partir da execuo do aplicativo em
diferentes ambientes distribudos.
2 FUNDAMENTAO
Neste captulo esto descritos conceitos tericos que fundamentam este trabalho, assim como as ferramentas utilizadas para o desenvolvimento dele.
17
18
19
transformaes nestes dados, que tambm devem ser limpos para que estejam apropriados para as ferramentas de modelagem. A fase de preparao compreende os passos de
seleo, limpeza, construo, integrao e formatao dos dados.
Modelagem a quarta fase do processo CRISP-DM. Nesta etapa, so selecionadas
tcnicas de modelagem, e suas configuraes so calibradas para otimizar os resultados.
Em geral, mais de uma tcnica pode ser utilizada para o mesmo problema de minerao
de dados. Algumas delas necessitam que os dados estejam em um formato especfico;
portanto, pode ser necessrio voltar fase de preparao dos dados. Os passos envolvidos
nesta etapa abrangem a seleo da tcnica de modelagem, a gerao de caso de teste,
criao e avaliao de modelos.
Na quinta fase, avaliao, verifica-se se os modelos escolhidos na fase de modelagem
esto de acordo com os objetivos do negcio, avaliando-os em termos de efetividade e
qualidade. Por fim, pode-se decidir sobre a utilizao dos resultados da minerao. A
fase de avaliao conta com os passos de avaliao dos resultados, reviso do processo e
determinao dos passos posteriores.
A ltima fase do processo o desenvolvimento, onde feito uso do modelo gerado
anteriormente. Nesta etapa, o conhecimento descoberto deve ser apresentado de modo
que o interessado na minerao tome conhecimento das formas em que pode utilizar este
conhecimento. Os passos da sexta fase do processo so: planejar o desenvolvimento, o
monitoramento e a manuteno, produzir o relatrio final e revisar o projeto.
2.1.3 Pr-processamento dos dados
necessrio preparar os dados para a minerao, pois, em geral, eles tendem a ser
incompletos, inconsistentes, e contem rudos (HAN; KAMBER, 2006). A minerao de
dados muitas vezes realizada em bases com dados antigos, nas quais h campos expirados, no mais relevantes ou, ainda, faltam valores. Com o pr-processamento, espera-se
minimizar o "lixo" que entra na anlise, para minimizar a sada de "lixo" no resultado
(LAROSE, 2005). Dados incompletos podem ocorrer em virtude da ausncia de atributos
de interesse minerao, ou do desinteresse por estes atributos no momento da modelagem ou insero dos dados. Rudos so referentes a atributos contendo valores incorretos,
o que pode acontecer por erro de mquina ou mesmo erros humanos durante a entrada dos
dados. A inconsistncia dos dados pode ocorrer em virtude do uso de diferentes fontes de
20
21
22
garantindo a integridade e corretude dos dados (BERNARDI, 2010), para que o processo
de minerao possa ser executado corretamente, possibilitando s etapas posteriores a
extrao de conhecimento til.
2.1.4 Tarefas de Minerao
Com base nos objetivos da anlise dos dados, pode-se categorizar a minerao de
dados em tipos de tarefas (HAND; MANNILA; SMYTH, 2001). A seguir so descritas
os tipos de tarefa comumente classificados:
Agrupamento (clustering), consiste no agrupamento de registros em classes de objetos
similares. Denomina-se cluster um conjunto de registros similares entre si, e diferentes dos registros presentes nos outros clusters. A tarefa de agrupamento busca
segmentar a entrada de dados em subgrupos (clusters) homogneos, maximizando a
similaridade entre os registros de um mesmo cluster, e minimizando a similaridade
entre registros de diferentes clusters (LAROSE, 2005).
Classificao (classification), trata da classificao de registros em relao a uma varivel de categoria. A partir dessa varivel, so delimitadas classes discretas, s quais
estaro relacionados os registros da base de dados analisada. Primeiramente, realizada uma anlise dos dados j classificados, a partir dos quais possvel "aprender"
o mtodo utilizado para classificar os registros (LAROSE, 2005); feito isso, possvel examinar as caractersticas de novos registros, associando-os, devidamente, a
uma das classes pr-definidas (BERRY; LINOFF, 2004).
Estimativa (estimation), consiste em estimar o valor de uma varivel desconhecida em
um novo registro. Pode-se considerar que se trata de uma tarefa de classificao
com valores contnuos, enquanto que a classificao em si trata de valores discretos
(BERRY; LINOFF, 2004). A estimativa realizada a partir da anlise das variveis
conhecidas do registro, em relao aos valores dos registros j presentes na base de
dados (LAROSE, 2005).
Predio (prediction), tarefa semelhante classificao e estimativa, porm com os
valores previstos para o futuro. Pode-se considerar uma adaptao das tcnicas
de estimativa e classificao, onde os casos de treinamento utilizam histricos dos
23
valores dos registros. Os comportamento histrico dos dados utilizado na construo do modelo, de forma que, quando o modelo utilizado em novos registros,
o resultado uma previso para o futuro (BERRY; LINOFF, 2004).
Associao (association), busca descobrir relaes entre dois ou mais atributos, verificando quais deles "devem estar juntos" (LAROSE, 2005). Tambm conhecida
como grupos de afinidade, uma abordagem simples para gerar regras a partir de
dados (BERRY; LINOFF, 2004).
Descrio (description), consiste em descrever padres e tendncias em um conjunto de
dados, possibilitando explicaes acerca desses padres e tendncias (LAROSE,
2005). Uma boa descrio pode, ao menos, sugerir por onde comear a busca por
explicaes a respeito dos dados (BERRY; LINOFF, 2004).
Recomendao (recommendation), atravs da anlise dos dados, auxilia usurios recomendando itens, que possam vir a ser de interesse (SARWAR et al., 2001).
24
LOURIS; DOLLIMORE; TIM, 2000). Segundo Jogalekar e Woodside (2000), um sistema considerado escalvel se pode ser implementado efetiva e economicamente sobre
uma srie de diferentes "tamanhos", devidamente definidos.
Escalabilidade est relacionada com o aumento do desempenho de um sistema, em
virtude de seu crescimento. Em aplicaes de minerao de dados, escalabilidade significa tirar proveito do gerenciamento de bases de dados paralelas e processadores adicionais, possibilitando trabalhar com volumes maiores de dados, construir mais modelos e
aumentar sua corretude apenas adicionando processadores. Idealmente, a escalabilidade
deveria ser linear: dobrando o nmero de processadores, o processo deveria ser executado
na metade do tempo original (SMALL; EDELSTEIN, 1997).
2.2.2 Ferramentas
Exites vrias ferramentas que implementam algoritmos de minerao de dados de
forma distribuda. Em sua maioria, as ferramentas tentam utilizar a ferramenta Weka
em ambientes distribudos, tornando paralelas algumas de suas operaes (WEGENER
et al., 2009). Em seguida, so listadas algumas ferramentas para minerao de dados
distribuda:
Weka-Parallel, trata-se de uma modificao da ferramenta Weka, permitindo a execuo da minerao de dados em ambientes distribudos, atravs da implementao
paralela da metodologia de validao cruzada. Tcnicas de classificao, regresso,
agrupamento e seleo utilizam a metodologia de validao cruzada, a qual inerentemente paralelizvel. Assim como a ferramenta Weka, Weka-Parallel escrita
em linguagem de programao Java (CELIS; MUSICANT, 2002).
Grid-enabled Weka, realiza a minerao de dados de forma distribuda, atravs da distribuio da execuo das tarefas, em um ambiente de grade. A arquitetura do
Grid-enabled Weka baseada em vrios servidores que realizam a execuo da minerao de tarefas. Estas tarefas so divididas e distribudas, entre os servidores
disponveis, pelos clientes (KHOUSSAINOV; ZUO; KUSHMERICK, 2004).
Weka4WS, um framework que estende a ferramenta Weka, suportando minerao de
dados distribuda em ambientes de grade, de modo a explorar a distribuio dos
dados e aumentar o desempenho da aplicao. Para permitir a minerao distri-
25
26
27
28
Em virtude de sua implementao utilizar o framework MapReduce do Apache Hadoop e o sistema de arquivos distribudos HDFS, os algoritmos do Apache Mahout podem
ser executados em ambientes distribudos e escalveis, desde que o Apache Hadoop esteja configurado. Sem a configurao do Apache Hadoop, a computao ser centralizada
localmente.
O termo escalvel da definio da ferramenta est relacionado com suporte a grandes
conjuntos de dados, em virtude de seus algoritmos de minerao serem implementados
sobre a ferramenta Apache Hadoop, utilizando o paradigma MapReduce; com os casos
de interesse dos usurios, devido ao uso de uma licena comercialmente amigvel; e comunidade desenvolvedora e utilizadora da ferramenta (The Apache Software Foundation,
2010a).
A ferramenta Apache Mahout oferece uma Application Programming Interface (API),
para a utilizao de seus algoritmos no desenvolvimento de mineradores de dados. Ela
est implementada em linguagem de programao Java. A ferramenta tambm pode ser
utilizada atravs de um executvel em linha de comando, a partir do qual possvel realizar a minerao de dados. Ambas formas de utilizao suportam execuo distribuda e
local.
DESENVOLVIMENTO
Este captulo ir descrever os passos realizados durante o desenvolvimento deste trabalho. Com base nas etapas descritas pela metodologia CRISP-DM, para alcanar os
objetivos deste trabalho, devem ser realizados os passos de preparao dos dados e modelagem. Primeiramente, o captulo descrever os requisitos para instalar e configurar as
ferramentas Apache Mahout e Apache Hadoop. Em seguida, sero expostos os algoritmos implementados pelo Mahout que foram selecionados para a execuo dos testes, e
justificada essa escolha. Ento, sero tratadas as formas de utilizao do Mahout, como
uma API Java e como um aplicativo em linha de comando. Por fim, sero abordadas as
tarefas executadas para a preparao dos dados a serem minerados.
30
jobs, contendo tasks de map e reduce, escalonadas pelo JobTracker entre os TaskTrackers.
Por fim, a sada da minerao obtida em um conjunto de arquivos, salvos no HDFS. A
figura 3.1 ilustra esse tipo de situao.
Figura 3.1: Ambiente distribudo com Apache Hadoop executando Apache Mahout
A seguir, so descritos os requisitos necessrios para o correto funcionamento das
ferramentas Apache Mahout e Apache Hadoop.
3.1.1 Requisitos do Apache Mahout
Com relao linguagem de programao, Apache Mahout escrito em Java. Portanto, necessrio que o dispositivo computacional onde ele ser executado possua uma
Mquina Virtual Java (JVM). Recomenda-se o uso de verses superiores a 1.6.0 para a
JVM.
Para que o Mahout seja executado de forma distribuda, necessrio que o ambiente computacional esteja configurado, corretamente, com o Apache Hadoop, em verso
0.20.0 ou superior. Dessa forma, os requisitos so os da ferramenta Apache Hadoop, descritos na prxima seo. Para executar o Mahout de forma centralizada, no necessrio
que o Hadoop esteja configurado.
Requisitos de hardware, como processador, tamanho em disco e memria, so dependentes da aplicao que utilizar o Mahout, no havendo padro pr-definido (The
31
32
autenticao de chave pblica. Para tanto, deve-se criar chave pblica para o nodo mestre
do sistema, onde esto executando NameNode e JobTracker, e adicion-la na lista de
chaves conhecidas pelos nodos escravos.
3.1.3.2 Apache Mahout
O Apache Mahout pode ser executado de duas maneiras: como um aplicativo em linha
de comando, ou como um API para programas escritos em Java.
A configurao necessria para ser utilizado da primeira maneira consiste na definio
das variveis de ambiente HADOOP_HOME, a qual deve conter o diretrio onde esto os
arquivos do Apache Hadoop, e HADOOP_CONF_DIR, contendo o caminho para diretrio conf do Hadoop.
Para ser utilizado como uma API, deve-se construir um arquivo JAR, passado como
parmetro ao arquivo executvel do Hadoop, sem necessidade de outros tipos de configurao, alm das necessrias ao Apache Hadoop.
33
guma mtrica para encontrar a distncia do registro analisado em relao aos centrides;
4. Aps agrupar todos os registros, encontrar o novo centride para cada cluster;
5. Repetir os passos 3 a 5 at o limite de execuo, ou convergir.
34
35
estiver em execuo.
Listing 3.1: Exemplo de cdigo utilizando a API do Mahout
Path vectorsPath = new Path("vectors");
Path clustersInitPath = new Path("clustersInit");
Path saidaPath = new Path("output");
DistanceMeasure measure = new EuclideanDistanceMeasure();
double convergenceDelta = 0.01;
int maxIterations = 5;
boolean runClustering = true;
boolean runSequential = false;
KMeansDriver.run(vectorsPath, clustersInitPath, saidaPath, measure,
convergenceDelta, maxIterations, runClustering, runSequential);
36
3.4.1 Integrao
Para a integrao dos dados, desenvolveram-se aplicativos, em linguagem de programao Java, que geram um novo conjunto, a partir da juno dos dados iniciais.
Realizaram-se junes entre informaes de alunos e bolsistas, alunos e projetos, alunos e emprstimos e alunos e candidatos. A juno foi realizada atravs de atributos de
relao, existentes nas estruturas dos dados.
O algoritmo utilizado para a integrao dos dados consiste em, dados dois conjuntos
de dados, denominados mestre e escravo, primeiramente, mapear os registros do escravo
atravs de ndices, referentes a cada atributo de relao. A figura 3.5 ilustra esse mapeamento. A partir da, percorre-se os registros do mestre, verificando, nos ndices de atributos de relao, quais registros de escravos podem ser integrados ao registro do mestre
analisado. Com isso, gera-se um novo conjunto de dados, cujos registros so compostos
pelos valores dos registros do mestre, mais os valores dos registros dos escravos relacionados. A listagem A.2 traz o trecho de cdigo que ilustra esse processo de integrao.
O novo conjunto de dados foi gerado em formato CSV. Utilizou-se a biblioteca Java
CSV (DUNWIDDIE, 2006) para a manipulao dos conjuntos iniciais de informaes.
37
reais, onde n indica o nmero de atributos utilizados para descrever os objetos no cluster
(The Apache Software Foundation, 2010a). Dessa forma, para a correta execuo do algoritmo K-Means, faz-se necessrio converter os dados de entrada, que esto no formato
CSV, para o formato vetorial aceito pela ferramenta.
Apache Mahout oferece trs formas automticas de transformao dos dados para o
formato vetorial, alm da possibilidade de criao manual dos vetores. Em virtude de o
objetivo deste trabalho no ser o resultado final da minerao, mas o desempenho da ferramenta, optou-se por analisar e selecionar a melhor forma automatizada para criao dos
vetores, ao invs de ger-los manualmente. A seguir so descritas as formas automticas
de criao dos vetores.
A partir de texto, onde os vetores so gerados em funo da frequncia das palavras
presentes em arquivos de texto analisados.
A partir de ndice Lucene. Lucene uma ferramenta para indexao e busca em arquivos texto (The Apache Software Foundation, 2010c). Os vetores podem ser gerados
a partir de um ndice Lucene, de forma semelhante criao a partir de texto. Levase em considerao um atributo de busca do ndice.
A partir de arquivos ARFF. Attribute-Relation File Format (ARFF) o formato de arquivo utilizado pela ferramenta Weka. Trata-se de um arquivo texto que descreve
um conjunto de registros, formados por uma lista de atributos. Um arquivo ARFF
composto por um cabealho, que descreve os atributos, e pelos registros de dados
(ARFF, 2008). Para cada registro, gera-se um vetor. A dimenso dos vetores a
quantidade de atributos presentes.
Optou-se por adotar a forma de gerao dos vetores a partir de arquivos ARFF, por
ser a mais apropriada aos tipos de dados analisados. As outras duas formas de criao de
vetores (a partir de texto e ndice Lucene) so apropriadas para a minerao de arquivos
de texto puro. Foi desenvolvido um aplicativo, em Java, para a transformao dos dados,
do formato CSV, para o formato ARFF.
Para a execuo do algoritmo FPGrowth, os arquivos de entrada devem estar em formato texto, onde cada linha um registro, composto por vrios valores de campos, separados por algum caractere especial. Dessa forma, desenvolveu-se um aplicativo para transformar os dados do formato CSV para o formato aceito pelo FPGrowth. Basicamente,
38
4 RESULTADOS
A fim de alcanar os objetivos deste trabalho, investigou-se o desempenho da ferramenta Apache Mahout em diferentes ambientes distribudos, sendo verificado seu funcionamento em mquinas mono e multiprocessadas. Foram analisados trs algoritmos
implementados pela ferramenta, para verificar o comportamento de diferentes classes de
minerao disponibilizadas. Os testes foram realizados a partir da incluso de ns, ou
aumento da capacidade de processamento, atravs da alterao do nmero de tasks de
map/reduce aceitas, ao sistema distribudo, para verificar o comportamento da ferramenta,
em relao escalabilidade.
Processador
Intel Xeon E5335
Intel Core 2 Duo CPU T7250
Ncleos
8
2
Clock
2.00GHz
2.00GHz
Cache
4MB
2MB
RAM
4GB
2GB
Neste ambiente, a mquina Vostro foi definida como mestre, onde se executaram
instncias de NameNode e JobTracker. A mquina Haroldo foi definida como es-
40
cravo, executando instncias de DataNode e TaskTracker. Nesta mquina, alterouse as configuraes do Apache Hadoop, no arquivo mapred.xml, de forma a suportar
de uma a oito tarefas de map e reduce, possibilitando execues em paralelo, aproveitando a quantidade de ncleos disponveis. Mediram-se os tempos de execuo
com cada uma dessas oito configuraes, assim como a execuo local, com a possibilidade de uso dos oito ncleos.
Cluster Gates. O cluster Gates composto por 6 mquinas idnticas, interligadas. Tratase de um cluster do Laboratrio de Alto Desempenho (LAD), da Pontifcia Universidade Catlica do Rio Grande do Sul (PUCRS). Neste ambiente, alterou-se o
nmero de mquinas testadas, de modo a verificar a escalabilidade em termos de
nmeros de nodos e tempo de execuo. A configurao das mquinas do cluster
Gates a seguinte: processador AMD Opteron Processor 246, 2.00GHz de clock,
1MB de memria cache e 8GB memria RAM.
Cluster Atlntica. O cluster Atlntica composto por 8 mquinas idnticas, interligadas.
Tambm faz parte do LAD, da PUCRS. Assim como no cluster Gates, alterou-se
o nmero de mquinas durante a execuo dos testes no Atlntica. As mquinas
deste cluster possuem processador Intel Xeon E5520, 2.27GHz de clock, 8MB de
memria cache e 16GB de memria RAM.
Para realizar a configurao automtica do Apache Hadoop, em ambos os clusters,
desenvolveu-se um script, em linguagem Shell. Dada uma lista de nodos disponveis para
a realizao da computao, so gerados os arquivos de configurao descritos na seo
3.1.3.1. O primeiro nodo da lista definido como mestre, e os demais, como escravos.
Definiu-se que no haveria replicao de blocos no sistema de arquivos distribudo, ou
seja, h apenas uma cpia de cada bloco de arquivo no HDFS. A listagem A.1 ilustra o
cdigo desse script.
41
4.2.1 Caso I
No primeiro caso de teste, executou-se o algoritmo K-Means, para o agrupamento
dos dados em 5 clusters, num total de 5 iteraes mximas. Os dados testados foram
provenientes da integrao entre as informaes de alunos com emprstimos, totalizando
508MB em arquivo texto, e 157.6MB no arquivo de vetores correspondente. O arquivo
formado por 961635 registros, compostos por 45 campos. Os testes foram realizados nos
clusters Gates e Atlntica, sendo realizadas execues local, sem utilizao do Hadoop, e
distribuda. No Gates, fez-se uso de um a seis nodos, enquanto que, no Atlntica, utilizouse de um a oito nodos. Em ambos, fez-se uso de um processador em cada nodo.
A tabela 4.2 traz o resultado da execuo do primeiro caso de teste, para a execuo
no cluster Gates. O resultado tambm est resumido no grfico da figura 4.1. Percebese que houve ganho de desempenho adicionando-se nodos ao ambiente. O ganho mais
significativo deu-se entre as trs primeiras situaes, onde se passou da execuo local
para uma execuo distribuda, com dois e trs nodos. A partir da execuo com quatro
nodos, o ganho no foi to significativo. A curva de acelerao, exposta no grfico da
figura 4.1, ilustra a situao, estando mais acentuada no incio, e tendendo a se estabilizar
a partir dos quatro nodos.
Tabela 4.2: Desempenho K-Means - cluster Gates
Nmero de Nodos
1 (Local)
2
3
4
5
6
Acelerao
1
1,0664
1,3340
1,4459
1,4802
1,5264
O desempenho obtido pela execuo no cluster Atlntica, para o primeiro caso de testes, est resumida na tabela 4.3 e no grfico da figura 4.3. Percebe-se que houve pequeno
ganho ao adicionar nodos ao ambiente, apesar de a execuo com dois nodos ter desempenho semelhante execuo local. At a execuo com quatro nodos, houve pequena
melhora, no observada em relao ao quinto nodo, cujo desempenho foi semelhante
execuo com quatro. Com sete e oito nodos, houve ligeira queda no desempenho,
comparadas execuo com seis, verificando uma tendncia de estabilizao, o que est
ilustrado no grfico da acelerao, na figura 4.4.
42
450000
400000
350000
300000
250000
200000
Local
1 escravo
2 escravos
3 escravos
4 escravos
5 escravos
Figura 4.1: Tempo de execuo do algoritmo K-Means - cluster Gates (em ms)
1,6
1,5
1,4
1,3
1,2
1,1
1
Local
1 escravo
2 escravos
3 escravos
4 escravos
5 escravos
Acelerao
1
0,9978
1,0730
1,0975
1,0909
1,1216
1,0697
1,1118
4.2.2 Caso II
O segundo caso de teste consistiu na execuo do algoritmo FPGrowth, eliminando
valores de campos com frequncia menor que 2, verificando os 50 padres mais altos.
43
240000
220000
200000
180000
160000
140000
120000
100000
Local
1 escravo
Figura 4.3: Tempo de execuo do algoritmo K-Means - cluster Atlntica (em ms)
1,4
1,2
0,8
0,6
Local
1 escravo
2 escravos
3 escravos
4 escravos
5 escravos
6 escravos
7 escravos
44
Hadoop. Nesta interface, ilustrada pela figura 4.7, pode-se verificar os jobs e as tasks
que esto em execuo, a cada instante. Assim, os atrasos da comunicao e o nus
trazido pela distribuio fsica dos dados, no HDFS, fizeram com que o tempo de execuo
distribuda fosse maior que o tempo de execuo local. No houve grandes diferenas
entre as execues distribudas, o que pode ser visualizado pela curva de acelerao, na
figura 4.6, que praticamente constante.
Tabela 4.4: Desempenho FPGrowth - cluster Gates
Nmero de Nodos
1 (Local)
2
3
4
5
6
Acelerao
1
0,9366
0,9375
0,9510
0,9290
0,9321
3000000
2800000
2600000
2400000
2200000
2000000
Local
1 escravo
2 escravos
3 escravos
4 escravos
5 escravos
Figura 4.5: Tempo de execuo do algoritmo FPGrowth - cluster Gates (em ms)
Os resultados obtidos pela execuo do segundo caso de teste, no ambiente heterogneo, esto resumidos pela tabela 4.5 e pelo grfico da figura 4.8. Verificou-se que,
assim como no cluster Gates, no houve diferenas na execuo distribuda do algoritmo,
mesmo variando-se o nmero de tarefas de map e reduce suportadas, visto que a execuo
foi feita de forma sequencial. Com isso, o desempenho local foi superior aos desempenhos das execues distribudas. A curva de acelerao das execues distribudas, na
figura 4.9, ilustra a baixa variao de tempo das execues com diferentes nmeros de
tarefas de map/reduce suportadas.
45
1,4
1,2
0,8
0,6
0,4
0,2
0
Local
1 escravo
2 escravos
3 escravos
4 escravos
5 escravos
46
Acelerao
1
1,0002
0,9780
0,9964
1,0002
0,9969
0,9824
1,0007
#
2400000
2200000
2000000
1800000
1600000
1400000
1200000
1000000
Local
1 tarefa
Figura 4.8: Tempo de execuo do algoritmo FPGrowth - ambiente heterogneo (em ms)
1,4
1,2
0,8
0,6
0,4
1 tarefa
2 tarefas
3 tarefas
4 tarefas
5 tarefas
6 tarefas
7 tarefas
8 tarefas
47
Acelerao
1
0,7465
0,8070
0,8651
0,8597
0,8986
0,9042
0,8970
800000
700000
600000
500000
400000
300000
Local
1 escravo
48
1,2
1,1
0,9
0,8
0,7
0,6
0,5
Local
1 escravo
2 escravos
3 escravos
4 escravos
5 escravos
6 escravos
7 escravos
Acelerao
1
0,8536
0,9234
0,9887
1,0049
1,0475
A tabela 4.8 e o grfico da figura 4.14 ilustram os resultados obtidos pela execuo
do terceiro caso de teste, no ambiente heterogneo. Verificou-se ganho de desempenho,
relativo ao aumento da capacidade de execuo de tarefas de map/reduce e, consequentemente, uso de vrios ncleos para o processamento. Os ganhos foram obtidos at a
definio de cinco tarefas. A partir da execuo com seis, o desempenho manteve-se
constante, o que pode ser visto na curva do grfico de acelerao, que compara as execues distribudas, na figura 4.15. Ainda assim, a execuo distribuda, com capacidade de
execuo de oito tarefas, foi 14% mais lenta que a execuo local. Isso deve ser observado
49
1400000
1200000
1000000
800000
600000
Local
1 escravo
2 escravos
3 escravos
4 escravos
5 escravos
1,2
0,8
0,6
Local
1 escravo
2 escravos
3 escravos
4 escravos
5 escravos
Acelerao
1
1,2003
1,3005
1,3250
1,3817
1,3847
1,3751
1,3693
#
50
1400000
1200000
1000000
800000
600000
400000
Local
1 tarefa
Figura 4.14: Tempo de execuo do algoritmo de clculo de similaridade de itens - ambiente heterogneo (em ms)
1,6
1,4
1,2
0,8
1 tarefa
2 tarefas
3 tarefas
4 tarefas
5 tarefas
6 tarefas
7 tarefas
8 tarefas
51
5 CONCLUSO
Este trabalho apresentou uma anlise de desempenho do Apache Mahout, para a minerao de dados distribuda e escalvel, utilizando o modelo de programao MapReduce.
Conjuntos de dados, provenientes do sistema de informaes acadmicas de alunos da
UFSM, foram preparados para serem investigados pela ferramenta. Selecionaram-se trs
algoritmos, K-Means, FPGrowth e cculo de similaridade de itens, para a realizao dos
testes. Realizaram-se testes em trs ambientes distintos, um deles composto por duas
mquinas heterogneas, e os outros sendo clusters com diferentes capacidadedes de processamento. Verificou-se o comportamento de escalabilidade da ferramenta, em relao
ao desempenho obtido com o aumento do nmero de mquinas disponveis, e variao da
capacidade de processamento, em mquinas multiprocessadas.
Verificou-se que os algoritmos K-Means e de clculo de similaridade de itens, implementados pela ferramenta, so capazes de tirar proveito de uma execuo distribuda.
Tambm observou-se ser possvel utilizar-se mquinas com vrios ncleos de processamento para aumentar o desempenho da execuo destes algoritmos. Identificou-se um
comportamento de escalabilidade neles, embora em pequena escala, devido pequena
quantidade de mquinas disponveis para o processamento, e ao tamanho dos dados. Para
os dois algoritmos, os ganhos, ao adicionar-se nodos ao processamento, foram mais significativos em um ambiente formado por mquinas com menor poder de processamento.
Para o K-Means, as execues distribudas obtiveram melhor desempenho que as centralizadas, o que no foi visualizado, em geral, para o clculo de similaridade de itens, provavelmente em virtude da menor quantidade de dados analisada. Encontrou-se, tambm,
situao onde a execuo realizada de forma sequencial, com o algoritmo FPGrowth.
Embora faa uso do modelo MapReduce, a execuo sequencial do FPGrowth torna indiferente a quantidade de ns, ou ncleos, disponveis para o processamento, uma vez que
53
54
REFERNCIAS
55
56
SHEARER, C. The CRISP-DM Model: the new blueprint for data mining. Journal of
Data Warehousing, [S.l.], v.5, n.4, 2000.
SMALL, R. D.; EDELSTEIN, H. A. Scalable data mining. Building, using, and managing the data warehouse, Upper Saddle River, NJ, USA, p.151172, 1997.
TALIA, D.; TRUNFIO, P.; VERTA, O. Weka4WS: a wsrfenabled weka toolkit for distributed data mining on grids. In: EUROPEAN CONFERENCE ON PRINCIPLES AND
PRACTICE OF KNOWLEDGE DISCOVERY IN DATABASES (PKDD 2005, 9., 2005.
Proceedings. . . Springer-Verlag, 2005. p.309320.
The Apache Software Foundation. Welcome to Hadoop MapReduce! Disponvel em:
http://hadoop.apache.org/mapreduce/ Acesso em: setembro de 2010.
The Apache Software Foundation. Welcome to Apache Hadoop!
Disponvel em:
APNDICE A
CDIGOS FONTE
58
59