Você está na página 1de 59

UNIVERSIDADE FEDERAL DE SANTA MARIA

CENTRO DE TECNOLOGIA
CURSO DE CINCIA DA COMPUTAO

MINERAO DE DADOS DISTRIBUDA


E ESCALVEL USANDO APACHE
MAHOUT

TRABALHO DE GRADUAO

Adriano Pereira

Santa Maria, RS, Brasil


2010

MINERAO DE DADOS DISTRIBUDA E


ESCALVEL USANDO APACHE MAHOUT

por

Adriano Pereira

Trabalho de Graduao apresentado ao Curso de Cincia da Computao


da Universidade Federal de Santa Maria (UFSM, RS), como requisito
parcial para a obteno do grau de
Bacharel em Cincia da Computao

Orientador: Profa . Andrea Schwertner Charo

Trabalho de Graduao N. 298


Santa Maria, RS, Brasil
2010

Universidade Federal de Santa Maria


Centro de Tecnologia
Curso de Cincia da Computao

A Comisso Examinadora, abaixo assinada,


aprova o Trabalho de Graduao

MINERAO DE DADOS DISTRIBUDA E ESCALVEL


USANDO APACHE MAHOUT
elaborado por
Adriano Pereira
como requisito parcial para obteno do grau de
Bacharel em Cincia da Computao
COMISSO EXAMINADORA:
Profa . Andrea Schwertner Charo
(Presidente/Orientador)
Profa . Iara Augustin (UFSM)

Fernando Pires Barbosa (CPD/UFSM)

Santa Maria, 06 de Dezembro de 2010.

A vida uma tragdia quando vista de perto, mas uma comdia quando vista
de longe.
C HARLES C HAPLIN

AGRADECIMENTOS

Primeiramente, gostaria de agradecer minha famlia, por estarem sempre comigo.


Ao meu pai, Paulo, que sempre foi um exemplo, minha me, Leda, que sempre acreditou
em mim, mesmo quando todos duvidavam, e minha irm, Aline, por aguentar o seu
irmozinho caula.
Agradeo, tambm, aos amigos, que estavam presentes nos momentos bons e ruins.
queles que cresceram comigo, com os quais compartilhei minha infncia; aos colegas,
que viraram amigos, do Ensino Mdio; aos, mais que, vizinhos do parque Amaral; aos
colegas de faculdade e, especialmente, dos grupos PET da UFSM, meu sincero muito
obrigado.
No posso esquecer de mencionar os professores que contriburam para minha formao. Em especial, agradeo professora Andrea, pela tutoria e orientao ao longo de
mais de trs anos da graduao.
Enfim, agradeo a todos aqueles que estiveram presentes em minha caminhada e que,
de alguma ou outra forma, contriburam para o meu crescimento.

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.

Palavras-chave: Minerao de Dados; Minerao de Dados Distribuda; Apache Mahout.

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.

Keywords: Data Mining, Distributed Data Mining, Apache Mahout.

LISTA DE FIGURAS

Figura 2.1 Minerao de dados como um passo da descoberta do conhecimento


(FAYYAD; PIATETSKY-SHAPIRO; SMYTH, 1996) . . . . . . . . . . . . . . . . 18
Figura 2.2 CRISP-DM: metodologia para minerao de dados (LAROSE, 2005) . 20
Figura 2.3 Etapas do pr-processamento dos dados (HAN; KAMBER, 2006) . . . . 21
Figura 3.1
Figura 3.2
Figura 3.3
Figura 3.4
Figura 3.5

Ambiente distribudo com Apache Hadoop executando Apache Mahout


Exemplo de execuo do K-Means . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Exemplo de execuo do FPGrowth (adaptado de Han e Kamber (2006))
Exemplo de execuo do algoritmo de clculo de similaridade . . . . . . . .
Mapeamento de ndices utilizado para a integrao dos dados . . . . . . . .

30
33
33
34
36

Tempo de execuo do algoritmo K-Means - cluster Gates (em ms) . . .


Acelerao do algoritmo K-Means - cluster Gates . . . . . . . . . . . . . . . . . . .
Tempo de execuo do algoritmo K-Means - cluster Atlntica (em ms)
Acelerao do algoritmo K-Means - cluster Atlntica . . . . . . . . . . . . . . . .
Tempo de execuo do algoritmo FPGrowth - cluster Gates (em ms) . .
Acelerao do algoritmo FPGrowth - cluster Gates . . . . . . . . . . . . . . . . . .
Interface Hadoop - Tasktracker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tempo de execuo do algoritmo FPGrowth - ambiente heterogneo
(em ms) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Figura 4.9 Acelerao do algoritmo FPGrowth - ambiente heterogneo . . . . . . . . . .
Figura 4.10 Tempo de execuo do algoritmo de clculo de similaridade de itens
- cluster Atlntica (em ms) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Figura 4.11 Acelerao do algoritmo de clculo de similaridade de itens - cluster
Atlntica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Figura 4.12 Tempo de execuo do algoritmo de clculo de similaridade de itens
- cluster Gates (em ms) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Figura 4.13 Acelerao do algoritmo de clculo de similaridade de itens - cluster
Gates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Figura 4.14 Tempo de execuo do algoritmo de clculo de similaridade de itens
- ambiente heterogneo (em ms) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Figura 4.15 Acelerao do algoritmo de clculo de similaridade de itens - ambiente heterogneo - execues distribudas . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

Mquinas - ambiente heterogneo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


Desempenho K-Means - cluster Gates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Desempenho K-Means - cluster Atlntica . . . . . . . . . . . . . . . . . . . . . . . . . . .
Desempenho FPGrowth - cluster Gates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Desempenho FPGrowth - ambiente heterogneo . . . . . . . . . . . . . . . . . . . . .
Desempenho clculo de similaridade de itens - cluster Atlntica . . . . . .
Desempenho clculo de similaridade de itens - cluster Gates . . . . . . . . .
Desempenho clculo de similaridade de itens - ambiente heterogneo .

39
41
42
44
46
47
48
49

LISTA DE ABREVIATURAS E SIGLAS

API

Application Programming Interface

ARFF

Attribute-Relation File Format

CPD

Centro de Processamento de Dados

CF

Collaborative Filtering

CRISP-DM

Cross-Industry Standard Process for Data Mining

CSV

Comma-Separated Values

FPG

Parallel FPGrowth

FPM

Frequent Pattern Mining

HDFS

Hadoop Distributed File System

PUCRS

Pontifcia Universidade Catlica do Rio Grande do Sul

JAR

Java ARchive

JVM

Java Virtual Machine (Mquina Virtual Java)

LAD

Laboratrio de Alto Desempenho

SSH

Secure Shell

UFSM

Universidade Federal de Santa Maria

URI

Uniform Resource Identifier

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

a distribuio dos dados e acelerando o processo (PREZ et al., 2007).


Inspirado nas primitivas map e reduce das linguagens funcionais, o modelo de programao MapReduce foi proposto por Dean e Ghemawat (2008), prometendo escalabilidade
ao dividir a carga de trabalho em tarefas que podem ser executadas de forma independente
e paralela. A ferramenta Apache Hadoop possui um framework, distribudo como cdigo
fonte aberto, que implementa este modelo (The Apache Software Foundation, 2007a).
Existem vrias ferramentas para a minerao de dados, especialmente, que executam
os algoritmos de forma distribuda. Neste trabalho ser feita uma anlise do desempenho
do software Apache Mahout, uma soluo recente de ferramenta para emprego de minerao de dados em ambiente distribudo e escalvel. O Apache Mahout uma biblioteca de algoritmos de minerao de dados e aprendizagem de mquina, escrita utilizando
o framework MapReduce disponibilizado pelo Apache Hadoop (The Apache Software
Foundation, 2010a).

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.

1.3 Estrutura do Texto


Este trabalho est organizado da seguinte maneira: o captulo 2 traz uma fundamentao terica acerca dos assuntos abordados no trabalho, tratando da minerao de dados,
minerao de dados distribuda e escalvel, e das ferramentas utilizadas. O captulo 3 fala
sobre o desenvolvimento do trabalho, indicando os requisitos para a instalao e configurao das ferramentas, sobre os algoritmos selecionados para os testes, as formas de
utilizao da ferramenta e os passos realizados para a preparao dos dados investigados.
O captulo 4 fala sobre os testes realizados e os resultados obtidos. Por fim, o captulo 5
conclui o trabalho, indicando sua contribuio e possveis trabalhos futuros.

2 FUNDAMENTAO

Neste captulo esto descritos conceitos tericos que fundamentam este trabalho, assim como as ferramentas utilizadas para o desenvolvimento dele.

2.1 Minerao de Dados


A existncia de grandes quantidades de dados sem a disponibilidade de ferramentas
para anlise pode ser vista como uma situao de "dados ricos, mas informaes pobres",
uma vez que humanamente impossvel analisar esse imenso volume sem o uso de ferramentas computacionais (HAN; KAMBER, 2006). O interesse em analisar esses dados
cresce com a possibilidade de extrao de informaes potencialmente teis para seus
donos. Essa uma preocupao da minerao de dados (HAND; MANNILA; SMYTH,
2001), cujas ferramentas podem descobrir padres teis, contribuindo em reas como estratgias de negcios, bases de conhecimento, alm de pesquisas cientficas (HAN; KAMBER, 2006).
Segundo Hand et al. (2001) , minerao de dados a "anlise de conjuntos de dados,
geralmente grandes, para encontrar relaes no suspeitas e resumir os dados em novas
maneiras, compreensveis e teis para seu dono". Para Han e Kamber (2006) , minerao
de dados refere-se extrao, ou minerao, de conhecimento a partir de grandes volumes
de dados.
Os algoritmos de minerao de dados envolvem tcnicas de estatstica, aprendizagem
de mquina, reconhecimento de padres, inteligncia artificial, recuperao de informao, processamento de sinais e anlise espacial ou temporal de dados. A minerao de
dados considerado um dos mais promissores desenvolvimentos interdisciplinares nas
tecnologias de informao (LAROSE, 2005).

17

2.1.1 Descoberta do Conhecimento em Bases de Dados


A minerao de dados uma das etapas do processo de descoberta de conhecimento
em bases de dados (knowledge discovery in databases). A descoberta do conhecimento
vista como a extrao de conhecimento til a partir de um conjunto de dados, enquanto
que minerao de dados a aplicao de algoritmos especficos para encontrar padres
nesses dados (FAYYAD; PIATETSKY-SHAPIRO; SMYTH, 1996).
Como um processo, descoberta de conhecimento em bases de dados consiste em uma
sequncia iterativa de passos (HAN; KAMBER, 2006). Este processo inicia com a definio de seus objetivos, onde entendido o domnio da aplicao. Na segunda etapa,
constroi-se o conjunto de dados que ser alvo da descoberta. A terceira fase trata de limpar e pr-processar os dados, removendo rudos e decidindo estratgias para lidar com
a falta de campos. No quarto passo, o volume de dados reduzido e projetado, diminuindo o nmero de variveis a serem analisadas e encontrando formas de representao
em funo dos objetivos do processo. Em seguida, na quinta etapa, encontra-se uma tarefa de minerao apropriada ao processo de descoberta realizado. A sexta etapa consiste
em escolher algoritmo e mtodo de minerao apropriados para a anlise, com base na
tarefa de minerao. O stimo passo a minerao de dados em si, no qual so buscados padres de interesse, em uma forma de representao particular. A oitava etapa trata
da interpretao dos padres minerados, envolvendo a visualizao da sada de dados da
etapa anterior. Por fim, o nono passo engloba o uso do conhecimento descoberto a partir
de todo o processo (FAYYAD; PIATETSKY-SHAPIRO; SMYTH, 1996). A figura 2.1
ilustra as etapas da descoberta do conhecimento.
2.1.2 Modelo de Processo CRISP-DM
Em meio necessidade de padronizao de processos e modelos de minerao de dados, a construo de um modelo no proprietrio, livre e bem documentado, possibilitaria
a organizaes obterem melhores resultados no processo. Diante deste contexto, surge,
em 1996, o Cross-Industry Standard Process for Data Mining (CRISP-DM) (SHEARER,
2000), um projeto que desenvolveu um modelo de processo de minerao de dados neutro
em termos de indstria e ferramenta (DATA MINING, 2010). CRISP-DM prov um processo padro para que a minerao de dados seja realizada apropriadamente na resoluo
de problemas, tanto em pesquisa quanto em aplicaes comerciais (LAROSE, 2005).

18

Figura 2.1: Minerao de dados como um passo da descoberta do conhecimento


(FAYYAD; PIATETSKY-SHAPIRO; SMYTH, 1996)
CRISP-DM um modelo de processo e metodologia para a conduo completa de
um projeto de minerao de dados, dividindo-o em seis fases (SHEARER, 2000). A
sequncia de execuo adaptativa, estando as fases subsequentes atreladas s sadas
das fases precedentes. A figura 2.2 ilustra o ciclo de vida de um projeto que segue o
CRISP-DM. Nela, as setas internas indicam as dependncias mais comuns, enquanto que
as externas indicam o ciclo natural (LAROSE, 2005). As seis fases do processo esto
descritas a seguir, segundo Larose (2005) e Shearer (2000).
A primeira fase trata do entendimento do negcio, onde se deve compreender os objetivos e requirimentos do projeto, em uma perspectiva de negcio ou pesquisa. Com isso,
pode-se traduzi-los para uma definio de problema de minerao de dados. Nesta fase,
deve-se preparar uma estratgia preliminar para atingir os objetivos do projeto. O entendimento do negcio compreende a determinao dos objetivos do negcio, avaliao da
situao, determinao dos objetivos da minerao e produo do plano do projeto.
O entendimento dos dados a segunda fase do processo. O analista passa a familiarizarse com os dados, a partir de uma coleo inicial. Nesta etapa, pode-se identificar problemas nestes dados, encontrar conhecimento inicial e detectar subconjuntos que possam
ser utilizados para formular hipteses acerca da falta de dados, ou ainda que contenham
padres adicionais. Esta etapa formada por quatro passos principais: compilao dos
dados iniciais, descrio, explorao e verificao da qualidade dos dados.
Na terceira fase do processo, preparao dos dados, esto as atividades de construo
do conjunto final de dados, a partir dos dados brutos iniciais. Nesta fase, so selecionados
casos e variveis apropriados e de interesse analise. Quando necessrio, so realizadas

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

Figura 2.2: CRISP-DM: metodologia para minerao de dados (LAROSE, 2005)


dados, com nomenclaturas prprias, diferentes daquelas de outras fontes. A seguir, so
descritas as etapas de pr-processamento dos dados, segundo Han e Kamber (2006) . A
figura 2.3 ilustra estas etapas.
Limpeza. Nesta etapa, valores ausentes so preenchidos, rudos so removidos, anomalias e inconsistncias so identificadas ou removidas. Usurios no confiam na
minerao de dados que no estejam "limpos". Alm disso, minerar dados que no
passaram por um processo de limpeza pode provocar resultados inconsistentes.
Integrao. A necessidade da anlise de diversas fontes de dados distintas torna necessria a integrao desses dados. A etapa de integrao dos dados consiste em unificar
diferentes bases de dados, padronizando nomes de atributos e identificando inconsistncias.
Transformao. Os algoritmos de minerao necessitam que os dados estejam em formatos especficos, como, por exemplo, normalizados. Para tanto, necessrio trans-

21

formar a base de dados investigada, de forma que os dados analisados estejam em


um formato apropriado.
Reduo. A grande quantidade de dados disponveis para anlise pode tornar o processo
de minerao demasiadamente custoso. Neste caso, necessrio reduzir o grande
volume de dados em um conjunto menor, ou selecionar atributos de interesse, do
qual ainda seja possvel obter resultados iguais, ou semelhantes.

Figura 2.3: Etapas do pr-processamento dos dados (HAN; KAMBER, 2006)


Vale salientar que o sucesso da minerao de dados depende da correta preparao
e populao da base que ser investigada. O processo de coleta deve estar consolidado,

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).

2.2 Minerao de Dados Distribuda e Escalvel


2.2.1 Conceituao
Em geral, tcnicas de minerao de dados so centralizadas e monolticas. Esse tipo
de abordagem tem se tornado inadequada para diversos cenrios atuais, em virtude da
complexidade das tarefas de minerao e de problemas relacionados segurana dos dados, os quais podem estar distribudos entre vrias organizaes (PREZ et al., 2007).
Neste contexto, verifica-se a necessidade de processos de minerao de dados distribudos e com alto desempenho, permitindo cenrios com volumes de dados cada vez maiores
(WEGENER et al., 2009).
Segundo Wegener et al. (2009), abordagens utilizando o sistema de arquivos distribudo Google File System e o modelo de programao MapReduce provaram-se eficazes
na anlise de grandes quantidades de dados paralelamente, em clusters de computadores.
Sendo assim, pode-se construir sistemas de minerao de dados distribuda, os quais utilizam mltiplos processadores e bases de dados para acelerar a execuo do processo de
minerao, possibilitando, tambm, a distribuio dos dados (PREZ et al., 2007).
Sistemas distribudos podem trabalhar em diferentes escalas. Um sistema dito escalvel se continua eficiente frente ao aumento do nmero de recursos e usurios (COU-

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

buda, cada algoritmo de minerao de dados disponibilizado pela biblioteca Weka


exposto como um Web Service. Embora a minerao seja feita em um ambiente distribudo, as fases de pr-processamento e visualizao dos dados so feitas
localmente (TALIA; TRUNFIO; VERTA, 2005).
MapReduce Weka, trata-se de uma nova arquitetura para sistemas de minerao de grandes volumes de dados, apresentada em Wegener et al. (2009). Implementa uma
interface grfica para os usurios, e utiliza o modelo de programao MapReduce,
em clusters ou grades computacionais. A arquitetura baseada em um Data Mining
Client, que realiza requisies, atravs de interface grfica baseada na ferramenta
Weka (Weka Explorer), para o cluster. Para cada requisio, criada uma instncia de Data Mining Server, responsvel pela execuo da minerao de dados,
executando a parte sequencial do algoritmo e submetendo tarefas paralelizveis ao
framework MapReduce, da ferramenta Apache Hadoop.
GridMiner, um framework que traz como objetivo facilitar a minerao de dados em
um ambiente de grade, provendo uma interface que abstraia a complexidade da
grade, embora permita o controle e a visualizao das tarefas de minerao. GridMiner uma aplicao orientada a servios, implementada sobre a ferramenta Globus (PETER et al., 2004), uma tecnologia utilizada para a construo de grades
computacionais (GLOBUS, 2010).

2.3 Ferramentas Utilizadas no Trabalho


Nesta seo esto descritas as ferramentas Apache Hadoop e Apache Mahout, utilizadas neste trabalho. A ferramenta Apache Mahout realiza a minerao dos dados utilizando
recursos do Apache Hadoop, para que essa minerao possa ser executada em um ambiente distribudo. O Apache Hadoop est descrito primeiramente, pois um requisito para
a execuo distribuda do Apache Mahout.
2.3.1 Apache Hadoop
O projeto Apache Hadoop um conjunto de programas, de cdigo aberto, voltados
computao distribuda e escalvel (The Apache Software Foundation, 2007b). Dentre
os subprojetos do Apache Hadoop, destacam-se o sistema de arquivos distribudo, Hadoop Distributed File System (HDFS), e o framework MapReduce, para processamento

26

distribudo de grandes volumes de dados.


2.3.1.1 Hadoop Distributed File System
O Hadoop Distributed File System (HDFS) um sistema de arquivos distribudo,
tendo entre seus objetivos ser tolerante a falhas e permitir o armazenamento de grandes
quantidades de dados.
O modelo de arquitetura do HDFS mestre/escravo. Em um infraestrutura que utilize
HDFS, existe um mestre onde h uma instncia de NameNode; alm de vrias instncias
de DataNode, em geral, uma em cada n escravo.
Os arquivos gerenciados pelo HDFS so divididos em blocos, sendo armazenados
pelos DataNodes. As tarefas de manipulao de arquivos e diretrios, como operaes
de abrir, fechar e renomear, e de mapeamento dos blocos aos DataNodes so realizadas
pelo mestre NameNode. As operaes com blocos, como criao, remoo e replicao,
so realizadas pelos escravos DataNodes, a partir das instrues do mestre NameNode.
Tambm responsabilidade dos DataNodes servir requisies de leitura e escrita, a partir
dos sistemas de arquivos dos clientes (The Apache Software Foundation, 2007c).
responsabilidade do NameNode gerenciar o espao de nomes do sistema de arquivos, mantendo a rvore de diretrios. O NameNode deve conhecer em qual DataNode
est cada bloco, possibilitando a localizao dos arquivos. Os DataNodes armazenam e
recuperam blocos, quando solicitado pelos clientes ou pelo NameNode, alm de comunicar ao NameNode, periodicamente, a lista de blocos que est armazenando (WHITE,
2009).
A implementao do HDFS feita em linguagem de programao Java, possibilitando
que qualquer mquina com suporte Java Virtual Machine possa executar tanto DataNode
quanto NameNode.
2.3.1.2 MapReduce
O modelo de programao MapReduce foi introduzido por Dean e Ghemawat (2008),
sendo voltado ao processamento paralelo de grandes volumes de dados, em arquiteturas
distribudas, abstraindo detalhes de paralelizao, tolerncia a falhas, distribuio dos
dados e balanceamento de carga.
Inspirado nas primitivas map e reduce das linguagens funcionais, o modelo MapReduce base-se em aplicar uma operao, map, em cada registro do volume de dados de

27

entrada. Dessa forma, gera-se um conjunto intermedirio de pares chave/valor, sendo


aplicada uma operao reduce nos pares que compartilham a mesma chave.
Hadoop MapReduce um modelo de programao e framework (The Apache Software Foundation, 2007a); uma implementao de cdigo fonte aberto para o modelo de
programao MapReduce. O processamento de uma tarefa divide a entrada em partes
independentes, as quais so processadas paralelamente pela operao de map. A sada
desta operao utilizada como entrada para a operao reduce. Este modelo promete
escalabilidade em virtude de os processamentos de map e reduce serem feitos de maneira
independente, permitindo a distribuio dessas tarefas em diferentes nmeros de nodos,
presentes no sistema.
O framework Hadoop MapReduce composto por um nodo mestre, onde executado
o JobTracker, e um conjunto de nodos escravos, sendo executada, em cada escravo, uma
instncia de TaskTracker (The Apache Software Foundation, 2007a). Para o framework,
um job uma unidade de trabalho solicitada pelo cliente. O job dividido em tasks, do
tipo map e reduce. O JobTracker coordena os jobs em execuo no sistema, escalonando
as tasks para serem executadas nos TaskTrackers. Os TaskTrackers executam essas tasks,
reportando o progresso da execuo ao JobTracker. Em caso de falha, o JobTracker pode
re-escalonar a task, para ser executada em outro TaskTracker (WHITE, 2009).
2.3.2 Apache Mahout
O Apache Mahout uma biblioteca de algoritmos de minerao de dados e aprendizagem de mquina escalvel, escrita em linguagem de programao Java, de cdigo fonte
aberto (The Apache Software Foundation, 2010a). Esta biblioteca foi implementada utilizando o modelo de programao MapReduce; para tanto, faz uso da infraestrutura oferecida pelo Apache Hadoop, descrito na seo 2.3.1.
Atualmente, a ferramenta Apache Mahout suporta principalmente quatro casos de uso:
(i) recomendao, onde se tenta encontrar itens com potencial interesse dos usurios, a
partir de seus comportamentos; (ii) agrupamento, em que itens so agrupados a partir
de tpicos comuns; (iii) classificao, que, com base em uma categorizao existente,
capaz de escolher em qual grupo incluir determinado item; (iv) minerao por frequncia
de grupos de itens, onde se identifica, a partir de um conjunto de grupos de itens, quais
itens aparecem juntos.

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.

3.1 Instalao e Configurao


Os requisitos para o correto funcionamento do Apache Mahout esto relacionados
linguagem de programao na qual foi escrito e infraestrutura fornecida pelo Apache
Hadoop. Os requisitos do Hadoop so decorrentes da linguagem de programao em que
foi escrito, e da forma de comunicao entre os nodos do ambiente.
O ambiente distribudo onde o sistema executado pode ser composto por nodos com
diferentes capacidades de processamento e armazenamento, desde que estejam devidamente configurados com o Apache Hadoop. Em geral, adota-se um nodo como mestre,
onde se executam instncias de NameNode, gerenciando o HDFS, e JobTracker, gerenciando os jobs de MapReduce. Os demais nodos so escravos, em que so executadas
instncias de DataNode e TaskTracker, para o gerenciamento dos blocos do sistema de arquivo e execuo das tarefas de map e reduce, respectivamente. Neste sistema, executa-se
a ferramenta Apache Mahout, ou um sistema desenvolvido a partir de sua API, o qual realiza a minerao em um conjunto de dados presente no HDFS. Dessa forma, so criados

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

Apache Software Foundation, 2010a).


3.1.2 Requisitos do Apache Hadoop
O Apache Hadoop tambm escrito em linguagem de programao Java, sendo necessria a disponibilidade de JVM em cada nodo do ambiente de execuo, em verso
igual, ou superior, a 1.6.0.
Quanto forma de comunicao entre os nodos, Apache Hadoop utiliza o protocolo
de comunicao SSH. Para que no haja a necessidade de autenticao interativa utilizando senha, utiliza-se o esquema de chaves pblica para a autenticao. Dessa forma, os
componentes do sistema devem ter suporte ao protocolo e estar devidamente configurados
para que a comunicao seja realizada corretamente.
Apesar de ser suportado tanto pela plataforma GNU/Linux, quanto pela Win32, recomenda-se que esta seja utilizada apenas como uma plataforma de desenvolvimento.
Aquela pode ser utilizada como plataforma de desenvolvimento e produo (The Apache
Software Foundation, 2007b).
3.1.3 Configurao
3.1.3.1 Apache Hadoop
A configurao do Apache Hadoop realizada a partir de arquivos, localizados dentro do diretrio conf. As alteraes realizadas neste trabalho, para ter-se um ambiente
distribudo, foram nos seguintes arquivos:
core-site.xml definio da URI e porta do NameNode (mestre).
hdfs-site.xml definio do nmero de blocos replicados, definido como o valor unitrio.
mapred-site.xml definio do hostname do JobTracker (mestre).
masters definio do nodo mestre, onde so executados NameNode e JobTracker.
slaves definio dos nodos escravos, onde so executados DataNode e TaskTracker.
Tambm deve-se definir a varivel de ambiente JAVA_HOME, no arquivo hadoopenv.sh, apontando para o diretrio contendo os arquivos da JVM.
Para que seja possvel realizar a comunicao entre os nodos do sistema, necessrio
que eles estejam aptos a aceitar conexo pelo protocolo SSH, utilizando o esquema de

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.

3.2 Escolha dos Algoritmos


Para a realizao do teste de desempenho da ferramenta, escolheram-se trs algoritmos de minerao, sendo eles: K-Means, Parallel FPGrowth (FPG), e o algoritmo de
clculo da similaridade de itens. O algoritmo K-Means um algoritmo de agrupamento.
J o FPG um algoritmo de minerao de padres frequentes (Frequent Pattern Mining,
FPM), enquadrando-se na tarefa de associao, enquanto que o algoritmo de similaridade
de itens faz parte dos algoritmos de filtragem colaborativa baseada em itens (Collaborative Filtering, CF), executando uma tarefa de recomendao.
O algoritmo K-Means foi escolhido por ser um algoritmo simples e efetivo para a
tarefa de agrupamento (LAROSE, 2005). A similaridade no cluster medida atravs do
valor mdio dos objetos presentes nele, o que pode ser visto como o centro de gravidade
ou centride. O funcionamento do K-Means segue os seguintes passos (HAN; KAMBER,
2006), os quais esto, parcialmente, ilustrados pela figura 3.2:
1. Definir um nmero k de classes (clusters), em que os dados sero divididos;
2. Escolher k registros, aleatoriamente, para serem os centrides iniciais dos clusters;
3. Encontrar, para cada registro, o centride mais prximo. Para tanto, utiliza-se al-

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.

Figura 3.2: Exemplo de execuo do K-Means


Escolheu-se avaliar o desempenho do algoritmo FPGrowth, por ser considerado um
mtodo eficiente e escalvel para minerao de grandes e pequenos padres, sendo um
dos mais populares algoritmos de minerao de frequncia de padres (HAN et al., 2004)
(BORGELT, 2005). O funcionamento do FPGrowth consiste em verificar, primeiramente,
a frequncia de cada valor dos campos de registros de entrada. Ento, so eliminados os
valores cujas frequncias sejam menores que um mnimo definido. Por fim, encontram-se
os k padres mais altos, para cada um dos n registros resultantes, sem os valores eliminados, gerando-se um total de n x k padres (The Apache Software Foundation, 2010b).
Um exemplo de execuo do algoritmo FPGrowth, contendo os valores de entrada e a
respectiva sada, encontra-se na figura 3.3.

Figura 3.3: Exemplo de execuo do FPGrowth (adaptado de Han e Kamber (2006))


Optou-se por analisar um algoritmo de CF por ser uma tcnica difundida entre empresas de comrcio virtual (INGERSOLL, 2009). Analisando-se histrico de preferncias, e

34

tendo como base a similaridade de grupos de usurios, so fornecidas sugestes de itens,


em forma de recomendao (BERRY; LINOFF, 2004). O algoritmo verifica um conjunto
de itens e calcula a similaridade deles, dois a dois, de forma a selecionar os itens mais
similares. Para realizar este clculo, verificam-se os usurios que esto, de alguma forma,
relacionados a ambos os itens, aplicando-se alguma tcnica para determinar a similaridade entre eles (SARWAR et al., 2001). A figura 3.4 ilustra um exemplo de entrada e
sada para a aplicao do algoritmo de clculo de similaridade entre itens.

Figura 3.4: Exemplo de execuo do algoritmo de clculo de similaridade

3.3 Utilizao do Mahout


A ferramenta Apache Mahout possui uma API (Application Programming Interface),
contendo um conjunto de classes que implementam os algoritmos de minerao de dados e classes auxiliares. Os algoritmos foram desenvolvidos utilizando recursos da API
fornecida pelo Apache Hadoop, de modo a fazer uso do sistema de arquivos distribudo,
HDFS, e do framework MapReduce.
A listagem 3.1 ilustra um trecho de cdigo de um programa que utiliza a API do
Mahout, para executar o algoritmo de agrupamento K-Means. A classe KMeansDriver
possui um mtodo esttico para a execuo do algoritmo, chamado run. O mtodo recebe
como parmetros os locais onde esto os dados de entrada, os clusters iniciais, o local
onde sero salvos os arquivos de sada do processo, e outros argumentos prprios do
algoritmo. A classe Path originria da API do Apache Hadoop, sendo utilizada para
referenciar a um arquivo, ou diretrio, dentro do HDFS, se executado em um ambiente
configurado com o Hadoop, ou dentro do sistema de arquivos local, se o Hadoop no

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);

Tambm possvel utilizar o Apache Mahout atravs de um aplicativo em linha de


comando. Trata-se de um script, que faz uso de um aplicativo desenvolvido com base na
API da ferramenta, disponibilizando algoritmos de minerao e funcionalidades de transformao e visualizao de dados. Para utiliz-lo, informam-se a funcionalidade desejada
e os parmetros necessrios para o seu funcionamento. O aplicativo calcula o tempo gasto
durante o processamento e, se configurada a varivel de ambiente HADOOP_HOME, realiza o processamento de forma distribuda.

3.4 Preparao dos Dados


Os dados analisados neste trabalho so provenientes de um sistema de informaes
acadmicas, do Centro de Processamento de Dados (CPD), da Universidade Federal de
Santa Maria (UFSM). Os dados esto em formato Comma-Separated Values (CSV), sendo
referentes a alunos, bolsistas e projetos da instituio; emprstimos realizados pelos alunos nas bibliotecas e candidatos a ingressar na UFSM. Dados de identificao pessoal
foram embaralhados, para preservar a anonimidade.
Conforme mencionado na seo 2.1.3, necessrio pr-processar os dados antes de
executar a minerao. Em especial, necessrio integrar e transformar os dados, gerando
maiores volumes de informao para os testes, e possibilitando a correta utilizao dos
dados como entrada dos algoritmos de minerao implementados pelo Mahout, testados
neste trabalho.

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.

Figura 3.5: Mapeamento de ndices utilizado para a integrao dos dados

3.4.2 Transformao dos Dados


Algoritmos de minerao necessitam que os dados estejam em formato especfico, o
que vlido para a ferramenta Apache Mahout. Algoritmos de agrupamento e classificao necessitam que os dados estejam em formato de vetor n-dimensional de nmeros

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

eliminam-se os cabealhos e substituem-se os delimitadores e separadores de campos, do


arquivo CSV, por algum caractere especial especificado, gerando arquivos compatveis
com o formato esperado pela entrada do algoritmo FPGrowth.
A entrada para os algoritmos de CF consiste em um conjunto de registros, cujas tuplas
so formadas por identificador de usurio, identificador de item e um valor de preferncia
do usurio por aquele item. Estes dados devem compor um arquivo CSV, onde cada linha
um registro, e os valores so separados por vrgula. Para a transformao dos dados
para este formato, desenvolveu-se um aplicativo que recebe, alm dos dados dos registros
de entrada, a indicao de qual campo referente ao identificador de usurio, e qual faz
referncia ao item. Dessa forma, gera-se um novo arquivo CSV, onde o primeiro campo
de cada registro o identificador de usurio, o segundo o identificador do item, e o
terceiro a quantidade de vezes que o usurio est relacionado quele item.

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.

4.1 Ambientes de Teste


Para a verificao do desempenho da ferramenta Apache Mahout, utilizaram-se trs
ambientes de teste. Um deles composto por mquinas heterogneas, e os outros dois
so clusters de mquinas idnticas. Conforme recomendao verificada pela seo 3.1.2,
utilizaram-se mquinas com plataforma GNU/Linux para realizao dos testes. A seguir,
so descritas as configuraes de cada ambiente.
Ambiente Heterogneo. Este ambiente composto por duas mquinas heterogneas, conectadas por rede ethernet. As mquinas que compem este ambiente so:
Tabela 4.1: Mquinas - ambiente heterogneo
Nome Mquina
Haroldo
Vostro

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.

4.2 Casos de Teste e Desempenho


Foram definidos trs casos de teste, nos quais foram executados os algoritmos definidos na seo 3.2, em diferentes ambientes distribudos. Para cada teste de desempenho,
foram realizadas trs execues, sendo informada a mdia entre elas. A seguir, so descritos os casos de teste, e os resultados obtidos em cada um deles.

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

Tempo de Execuo (ms)


399163
374279
299217
276054
269658
261492

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

Figura 4.2: Acelerao do algoritmo K-Means - cluster Gates


Tabela 4.3: Desempenho K-Means - cluster Atlntica
Nmero de Nodos
1 (Local)
2
3
4
5
6
7
8

Tempo de Execuo (ms)


207694
208151
193547
189230
190377
185176
194152
186802

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

2 escravos 3 escravos 4 escravos 5 escravos 6 escravos 7 escravos

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

Figura 4.4: Acelerao do algoritmo K-Means - cluster Atlntica


Utilizou-se os dados provenientes da integrao dos dados de alunos com candidatos, totalizando 6MB em arquivo, com 9984 registros de 52 campos. Os testes foram realizados
no cluster Gates, sendo realizadas execues local, sem utilizao do Hadoop, e distribuda, fazendo uso de dois a seis nodos, utilizando um processador em cada nodo; e no
ambiente heterogneo, distribudo, variando-se a capacidade de execuo de tasks de map
e reduce entre um e oito, alm de uma execuo local, sem utilizao do Apache Hadoop.
A tabela 4.4 e o grfico da figura 4.5 ilustram os resultados obtidos com o segundo
caso de teste, no cluster Gates. Neste caso, verificou-se que o desempenho piorou do
ambiente de execuo local para o distribudo e que o tempo de execuo distribuda,
com diferentes nmeros de nodos, foi semelhante. Isso se deve ao fato de que a execuo,
mesmo no ambiente distribudo, foi realizada de forma sequencial, o que foi verificado
visualizando-se os rastros da execuo, atravs da interface Web disponibilizada pelo

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

Tempo de Execuo (ms)


2391794
2553442
2551015
2515010
2574364
2565894

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

Figura 4.6: Acelerao do algoritmo FPGrowth - cluster Gates

Figura 4.7: Interface Hadoop - Tasktracker


4.2.3 Caso III
O terceiro caso de teste consistiu na aplicao do algoritmo de clculo de similaridade
de itens, utilizando a classe de similaridade "COOCCURRENCE", limitando o nmero
de itens similares entre si a 50. Utilizou-se como entrada os dados referentes aos emprstimos de alunos na biblioteca, cujo arquivo original possui 78.5MB, e o arquivo gerado
pela transformao, 6MB. O arquivo formado por 424844 registros, com 3 campos

46

Tabela 4.5: Desempenho FPGrowth - ambiente heterogneo


No de Tasks Suportadas
1
2
3
4
5
6
7
8
8 (Local)

Tempo de Execuo (ms)


2067429
2066970
2113763
2074813
2066942
2073745
2104256
2065882
1935254

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

2 tarefas 3 tarefas 4 tarefas 5 tarefas 6 tarefas 7 tarefas 8 tarefas

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

Figura 4.9: Acelerao do algoritmo FPGrowth - ambiente heterogneo


cada. Realizaram-se testes nos clusters Atlntica e Gates, e no ambiente heterogneo, havendo execuo local, sem configurao do Hadoop, e execues distribudas. No cluster
Atlntica, utilizou-se de um a oito nodos; no Gates, de um a seis. Em ambas execues,

47

utilizou-se um processador por nodo. No ambiente heterogneo, variou-se a capacidade


de execuo de tasks de map e reduce, de forma a suportar de uma a oito tarefas de cada
tipo (map ou reduce).
Os resultados obtidos com as execues do terceiro caso de teste, no cluster Atlntica,
esto ilustrados na tabela 4.6 e no grfico da figura 4.10. Percebeu-se que a execuo local
deste algoritmo foi mais rpida que a execuo distribuda, o que pode ter acontecido em
virtude da relativa baixa quantidade de dados analisada. Com relao ao processamento
distribudo, pode-se verificar que houve ganho de desempenho at as execues com cinco
nodos. As maiores diferenas de ganho esto entre as execues com dois, trs e quatro
nodos. Entre quatro e cinco, no houve diferena significativa na execuo. Entre cinco e
seis, houve ganho de desempenho, que no foi observado com a execuo nos ambientes
com sete e oito mquinas, comparados com a execuo com seis. O grfico de acelerao,
ilustrado na figura 4.11, mostra essa situao.
Tabela 4.6: Desempenho clculo de similaridade de itens - cluster Atlntica
Nmero de Nodos
1 (Local)
2
3
4
5
6
7
8

Tempo de Execuo (ms)


564605
756292
699585
652646
656677
628270
624400
629413

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

2 escravos 3 escravos 4 escravos 5 escravos 6 escravos 7 escravos

Figura 4.10: Tempo de execuo do algoritmo de clculo de similaridade de itens - cluster


Atlntica (em ms)

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

Figura 4.11: Acelerao do algoritmo de clculo de similaridade de itens - cluster Atlntica


Para o cluster Gates, o desempenho est ilustrado pela tabela 4.7 e pelo grfico da
figura 4.12. Verificou-se que o desempenho da execuo distribuda, entre dois a quatro
nodos, foi pior que a execuo local, havendo melhora do desempenho relativo entre eles.
Com cinco nodos, o desempenho foi equivalente execuo local, e, com seis, teve-se
ligeira melhora. A curva de acelerao, na figura 4.13, mostra essa queda de desempenho
inicial, no ambiente distribudo, e a crescente melhora.
Tabela 4.7: Desempenho clculo de similaridade de itens - cluster Gates
Nmero de Nodos
1 (Local)
2
3
4
5
6

Tempo de Execuo (ms)


1032848
1209943
1118437
1044602
1027764
985982

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

Figura 4.12: Tempo de execuo do algoritmo de clculo de similaridade de itens - cluster


Gates (em ms)
1,4

1,2

0,8

0,6

Local

1 escravo

2 escravos

3 escravos

4 escravos

5 escravos

Figura 4.13: Acelerao do algoritmo de clculo de similaridade de itens - cluster Gates


em virtude do custo da comunicao e transferncia dos dados.
Tabela 4.8: Desempenho clculo de similaridade de itens - ambiente heterogneo
No de Tasks Suportadas
1
2
3
4
5
6
7
8
8 (Local)

Tempo de Execuo (ms)


1420529
1183433
1092270
1072038
1028090
1025862
1033030
1037381
909959

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

2 tarefas 3 tarefas 4 tarefas 5 tarefas 6 tarefas 7 tarefas 8 tarefas

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

Figura 4.15: Acelerao do algoritmo de clculo de similaridade de itens - ambiente


heterogneo - execues distribudas

4.3 Avaliao dos Resultados


A partir dos desempenhos obtidos pela execuo dos trs casos de teste delimitados,
verificou-se que a ferramenta Apache Mahout possui comportamentos diferenciados para
os algoritmos analisados, K-Means, FPGrowth e clculo de similaridade de itens, bem
como em relao ao poder de processamento do ambiente utilizado. A execuo do algoritmo K-Means, no primeiro caso de teste, mostrou um ganho mais significativo no
acrscimo de mquinas ao ambiente de processamento do cluster Gates, se comparado
com o Atlntica, sendo que os nodos do primeiro possuem um poder de processamento
menor que os do segundo. Neste caso, a execuo local foi pior que as execues distribudas, nos dois clusters, apesar de as diferenas no desempenho terem sido menores no

51

Atlntica que no Gates.


Pode-se verificar que o algoritmo FPGrowth, implementado pela ferramenta, no faz
uso da paralelidade e escalabilidade oferecidas pelo modelo de programao MapReduce.
O segundo caso de teste ilustra essa situao, pois no houve diferenas entre as execues
distribudas, com diferentes nmeros de nodos, ou entre as execues com diferentes
capacidades de processamento, em uma mquina com mais de um ncleo. Verificou-se
que o algoritmo FPGrowth tem uma execuo sequencial, uma vez que apenas uma task
de map, ou reduce, lanada pelo JobTracker por vez, sendo escalonada em qualquer um
dos nodos disponveis.
Tambm visualizou-se situaes onde a execuo local foi mais vantajosa que a distribuda, em termos de desempenho. O terceiro caso de teste, com a execuo do algoritmo de clculo de similaridade de itens, mostra isso. Essa situao pode ter ocorrido
em virtude da pequena quantidade de dados analisada, onde o custo para a distribuio
das tarefas e manuteno dos dados, no HDFS, acabam sendo superiores ao benefcio da
execuo distribuda.
Com exceo do segundo caso de teste, onde a execuo foi realizada de forma sequencial, pode-se verificar que houve um comportamento de escalabilidade da ferramenta,
ao adicionar-se nodos ou aumentar a capacidade de processamento em ambientes multiprocessados. Essa escalabilidade tem um limite, o que foi verificado pelos resultados obtidos nos casos de teste I e III. Alm disso, pode-se verificar que possvel tirar proveito
do uso de mquinas com mais de um ncleo, alterando-se as configuraes do Apache
Hadoop. O terceiro caso de teste, quando executado no ambiente heterogneo, mostra
esta situao.
Apesar de a anlise dos resultados da minerao fugir do escopo deste trabalho, podese observar que, para algoritmos de agrupamento e, consequentemente, classificao, o
formato de vetores utilizado dificulta a visualizao dos resultados obtidos. As informaes analisadas que, muitas vezes, so oriundas de bases de dados, devem ser transformadas para um formato de vetores, cujos campos so formados por nmeros de ponto
flutuante. Embora haja formas automticas de converso dos arquivos para este formato
vetorial, no se encontraram formas de converso dos vetores resultantes e, consequentemente, do resultado obtido, para o formato inicial.

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

ele no aproveita a paralelidade e escalabilidade promovidas por este modelo.


A ferramenta Apache Mahout uma soluo recente para minerao de dados distribuda. A falta de testes do comportamento desta ferramenta torna vlido este trabalho, que
tem como contribuio a exposio do comportamento da ferramenta, para a minerao
de um conjunto real de dados, em diferentes ambientes distribudos.
Como trabalhos futuros, sugere-se uma investigao da ferramenta em ambientes onde
haja a disponibilidade de um nmero maior de mquinas, e com uma quantidade maior
de dados. Tambm pode-se investigar o desempenho da ferramenta em outros tipos de
sistemas distribudos, como em um ambiente de computao em nuvem.

54

REFERNCIAS

ARFF. Attribute-Relation File Format (ARFF). Disponvel em: http://www.cs.


waikato.ac.nz/~ml/weka/arff.html. Acesso em: novembro de 2010.
BERNARDI lder. Uma Arquitetura para Suporte Minerao de Dados Paralela
e Distribuda em Ambientes de Computao de Alto Desempenho. 2010. Dissertao
(Mestrado) Pontifcia Universidade Catlica do Rio Grande do Sul.
BERRY, M. J.; LINOFF, G. S. Data Mining Techniques: for marketing, sales, and customer relationship management. [S.l.: s.n.], 2004.
BORGELT, C. An implementation of the FP-growth algorithm. In: OSDM 05: PROCEEDINGS OF THE 1ST INTERNATIONAL WORKSHOP ON OPEN SOURCE DATA
MINING, 2005, New York, NY, USA. Anais. . . ACM, 2005. p.15.
CELIS, S.; MUSICANT, D. R. Weka-Parallel: machine learning in parallel. [S.l.]: Carleton College, CS TR, 2002.
COULOURIS, G.; DOLLIMORE, J.; TIM, K. Distributed Systems - Concepts and
Design. 3.ed. [S.l.: s.n.], 2000.
DATA MINING, C. I. S. P. for. CRISP-DM - Home. Disponvel em: http://www.
crisp-dm.org/ Acesso em: setembro de 2010.
DUNWIDDIE, B. Java CSV Library. Disponvel em: http://sourceforge.
net/projects/javacsv/. Acesso em: novembro de 2010.
FAYYAD, U. M.; PIATETSKY-SHAPIRO, G.; SMYTH, P. From data mining to knowledge discovery: an overview. Advances in knowledge discovery and data mining,
Menlo Park, CA, USA, p.134, 1996.

55

GLOBUS. Welcome to the Globus Toolkit Homepage. Disponvel em: http://www.


globus.org/toolkit/. Acesso em: setembro de 2010.
HAN, J.; KAMBER, M. Data Mining: concepts and techniques. [S.l.: s.n.], 2006.
HAN, J.; PEI, J.; YIN, Y.; MAO, R. Mining Frequent Patterns without Candidate Generation: a frequent-pattern tree approach. Data Mining and Knowledge Discovery,
Hingham, MA, USA, v.8, n.1, p.5387, January 2004.
HAND, D.; MANNILA, H.; SMYTH, P. Principles of Data Mining. [S.l.: s.n.], 2001.
INGERSOLL, G. Introducing Apache Mahout. Disponvel em: http://www.ibm.
com/developerworks/java/library/j-mahout/. Acesso em: novembro de
2010.
KARGUPTA, H.; BYUNG-HOON; HERSHBERGER, D.; JOHNSON, E. Collective
Data Mining: a new perspective toward distributed data analysis. In: ADVANCES IN
DISTRIBUTED AND PARALLEL KNOWLEDGE DISCOVERY, 1999. Anais. . . AAAI/MIT Press, 1999. p.133184.
KHOUSSAINOV, R.; ZUO, X.; KUSHMERICK, N. Grid-enabled Weka: a toolkit for
machine learning on the grid. [S.l.]: University College Dublin, Irland, 2004.
LAROSE, D. T. Discovering Knowledge in Data: an introduction to data mining.
[S.l.: s.n.], 2005.
PREZ, M. S.; SNCHEZ, A.; ROBLES, V.; HERRERO, P.; PEA, J. M. Design and
implementation of a data mining grid-aware architecture. Future Gener. Comput. Syst.,
Amsterdam, The Netherlands, The Netherlands, v.23, n.1, p.4247, 2007.
PETER, B.; ALEXANDER, W.; IVAN, J.; TJOA, A. M. GridMiner: a framework for
knowledge discovery on the grid - from a vision to design and implementation. In: CRACOW GRID WORKSHOP, 2004, Cracow, Poland. Proceedings. . . [S.l.: s.n.], 2004.
SARWAR, B.; KARYPIS, G.; KONSTAN, J.; REIDL, J. Item-based collaborative filtering recommendation algorithms. In: WORLD WIDE WEB, 10., 2001, New York, NY,
USA. Proceedings. . . ACM, 2001. p.285295. (WWW 01).

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:

http://hadoop.apache.org Acesso em: setembro de 2010.


The Apache Software Foundation. Welcome to Hadoop Distributed File System! Disponvel em: http://hadoop.apache.org/hdfs/ Acesso em: setembro de 2010.
The Apache Software Foundation. Apache Mahout:: scalable machine-learning and
data-mining library. Disponvel em: http://mahout.apache.org/ Acesso em:
setembro de 2010.
The Apache Software Foundation. Parallel Frequent Pattern Mining - Apache Mahout
- Apache Software Foundation. Disponvel em: https://cwiki.apache.org/
confluence/display/MAHOUT/Parallel+Frequent+Pattern+Mining.
Acesso em: novembro de 2010.
The Apache Software Foundation. Apache Lucene - Overview. Disponvel em: http:
//lucene.apache.org. Acesso em: novembro de 2010.
WEGENER, D.; MOCK, M.; ADRANALE, D.; WROBEL, S. Toolkit-Based HighPerformance Data Mining of Large Data on MapReduce Clusters. Data Mining
Workshops, International Conference on, Los Alamitos, CA, USA, v.0, p.296301,
2009.
WHITE, T. Hadoop: the definitive guide. [S.l.: s.n.], 2009.

APNDICE A

CDIGOS FONTE

Listing A.1: Script para Configurao do Hadoop


#!/bin/bash
# recupera lista dos nodos disponveis
NODOS=$(cat $PBS_NODEFILE)
# diretorio do hadoop
HADOOP_DIR="/home/adriano.pereira/hadoopgates"
# path dos nodos escravos
SLAVES_DIR="$HADOOP_DIR/conf/slaves"
# path do nodo mestre
MASTERS_DIR="$HADOOP_DIR/conf/masters"
# path da configuracao do mapreduce
MAPREDUCE_DIR="$HADOOP_DIR/conf/mapredsite.xml"
# path de configuracao do numero de blocos
BLOCK_DIR="$HADOOP_DIR/conf/hdfssite.xml"
# path de configuracao do HDFS
HDFS_DIR="$HADOOP_DIR/conf/coresite.xml"
# diretorio de logs
LOGS_DIR="$HADOOP_DIR/logs"
# l todos os nodos para um vetor
I=0
for LINHA in $NODOS; do
SLAVES[$I]=$LINHA
I=$[$I+1]
done
MASTER=${SLAVES[0]}
# escreve nodos escravos
cat > $SLAVES_DIR << END
I=1
for SLAVE in ${SLAVES[@]} ; do
echo ${SLAVES[$I]}
I=$[$I+1]
done
END
# primeiro nodo sempre o mestre

58

echo $MASTER > $MASTERS_DIR


# edita arquivo de configuracao do HDFS (namenode)
cat > $HDFS_DIR << END
<?xml version="1.0"?>
<?xmlstylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://$MASTER:55000</value>
</property>
</configuration>
END
# edita arquivo de configuracao do numero de blocos replicados (namenodes)
cat > $BLOCK_DIR << END
<?xml version="1.0"?>
<?xmlstylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/tmp/namenode</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/tmp/datanode</value>
</property>
</configuration>
END
cat > $MAPREDUCE_DIR << END
<?xml version="1.0"?>
<?xmlstylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>$MASTER:54311</value>
</property>
</configuration>
END
# acessa cada nodo e exclui arquivos temporarios
rm f $LOGS_DIR/
for NODO in $NODOS; do
echo $NODO
ssh $NODO "rm rf /tmp/; exit"
done

59

# acessa o no mestre e inicia o HDFS e o MapReduce


ssh $MASTER "$HADOOP_DIR/bin/hadoop namenode format; $HADOOP_DIR/bin/start
dfs.sh; $HADOOP_DIR/bin/startmapred.sh; exit"

Listing A.2: Trecho de Cdigo da Integrao de Registros


// Para cada registro no mestre
while (readMaster.readRecord()) {
// Registros do escravo que esto relacionados com o registro do mestre em questo
indexSlaves = new Vector<Integer>();
valuesMaster = readMaster.getValues();
// Para cada atributo em comum
cmSize = commomAttr.size();
for (i = 0; i < cmSize; i++) {
hash = index[i];
// Recupera o valor do atributo no registro do mestre
attrValue = readMaster.get(commomAttr.get(i));
// Recupera os ndices dos registros nos escravos que contm o mesmo campo
vAux = hash.get(attrValue);
if (vAux != null) {
// Adiciona no vetor de ndice dos registros de escravos para esse registro mestre, se
ainda no estiver l
for (Integer in : vAux) {
if (!indexSlaves.contains(in)) {
indexSlaves.add(in);
}
}
}
}
// Acessa todos os registros escravos e imprime arquivo de sada
for (Integer inSlave : indexSlaves) {
vmSize = valuesMaster.length;
for (k = 0; k < valuesMaster.length; k++) {
// Escreve no arquivo de sada, caso no seja um campo em comum
if (!commomAttr.contains(readMaster.getHeader(k))) {
fileOut.write(TQUAL + valuesMaster[k] + TQUAL);
fileOut.write(DELIMITER);
}
}
// Escreve valores do escravo
valuesSlave = regSlaves.get(inSlave);
vsSize = valuesSlave.length;
for (l = 0; l < vsSize; l++) {
fileOut.write(TQUAL + valuesSlave[l] + TQUAL);
if (l + 1 < valuesSlave.length) {
fileOut.write(DELIMITER);
}
}
fileOut.write("\n");
}