Você está na página 1de 70

Universidade do Estado do Par (UEPA)

Centro de Cincias Naturais e Tecnologia (CCNT)


Campus XX - Castanhal
Curso de tecnologia em Anlise e Desenvolvimento de Sistemas

Antnio Mateus de Souza Nascimento


Galileu Soares Garcia

Minerao de dados de concentraes de clorofila marinha


com Apache Hadoop:
Um estudo realizado em computadores de baixo custo

Castanhal
2017
Antnio Mateus de Souza Nascimento
Galileu Soares Garcia

Minerao de dados de concentrao de clorofila marinha com


Apache Hadoop:
Um estudo realizado com computadores de baixo custo

Trabalho de Concluso de Curso apresentado


como requisito final para a obteno do grau de
Tecnlogos em Anlise e Desenvolvimento de
Sistemas, do Centro de Cincias Naturais e
Tecnologia, da Universidade do Estado do Par.

Orientador: Prof. Me. Eng. talo Flexa Di Paolo

Castanhal-PA
2017
AGRADECIMENTOS

Agradeo primeiramente a Deus por me acompanhar durante todos esses anos, me


dando foras, perseverana, sade e os conhecimentos necessrios para finalizar este trabalho.
Agradeo ao meu pai Antnio Maria Nascimento, que me ensinou os valores que se
deve seguir como pessoa e me inspirou a lutar pelos meus sonhos e a alcanar as minhas
conquistas.
Agradeo a minha me Tnia Maura Santana de Souza que sempre me deu foras para
enfrentar as dificuldades da vida e a perseverar em cada uma delas.
A minha namorada e melhor amiga Bianca Monteiro Coelho, que sempre levantou o
meu astral nas horas mais difceis, fazendo que eu no desistisse em nenhum momento e me
mostrando que no fim tudo valeria a pena.
Agradeo ao meu orientador e professor talo Flexa Di Paolo que perseverou do meu
lado e me ajudou a definir o melhor caminho para concluir este trabalho, mesmo com todas as
dificuldades que surgiram no seu decorrer.
Ao professor Joo Gabriel Lima, que mesmo no tendo nenhuma ligao com o
trabalho, tirou parte do seu tempo precioso para me auxiliar na criao deste trabalho sem
interesse algum.
Agradeo tambm todos os meus professores que me instruram e guiaram da melhor
forma possvel nesta etapa da minha vida acadmica.
A Universidade do Estado do Par (UEPA) por permitir acesso ao conhecimento.
s meus amigos, que muitos contriburam para a minha formao auxiliando de vrias
formas, principalmente quando amos comer uma pizza e jogar conversa fora.
A todos aqueles que esto ao meu lado durante este percurso e que me ajudaram de
alguma forma a perseguir meus sonhos.

Antnio Mateus de Souza Nascimento


AGRADECIMENTOS

Agradeo imensamente a Deus por me acompanhar durante todos esses anos, que do
alto da sua infinita bondade me concedeu o privilgio da vida.
Ao meu pai Sr. Francisco Garcia de Sousa (in memoriam), o homem que me ensinou o
amor Cristo, a famlia e o valor da palavra de um homem. Meu muito obrigado a este que
sempre foi meu mentor, amigo e meu pai e a quem eu dedico especialmente este trabalho.
A minha me Sr. Raimunda Paes de Lima Garcia que sempre em meio dificuldades e
sacrifcios incontveis, depositou neste jovem a confiana e, sobretudo, o seu amor. No posso
descrever o amor, o carinho e a dedicao que sinto pela senhora. Tenho imensurvel orgulho
de dizer que sou o seu filho.
Agradeo ao meu orientador e professor talo Flexa Di Paolo que teve pacincia que
muito me ajudou a concluir este trabalho e que, apesar de alguns percalos no caminho, nunca
desistiu de mim.
Ao meu professor e amigo Anderson Costa que me mostrou quanto programar bom
e que me ensinou o verdadeiro valor de um projeto bem desenvolvido, organizado e muito bem
testado.
Agradeo tambm todos os meus professores que durante muito tempo m instruram
e que foram to importantes na minha vida acadmica e no desenvolvimento deste trabalho.
A Universidade do Estado do Par UEPA por permitir acesso ao conhecimento.
E que dizer voc professor Joo Gabriel Lima? Obrigado pl sua pacincia, pelo
incentivo, pela fora principalmente por me receber e conceder um pouco de seu tempo. Suas
instrues me ajudaram no desenvolvimento deste trabalho.
s meus amigos, pls alegrias e tristezas compartilhas. Com vocs, as pausas entre
uma pizza outra melhoram tudo que tenho produzido neste trabalho.
A todos aqueles que de alguma forma estiveram esto prximos de mim, fazendo esta
vida valer cada vez mais.

Galileu Soares Garcia


RESUMO

O surgimento da era da internet e do mundo informatizado proporcionaram o crescimento


exponencial da quantidade de dados que trafegam na rede e que so guardados para facilitar o
acesso a essas informaes. Hoje, o volume desses dados crescera de tal forma que so
necessrias maquinas extremamente robustas para computar esse grande contingente de dados
que aumentam a cada dia mais, e tal contexto passa a ser conhecidos como Big Data. Tendo
isso em mente, o objetivo deste trabalho minerar dados de 18 anos de concentraes de
clorofila marinha prximas da costa litornea brasileira com computadores de baixo custo,
utilizando o algoritmo K-means na ferramenta Apache Hadoop, adequada para aplicaes de
Big Data. Este trabalho tambm se prope a comparar o desempenho desta abordagem de
minerao de dados com o processamento realizado em bancos de dados tradicionais (MySQL),
j realizado em trabalhos anteriores. A informao qualitativa apresentada foi de extrema
semelhana, o que valida o resultado apresentado. No entanto, no que se refere ao tempo de
processamento, a abordagem utilizando Apache Hadoop no agregou grande vantagem,
apresentando tempo de processamento muito similar ao executado com o banco de dados
MySQL. No entanto, implementaes utilizando computao paralela podem ainda contribuir
para estudos neste domnio de aplicao.

Palavras-chave: Big Data, K-means, Hadoop, MySQL, minerao de dados, clorofila.


ABSTRACT

The emergence of the internet and computer age has provided the exponential growth in the
amount of data that travels on the network and that are stored to facilitate access to this
information. Today, the volume of this data has grown to such an extent that extremely robust
machines are needed to compute this large contingent of data that increases every day, and such
a context becomes known as Big Data. With this in mind, the objective of this work is to mine
data of 18 years of marine chlorophyll concentrations near the Brazilian coast with low cost
computers, using the K-means algorithm in the Apache Hadoop tool, suitable for Big Data
applications. This work also intends to compare the performance of this data mining approach
with the traditional database processing (MySQL), already performed in previous works. The
qualitative information presented was extremely similar, which validates the presented results.
however, as far as processing time is concerned, the approach using Apache Hadoop did not
have a great advantage, presenting processing time very similar to that executed with the
MySQL database. However, implementations using parallel computing can still contribute to
studies in this field of application.

Keywords: Big Data, K-means, Hadoop, MySql, data mining, chlorophyll.


LISTA DE ILUSTRAES

Figura 1 - Produo de artigos de Big Data na revista Social Sciences Citation ..................... 12
Figura 2 - Propriedades do Big Data ........................................................................................ 19
Figura 3 - Etapas do KDD ........................................................................................................ 20
Figura 4 - Exemplo de execuo do K-means .......................................................................... 22
Figura 5 - Arquitetura do Hadoop ............................................................................................ 23
Figura 6 - Caractersticas do HDFS .......................................................................................... 24
Figura 7 - Exemplo de processamento do Modelo Map/Reduce.............................................. 25
Figura 8 - Plataformas da Ferramenta ...................................................................................... 27
Figura 9 - Configurao Bsica da Ferramenta ........................................................................ 28
Figura 10 - Single Node da Ferramenta ................................................................................... 29
Figura 11 - Cdigo de importao das bibliotecas do Hadoop ................................................ 30
Figura 12 - Cdigo de declarao das variveis globais .......................................................... 31
Quadro 1 - Estrutura principal da tabela no banco de dados .................................................... 31
Figura 13 - Amostra dos dados do Centroide e Dados de Concentrao ................................. 32
Figura 14 - Cdigo da classe Map ............................................................................................ 33
Figura 15 - Cdigo do clculo de distncia entre os pontos ..................................................... 33
Figura 16 - Cdigo do clculo do ponto mais prximo do centride ....................................... 34
Figura 17 - Cdigo de sada do Map ........................................................................................ 34
Figura 18 - Cdigo da classe Reduce ....................................................................................... 34
Figura 19 - Cdigo para o clculo do novo centride .............................................................. 35
Figura 20 - Cdigo dos novos centrides no bando de dados .................................................. 35
Figura 21 - Cdigo da classe main ........................................................................................... 36
Figura 22 - Cdigo de importao dos dados para o sistema HDFS ........................................ 36
Figura 23 - Cdigo de Parada do Algoritmo ............................................................................ 36
Figura 24 - Concentrao minerada no MySQL com a mdia do log da concentrao de cada
ms. ........................................................................................................................................... 38
Figura 25 - Concentrao minerada no Hadoop com a mdia do log da concentrao de cada
ms. ........................................................................................................................................... 40
Quadro 2 - Dados Utilizados .................................................................................................... 42
Grfico 1 - Estimativa de tempo de execuo .......................................................................... 43
Grfico 2 - Consumo de CPU ................................................................................................... 44
Grfico 3 - Consumo de Memria ............................................................................................ 45
Grfico 4 - Estimativa de tempo de execuo de Concentrao .............................................. 46
Grfico 5 - Consumo de CPU de Concentrao ....................................................................... 46
Grfico 6 - Consumo de Memria de Concentrao.................................................................47
Figura 26 - 1 ms de concentrao (janeiro de 2015) com MySQL......................................... 48
Figura 27 - 1 ms de concentrao (janeiro de 2015) com Apache Hadoop ............................ 48
SUMRIO

1. INTRODUO............................................................................................................. 9
1.1 PROBLEMTICA ....................................................................................................... 11
1.2 JUSTIFICATIVA ......................................................................................................... 12
1.3 OBJETIVOS ................................................................................................................. 14
1.4 METODOLOGIA ......................................................................................................... 15
1.5 ESTRUTURA DO TRABALHO ................................................................................. 17
2. REFERENICAL TERICO ..................................................................................... 18
2.1 BIG DATA ................................................................................................................... 18
2.2 MINERAO DE DADOS ......................................................................................... 19
2.2.1 AGRUPAMENTO (CLUSTERING) ........................................................................... 21
2.3 APACHE HADOPP ..................................................................................................... 23
2.3.1 HADOOP DISTRIBUTED FILE SYSTEM (HDFS) .................................................. 24
2.4 O MODELO MAP/REDUCE....................................................................................... 24
2.5 CLOUDERA................................................................................................................. 26
3. APRESENTAO DA FERRAMENTA DE BIG DATA PARA MINERAO
DE DADOS EM COMPUTADORES DE BAIXO CUSTO. .................................. 27
3.1 INSTALAO E CONFIGURAO DA VIRTUAL MACHINE ............................ 27
4. MINERAO DE DADOS DE CONCENTRAO DE CLOROFILA
MARINHA COM APACHE HADOOP ................................................................... 30
4.1 VISUALIZAO DOS RESULTADOS DA MINERAO..................................... 37
5. AVALIAO DE DESEMPENHO COMPUTACIONAL E QUALITATIVO DA
FERRAMENTA APACHE HADOOP COM RELAO AO SGBD MYSQL ... 42
5.2 ANLISE COMPUTACIONAL.................................................................................. 42
5.3 DISCUSSO ................................................................................................................ 43
5.3.1 ANLISE QUALITATIVA ......................................................................................... 47
6. TRABALHOS CORRELATOS ................................................................................ 49
6.1 UMA AVALIAO DE DESEMPENHO DOS AMBIENTES DE
PROGRAMAO PARALELA HADOOP E SPARK .......................................................... 49
6.2 MINERAO DE DADOS COM BIG DATA DAS VARIABILIDADES ESPAO-
TEMPORAIS DAS CONCENTRAES DE CLOROFILA PRXIMAS DA COSTA
MARINHA BRASILEIRA ...................................................................................................... 50
7. CONCLUSES ........................................................................................................... 51
7.1 PONTOS FORTES E FRACOS ................................................................................... 52
7.2 TRABALHOS FUTUROS ........................................................................................... 52
REFERNCIAS ..................................................................................................................... 53
APENDICS ........................................................................................................................... 57
9

1. INTRODUO

O crescimento da tecnologia da informao, a partir de meados da dcada de 60,


transformou simples sistemas de processamento de dados em sofisticadas bases de dados. O
crescimento contnuo das tecnologias de hardware acarretou o desenvolvimento de poderosas
ferramentas computacionais capazes de trabalhar com o extenso volume de informaes
disponveis em diversas reas do esforo humano, como em dados de cartes de crdito,
estatsticas governamentais e reas de pesquisas, como, a exemplo, o registro de informaes
sobre dados mdicos.
Com a disponibilidade desse volume de dados, surge a oportunidade e o interesse de
investigar ferramentas capazes de auxiliar na extrao de conhecimento teis destas bases de
dados (FAYYAD, 1996). Neste ponto notria a utilizao de mtodos que auxiliem no estudo
e na filtragem dos dados obtidos durante uma explorao cientifica ou tecnolgica (YIN, 2005),
o que corriqueiramente embatido em temas como a Minerao de Dados e Big Data.
O processo de Minerao de Dados pode ser conceituado como um campo
interdisciplinar que rene tcnicas de reconhecimento de padres, banco de dados e
mecanismos para a visualizao das informaes com o objetivo de extrair conhecimento de
grandes repositrios de dados (COSTA et al, 2012).
A execuo de tarefas de Minerao de Dados no contexto de Big Data interpe alguns
conceitos que so fundamentais (MENEZES; FREITAS; PARPINELLI, 2016), sendo assim,
importante compreender o que significa Big Data.
O termo Big Data pode ser compreendido como o processamento de um grande volume
de dados produzidos por diferentes aplicaes, onde se faz notria a necessidade da extrao
do conhecimento a partir desse volume de dados (VIEIRA et al., 2014).
Uma das divises deste cenrio est ligada ao conceito de Big Data Analytics
(OPSERVICES, 2010) que faz referncia ao conjunto de ferramentas capazes de tratar desse
grande contingente de dados para analisar, coletar e organizar as informaes em dados teis
ao estudo.
De acordo com Cheder (2014) necessrio a ateno aos mecanismos que compem o
conceito de Big Data Analytics, pois so estas ferramentas que transformam os dados em
informaes que representam algum valor para o que se pretende analisar.
10

Como resultado dentre as ferramentas voltadas para o contexto de Big Data, adotamos
o sistema Cloudera e a ferramenta Apache Hadoop framework administrado pela empresa
Apache Software Foundation para a anlise de informaes acerca da Concentrao de
Clorofila Marinha.
No decorrer deste estudo pretende-se identificar como os conceitos atribudos as
ferramentas de Big Data permitem a coleta de dados e a anlise das informaes atravs da
minerao de dados em computadores de baixo custo como estratgia para a extrao de
conhecimento.
O estudo de caso necessrio para a avaliao das ferramentas fora realizado, em sua
totalidade, atravs do estudo das ferramentas, estruturao da base de dados da concentrao
de clorofila marinha nas ferramentas Apache Cloudera e em computadores de baixo custo e
posteriormente minerao dos dados processado nas ferramentas, onde esperamos recolher o
resultado obtido para a anlise eficincia computacional das ferramentas adotadas.
11

1.1 PROBLEMTICA

A minerao de dados de concentrao marinha outrora realizado a partir tcnicas


tradicionais de banco de dados constantes no trabalho do professor Italo Flexa di Paolo
apresentaram-se proveitosas e eficazes quanto ao tempo gasto no processamento deste grande
volume de informaes, no entanto, tendo em vista que por se tratar de um extenso volume de
dados tais informaes podem ser empregadas no contexto de Big Data e, sendo assim,
apresentamos o seguinte problema de pesquisa: A utilizao de ferramentas de Big Data mais
eficiente em comparao ao modelo tradicional de banco de dados?
12

1.2 JUSTIFICATIVA

De acordo com Diebold (2012), o conceito de Big Data tem apresentado cada vez mais
ocorrncia entre os estudos realizados acerca desse tema, o que consequentemente eleva-se a
importncia e o desenvolvimento de estudos com destaque para este tema.

Figura 1 - Produo de artigos de Big Data na revista Social Sciences Citation


Fonte: Zhu (2013).
Com o crescente avano da tecnologia e o aumento do volume das informaes e dados
gerados pelas aplicaes, vem crescendo as formas e os recursos para se trabalhar com este
quantitativo de dados. A altercao sobre quais mecanismos sero adotados para o tratamento
destas informaes ressalta a importncia do uso de sistemas e ferramentas projetados para
estas finalidades.
Segundo Nogare (2014) importante entender o funcionamento e a aplicabilidade das
ferramentas dentro do contexto de Big Data tendo em vista as tcnicas que sero utilizadas para
o processamento dos dados e a anlise das informaes que devem ser exploradas e, assim,
estudar qual soluo se aplica a necessidade do problema.
Enxergou-se neste estudo a oportunidade de utilizar ferramentas de Big Data, atravs da
minerao de dados, em computadores pessoais e de baixo custo pelo fato de no se ter
encontrado amplamente na literatura um estudo que utilize estas ferramentas em sistemas com
hardware mais modesto.
Os dados referentes a 18 anos de concentrao de clorofila marinha possuem um amplo
contingente de dados fazendo-se necessrio a utilizao de mtodos de processamentos cada
vez mais rpidos e eficientes.
13

O uso de ferramentas de Big Data possibilita a execuo de tarefas relacionadas ao


processamento dos dados, em quantitativo de tempo menores, pois, uma vez submetidos aos
mecanismos desenvolvidos para trabalharem com dados dessa natureza estes passam a ser
distribudos e processados, o que segundo Fuller; Millett (2011), proporcionam um melhor
desempenho, menor tempo de execuo e facilitam o trabalho de anlise e coleta de dados.
Por isso, este trabalho se torna relevante, pois uma vez que apresenta a adoo de
ferramentas de Big Data com o objetivo de processar dados em quantitativo de tempo cada vez
menores e a composio destas ferramentas nos processos de minerao de dados, logo,
necessrio ateno para os procedimentos que o trabalho apresenta, bem como a ateno para
os requisitos propostos.
Por fim, a realizao deste trabalho uma forma de aprendizado para o futuro, pois com
a experincia obtida no processamento de dados atravs de ferramentas de Big Data, possvel
aplicar o conhecimento adquirido em futuros empreendimentos e oportunidades.
14

1.3 OBJETIVOS

O objetivo geral deste trabalho minerar dados de concentraes de clorofila marinha


utilizando Apache Hadoop, comparando esta ferramenta de Big Data em relao ao
processamento em banco de dados tradicionais.

Para atingir este objetivo geral, foram definidos os seguintes objetivos especficos:

Apresentar ferramentas especficas para minerao de dados, no contexto de Big


Data, a serem utilizadas em computadores de baixo custo.
Minerar dados de concentraes de clorofila marinha utilizando a ferramenta
Apache Hadoop.
Avaliar o desempenho computacional e qualitativo das ferramentas de Big Data
em relao ao processamento executado em banco de dados tradicionais.
15

1.4 METODOLOGIA

A escolha desta temtica surgiu mediante o trabalho realizado pelo professor talo Flexa
Di Paolo acerca da concentrao de clorofila marinha, onde se buscou a criao de uma
metodologia que auxiliasse o trabalho anterior atravs da realizao do processo de minerao
com ferramentas de Big Data.
Para atingir os objetivos propostos foram utilizadas virtualizaes em diferentes
sistemas computacionais com a plataforma Cloudera que, neste ponto, o ambiente que
proporciona toda uma gama de ferramentas que podem ser utilizadas para se trabalhar com Big
Data, e, dentre elas, o Apache Hadoop. Essa virtualizao ser realizada atravs do Virtualbox,
onde os dados sero minerados em dois computadores pessoais e de baixo custo com diferentes
configuraes para a anlise dos aspectos descritos neste trabalho.
Desta forma, a escolha da ferramenta Apache Hadoop se deu devido aos mecanismos
disponibilizados e por esta ser adotada pela comunidade cientifica como estrutura para a anlise
de grandes contingentes de dados (NOGUEIRA, 2015; PENCHIKALA, 2015; HANSEN,
2012).
O repositrio de dados utilizado neste trabalho contm registros sobre a concentrao
de clorofila marinha dividida mensalmente no perodo de 18 anos. Os dados possuem 3.5
milhes de registros, dispostos em formato de arquivo CSV, sendo classificado como uma base
com extenso volume (KIM, 2014).
Neste trabalho realizada a apresentao das ferramentas de Big Data, demonstrando
as etapas necessrias para as configuraes de hardware do sistema e a estruturao dos dados
na arquitetura adotada pela ferramenta, com o intuito de realizar o processo de minerao e, por
fim, a avaliao dos resultados computacionais e qualitativos entre as ferramentas utilizadas
neste cenrio.
Para a minerao de dados com a ferramenta Hadoop ser empregada a IDE de
programao NetBeans para o desenvolvimento do algoritmo k-means em conjunto com as
funes Map/Reduce, onde ser desenvolvido em um projeto baseado na linguagem de
programao Java.
Este estudo constitui-se de uma abordagem qualitativa, na relao dos resultados obtidos
com a ferramenta Hadoop e MySQL, visando assim as descries espao-temporais destes
modelos de processamento.
16

Ao final ser realizada a avaliao do desempenho computacional a partir da minerao


desenvolvida neste trabalho com base na implementao construda no trabalho do professor
talo Flexa Di Paolo.
O enfoque desta avaliao ter como base o trabalho realizado por Nogueira (2015)
onde so apresentadas diversas mtricas para a avaliao da eficcia das ferramentas adotadas
para a avaliao.
17

1.5 ESTRUTURA DO TRABALHO

Este trabalho est divido em sete captulos onde inicialmente apresentamos a


contextualizao e a introduo para o estudo proposto neste trabalho, bem como os objetivos
e a metodologia adotada. O captulo 2 fora dedicado para as fundamentaes e conceituaes
tericas sobre a Big Data, Minerao de Dados e sobre as ferramentas utilizadas para o
desenvolvimento deste estudo.
O captulo 3 descreve as configuraes para a virtualizao da ferramenta e a
estruturao da base de dados. O captulo 4 descreve com detalhes como fora realizada a
minerao de dados de concentrao de clorofila marinha, bem como os resultados desta
minerao.
O captulo 5 apresenta a avaliao de desempenho e as anlises qualitativas da
ferramenta. O captulo 6 apresenta os trabalhos correlatos realizadas na rea. O captulo 7
apresenta as concluses, pontos fortes e fracos deste estudo e os trabalhos futuros a serem
desenvolvidos nesta rea.
18

2. REFERENICAL TERICO

Aps a escolha do tema, estudos foram realizados para obteno das informaes a
respeito do conceito de Big Data e sobre a ferramenta Apache Hadoop que sero apresentadas
nas subsees abaixo.

2.1 BIG DATA

O conceito de Big Data pode ser definido como o processamento de um amplo volume
de dados produzidos por diferentes aplicaes sendo elas de origem cientfica, dados mdicos
e biolgicos est ser o enfoque deste estudo ou aplicaes voltadas para a rea de
engenharia, onde se faz notria a necessidade da extrao do conhecimento a partir de uma
grande massa de dados (VIEIRA et al, 2012).
Segundo Alecrim (2013) o termo Big Data est relacionado com cinco fatores
conhecidos como os 5 Vs do Big Data, sendo eles:
Volume: Quantidade de informaes e dados produzidas por diferentes aplicaes
Velocidade: O tempo necessrio para o processamento e o tratamento dos dados
oriundos das aplicaes.
Variedade: Os volumes de informaes so oriundos da diversidade das aplicaes,
isto , podemos ter dados estruturados armazenados em banco de dados como MySQL ou
PostgreSQL, e dados no estruturados obtidos de diferentes fontes como documentos, udios e
assim por diante.
Veracidade: Este fator est relacionado com a confiabilidade dos dados, em outras
palavras, necessrio que os processos a partir do Big Data possam garantir a mxima
consistncia dos dados.
Valor: Ester termo est ligado importncia dos dados obtidos mediante os processos
realizados dentro de uma aplicao de Big Data, ou seja, o valor dado aos resultados obtidos.
A partir destes fatores entende-se que o conceito de Big Data no trata apenas desse
amplo volume de dados, mas que estes outros fatores correspondem ao contexto onde se espera
obter determinados resultados. As solues presentes dentro deste contexto precisam trabalhar
com a distribuio de processamento e a elasticidade, ou seja, deve-se entender que estas
aplicaes devem trabalhar com dados que crescem consideravelmente em um curto espao de
tempo.
19

Figura 2 - Propriedades do Big Data


Fonte: Zikopoulos et al., 2011
Segundo Cheder (2014) este quadro acontece devido ao embasamento em quatro
propriedades que circundam os modelos tradicionais e que acaba inviabilizando a sua adoo
de maneira eficiente, sendo elas:
Atomicidade: Toda transao de informaes deve ser atmica, isto , a mesma s pode
ser considerada eficiente se executada de forma completa.
Isolamento: As transaes no podem interferir em outra que esteja sendo executada
ao mesmo instante.
Consistncia: Todas as regras aplicadas a sistema gerenciadores de banco de dados
devem ser amplamente seguidas.
Durabilidade: Tendo em vista que a atomicidade tenha sido seguida, os dados vindos
destas transaes no podem ser perdidos, isto , uma vez que a transao esteja concluda os
dados subsequentes devem ser mantidos.
O problema gerado por essas propriedades, segundo Nolasco (2016), torna a soluo
dos modelos tradicionais restritivas para uma situao de Big Data, por vezes, uma das
propriedades pode inviabilizar outra e assim por diante.

2.2 MINERAO DE DADOS

Para Galvo e Marin (2009):

A expresso Minerao de Dados (DM) surge inicialmente, como um sinnimo de


KDD, mas apenas uma das etapas da descoberta de conhecimento em bases de dados
no processo global do KDD. O conhecimento que se consegue adquirir atravs da DM
20

tem se mostrado bastante til nas mais diversas reas, como medicina, finanas,
comrcio, marketing, telecomunicaes, meteorologia, agropecuria,
bioinformticas, entre outras.

O conceito de Minerao de Dados apresentado por Fayyad et al. (1996), afirmam que
a Minerao de Dados ou Data Mining uma etapa do processo de KDD que consiste em aplicar
poderosos algoritmos de anlise e descoberta de dados que produzem padres acerca destes
dados.
A princpio, a minerao de dados era concebida como um sinnimo de Knowledge
Discovery in Databases (KDD) ou Descoberta de Conhecimento em Banco de Dados
(GALVO; MARIN, 2009), mas na verdade, tratava-se de uma das etapas desse processo,
estando na quarta posio e sendo antecedidas das etapas de Seleo, Pr-Processamento e
Transformao.
Ainda no existe uma relao unanime entre o KDD e o processo de minerao de dados.
Para REZENDE (2005) ambos os processos podem ser considerados parecidos. De acordo com
o Fayyad (1996), o KDD faz referncia a todo o processo de descoberta de conhecimento e a
minerao de dados uma das etapas deste processo, no entanto, segundo Oliveira; Silva
(2009), ambos os autores concordam que o processo de minerao deve ser iterativo e dividido
em estgios. Na figura abaixo podemos ver a representao deste processo

Figura 3 - Etapas do KDD


Fonte: Di Paolo (2015).

Para a minerao de dados, onde se tem conhecimento das classes as quais cada coluna
pertence, so utilizados mtodos de aprendizagem supervisionada, que so classificados como
algoritmos preditivos, pois sua utilizao pressupe que sejam fornecidas previses ou
21

tendncias, explicitando informaes que se encontram implcitas nos dados em que foram
aplicados (Di PAOLO, 2015). Tarefas de minerao de dados pertencentes a este modelo so:

Classificao: Os algoritmos neste modelo tm por finalidade determinar


o valor discreto de um atributo atravs dos valores de um subconjunto
dos demais atributos.
Regresso: usada para definir um determinado valor para algum
atributo desconhecido.

Quando no se tem conhecimento das etiquetas dos dados que se pretende trabalhar e
nem o conjunto de classes a ser analisada, so utilizados os mtodos de aprendizagem no
supervisionada. Tarefas de minerao de dados pertencentes a este modelo so:

Associao: Tem como objetivo identificar associaes entre os registros


que, de alguma forma, devem estar relacionados. Os algoritmos que
trabalham neste sentido so as regras de associao e os padres
sequenciais.

A Minerao de dados ainda possui caractersticas interdisciplinares, e por isso conta


com colaborao de outras reas do conhecimento como Banco de Dados, Aprendizado de
Mquina, Estatstica, Recuperao de Informao e Computao Paralela e Distribuda, para
que possa ser aplicada de forma mais clara e efetiva (REZENDE, 2015).

2.2.1 AGRUPAMENTO (CLUSTERING)

Os mtodos de agrupamento so considerados como tcnicas de aprendizagem no


supervisionada. A partir de um determinado conjunto de registros, so originados grupos
contendo os registros mais semelhantes. De uma forma geral, essas similaridades so realizadas
a partir das medidas de distncia (Euclidiana, Manhattan, entre outras) entre esses registros. Os
algoritmos mais comuns so: K-Means e K-Medoids.
22

K-Means: Este algoritmo usa o conceito de centride, onde segundo


Nogare (2015), o K quantidade de centrides que sero nomeados e
auxiliar a encontrar a similaridade dos registros. De acordo com
Oliveira; Silva (2009) para cada dado o registro inserido no
agrupamento com a menor distncia, isto , com maior similaridade e o
centride calculado novamente a cada registro inserido.
K-Medoids: Este algoritmo uma variao do K-Means, se
diferenciando pela escolha do objeto mais central do agrupamento para a
realizao dos clculos.

O algoritmo K-Means amplamente utilizado para tarefas de clusterizao


(OLIVEIRA, 2009). Em sua forma mais genrica, segundo Lloyd (2004), funciona da seguinte
maneira:
O nmero de grupos ou o K que se deseja encontrar precisa ser informado, em seguida,
os pontos de maneira aleatria so escolhidos para representar os centros ou centrides do
grupo, sendo assim, um conjunto de registros so divididos de maneira que cada registro
atribudo ao seu grupo ou centride com maior proximidade. Por fim, a cada nova interao do
algoritmo os centrides so recalculados com base nos registros pertencentes no grupo e, logo
aps todos os elementos so reagrupados para o grupo onde o novo centride se encontra mais
prximo deste registro.

Figura 4 - Exemplo de execuo do K-means


Fonte: Prass (2013).

De acordo com Witten; Frank (2005) este algoritmo de agrupamento muito robusto e
eficiente. No difcil provar que o processo minimiza a distncia quadrtica total de cada
ponto do grupo ao seu centride (OLIVEIRA, 2009), no entanto, o que se faz iniciar o
23

algoritmo repetidas vezes, com diferentes centrides e escolher aquele resultado com menor
distncia quadrtica total.

2.3 APACHE HADOPP

O Hadoop uma ferramenta de cdigo aberto desenvolvida para o processamento e


anlise de extenso volume de dados e informaes, sejam eles de fontes estruturadas ou no
estruturados (RIBEIRO, 2014). O projeto mantido pela Fundao Apache com a colaborao
de empresas como Facebook, Google e a IBM.

Figura 5 - Arquitetura do Hadoop


Fonte: Nogueira (2015).
A utilizao deste framework permite o processamento das informaes atravs da
utilizao de clusters e de mtodos de programao simples voltada para a ferramenta
(HANSEN, 2012), no entanto, neste estudo a abordagem a ser implementada ser voltada no
processamento em computadores com hardware mais modesto.
O modelo de processamento adotado pela ferramenta Apache Hadoop utiliza como base
as funes de Map/Reduce para o agrupamento dos dados e obteno de padres para os dados
selecionados.
Uma das atribuies desta ferramenta a sua escalabilidade, isto , medida que a base
de dados se torna maior e mais complexa, possvel acrescentar computadores ao projeto sem
a necessidade de realizar configuraes complexas no sistema, porm, necessrio conhecer o
sistema de arquivos adotado na ferramenta.
24

2.3.1 HADOOP DISTRIBUTED FILE SYSTEM (HDFS)

O HDFS um sistema de arquivos que opera de forma distribuda e voltada para o


processamento de grandes lotes de dados. O sistema conta com suporte a falhas e possui acesso
paralelo para que o Hadoop funcione corretamente a base de dados deve estar no formato que
seja visvel para esta ferramenta.
Segundo HANSON (2013) o HDFS disponibiliza o acesso com o alto grau de
rendimento para os dados do Hadoop e adequado para projetos com grandes conjuntos de
dados, o que nos leva a apresentar algumas caractersticas deste sistema na figura abaixo:

Figura 6 - Caractersticas do HDFS


Fonte: Hanson (2013).

2.4 O MODELO MAP/REDUCE

Apresentado em 2004 pelos pesquisadores da Google, Jeffrey Dean e Sanjay Ghemawat


como resultado de cinco anos de desenvolvimento, o Map/Reduce um modelo de programao
paralela que capaz de processar grandes quantidades de dados, em diversos formatos (DEAN;
GHEMAWAT, 2004).

O termo Map/Reduce se refere diretamente a duas tarefas distintas que os programas


Hadoop realizam. A primeira a funo Map, que pega uma poro de dados e converte em
outra poro de dados, onde esses elementos so distribudos em tuplas (Par de Chave / Valor).
A tarefa Reduce recebe os valores passados pelo Map como entrada e divide essas tuplas
25

recebidas em tuplas ainda menores, facilitando o processamento desses dados. Como o prprio
nome demonstra, a funo Reduce vem sempre depois da Map. (IBM, 2017)
O Map/Reduce teve seu surgimento provocado pela necessidade que empresas tinham
de processar seus dados que j possuam um volume muito grande. Para isso, a computao
precisava ser distribuda e executada paralelamente.

Figura 7 - Exemplo de processamento do Modelo Map/Reduce.


Fonte: Nogueira (2015).

Conforme apresentado na figura 7, o processamento iniciado a partir da leitura de um


determinado arquivo (texto, stream de dados ou outro gnero de dados). Os dados ento so
separados e submetidos a um ou mais ns de processamento, o que ocorre na fase de splitting.
Na prxima fase os registros so submetidos a funo Mapping que, neste exemplo, realiza a
contagem de cada palavra no arquivo.
Na fase de shuffing os dados originados da funo Map so clusterizados e enviados
para a prxima fase. Neste ponto ocorre funo Reduce onde os dados agrupados so
computados. Os dados ento computados so escritos novamente no sistema de arquivos HDFS
e finaliza-se a funo Map/Reduce.
Tendo como um de seus objetivos abstrarem do usurio a paralelizao, a tolerncia a
falhas e a distribuio dos dados e o balanceamento das cargas, os desenvolvedores
conseguiram expressar apenas as aes computacionais simples. (DEAN; GHEMAWAT,
2004). O que permite que o programador mantenha o foco no problema, deixando por conta da
aplicao a distribuio e o paralelismo.
26

2.5 CLOUDERA

O Apache Hadoop um framework de cdigo aberto que possibilitou a vrias empresas,


criarem sua prpria implementao de acordo com suas necessidades e objetivos (APACHE,
2013). Nesse cenrio, que surge o Cloudera, uma plataforma integrada que tem por objetivo,
o gerenciamento, a manipulao e a anlise de dados volumosos e que esto em acelerado
crescimento.
Alm de contar com distribuio do Apache Hadoop, a plataforma conta com a
implementao de diversos projetos relacionados ao Apache Hadoop, como por exemplo
Apache Impala, Apache Sqoop, Apache Hive, entre outros.
A plataforma desenvolvida com tendo como base o CentOS, uma distribuio Linux
derivada do Red Hat Enterprise Linux (RHEL), que oferecida para a comunidade
desenvolvedora a fim de utilizarem em seus projetos. (CentOS, 2017)
A interao com o usurio feita atravs do Cloudera Manager que uma aplicao
utilizada apara implantao do CDH, gerenciamento e monitoramento da plataforma. Nela,
encontramos o Admin Console, uma interface baseada na Web para a administrao dos dados.
27

3. APRESENTAO DA FERRAMENTA DE BIG DATA PARA MINERAO


DE DADOS EM COMPUTADORES DE BAIXO CUSTO.

Partindo do que foi abordado nos captulos anteriores, as ferramentas utilizadas para o
desenvolvimento deste estudo visam proporcionar a aplicao dos dados de concentrao de
clorofila marinha em computadores de baixo custo, para tanto, os seguintes processos
apresentados neste captulo sero adotados para a estruturao dos dados e, posteriormente,
minerao de dados nas aplicaes.
O passo inicial para a implementao dos dados a serem utilizados neste estudo se
concentra na instalao da ferramenta Cloudera e das configuraes necessrias para o melhor
aproveitamento do hardware do sistema.
Em relao ao sistema operacional utilizado para a virtualizao da ferramenta ser
usada uma distribuio Linux, mas especificadamente o Ubuntu na verso 14 LTS como
mquina hospedeira. Outro ponto fundamental o hardware a ser empregado para o
processamento dos dados na ferramenta.
Neste contexto, a mquina empregada para o processamento dos dados conta com um
processador Intel Core i7 3 Gerao, 4.0 GHz, HD SSD de 220 GB e 16 GB de RAM,
onde, segundo a prpria desenvolvedora, o adequado para o funcionamento da ferramenta.

3.1 INSTALAO E CONFIGURAO DA VIRTUAL MACHINE

Figura 8 - Plataformas da Ferramenta


28

Fonte: Prprios autores (2017).

O primeiro ponto a ser mencionado a disponibilidade de acesso ferramenta atravs


da pgina web mantida pela desenvolvedora. O acesso rea de download da ferramenta
possibilita a aquisio da ferramenta a partir de uma mquina virtual em verses
disponibilizadas especificadamente para clusters ou variantes para Virtual Box ou VMWare,
onde, neste estudo, optamos pela virtualizao para o Virtual Box.
O processo de instalao da ferramenta realizado atravs da funo Importar
Appliance presente no software de virtualizao.

Figura 9 - Configurao Bsica da Ferramenta


Figura 7 - Configurao Bsica da Ferramenta
Fonte: Prprio autores (2017).

Nesta etapa possvel configurar algumas propriedades da virtualizao da ferramenta


como o nmero de CPUs a serem destinadas para a aplicao e a quantidade de memria fsica
alocada para a ferramenta. O hardware da mquina hospedeira disponibilizar 12 GB/16 GB de
RAM e 3/4 CPUs para a aplicao.
O passo seguinte aps a finalizao da importao da ferramenta o despejo de memria
de vdeo e a habilitao da acelerao 3D para a aplicao. Outra funo selecionada o
compartilhamento de pasta entre as mquinas para a estruturao da base de dados no Apache
Hadoop.
29

O sistema adotado neste estudo se baseia no conceito de single-node, onde o


processamento ser executado em um nico n ou, neste caso, em um nico computador com
as caractersticas outrora mencionadas.

Figura 10 - Single Node da Ferramenta


Fonte: Prprio autores (2017).
A ferramenta Cloudera possibilita o processamento em single-node ou multi-node, no
entanto, o processamento adotado em multi-node est vinculado utilizao de clusters ou
servidores voltados para esta finalidade, onde, neste estudo, no ser o foco da aplicao.
O tipo de processamento aqui descrito baseado na CDH (Cloudera Distributed
Hadoop) disponibilizada pela aplicao, onde, de forma conceitual, significa o acesso s
ferramentas de Big Data por meio da entrada de comandos atravs do Terminal ou de uma
interface web disponibilizada pela ferramenta.
O acesso infraestrutura do Hadoop na aplicao acontece atravs do HUE (Hadoop
User Experience) que permite a anlise dos dados diretamente no navegador. O HUE ainda
permite a gravao de consultas nas ferramentas Apache Hive e Impala (CLOUDERA, 2015)
e um SDK que permite criar mecanismos que podem aproveitar os recursos centralizados na
aplicao.
30

4. MINERAO DE DADOS DE CONCENTRAO DE CLOROFILA


MARINHA COM APACHE HADOOP

Um dos mtodos utilizados para manipular a grande quantidade de informaes


existentes a minerao de dados. A minerao de dados consiste em uma poderosa ferramenta
de auxlio que permite gerar conhecimento a partir de uma grande quantidade de registros,
atravs do processo de descobrimento de novas correlaes, utilizando tecnologias de
reconhecimento de padres e tcnicas matemticas e estatsticas (LAROSE, 2014 apud
NEVES, 2016).
Partindo desta afirmativa, o passo inicial definir como aplicar este conceito
arquitetura do Hadoop e as prximas aes requeridas para o processamento e anlise das
informaes referentes a base de dados usada nesse trabalho.
Como mostrado em pontos anteriores a distribuio Cloudera possibilita o acesso ao
Hadoop atravs do prprio navegador web, possibilitando assim, a ampliao dos recursos de
hardware e o acesso atravs de outras mquinas disponveis na rede (APACHE, 2013), no
entanto, outras alternativas podem ser adotadas para a minerao de dados de concentrao de
clorofila marinha, haja em vista que, o algoritmo escolhido para a clusterizao destes dados
no se apresenta de maneira nativa na arquitetura da ferramenta e, sendo assim, se mostra
necessrio a construo do algoritmo que alcance toda a robustez fornecida pela arquitetura do
Apache Hadoop.
No processo de minerao a aplicao do algoritmo K-Means fora construdo em Java
com base na implementao desenvolvida por Chaudhary (2013) e adaptado com o objetivo de
melhorar a acurcia dos resultados de clusterizao e desempenho da ferramenta.

Figura 11- Cdigo de importao das bibliotecas do Hadoop


Fonte: Adaptado de Chaudhary (2013).
31

Nota-se inicialmente a importao das classes referentes a arquitetura Hadoop, o modelo


de processamento Map/Reduce e as classes ligadas ao banco de dados usado pela aplicao,
onde dessa forma obtemos os imports corretos para o processo de minerao do algoritmo.
O prximo passo definir uma conexo com o banco de dados somente com a funo
de recuperarmos o resultado da minerao. Neste ponto vale ressaltar a estrutura criada para a
armazenagem destes dados. O quadro abaixo apresenta os seguintes campos e seus dados.

Nome da Coluna Tipo


Centroide FLOAT
Log_Concentrao FLOAT
Log_Concentrao_Minerada FLOAT

Quadro 1 - Estrutura principal da tabela no banco de dados


Fonte: Prprios autores (2017).

A prxima etapa declarar algumas variveis globais que sero usadas em todo cdigo
e que possuem caractersticas fundamentais para a execuo do algoritmo.

Figura 12 Cdigo de declarao das variveis globais


Fonte: Adaptado de Chaudhary (2013).
De maneira detalhada, a varivel CENTROID_ARQUIVO_NOME contm o caminho
de entrada para os centrides usados para definir o nmero de grupos, isto , para este parmetro
definimos um arquivo com 20 valores randmicos que representam os grupos desejados e
prximos dos dados que desejamos clusterizar levando em conta que os centrides usados neste
trabalho foram obtidos atravs de trabalhos anteriores realizados no banco de dados MySQL.
A varivel DATA_ARQUIVO_NOME representa os dados a serem minerados a partir da
execuo do algoritmo.
Observe que ambos os arquivos esto em formato de arquivo de texto (txt) para a
extrao dos dados e, tal medida fora adotado devido a leitura dos dados no sistema HDFS da
ferramenta e verificou-se que o algoritmo obteve um desempenho melhor ao buscar essas
informaes desta forma, ao contrrio de obt-la diretamente no banco de dados.
32

Figura 13 - Amostra dos dados do Centroide e Dados de Concentrao


Fonte: Prprios autores (2017)

A varivel JOB_NOME refere-se ao parmetro dado para cada job a ser executado no
K-Means e serve como um arranjo a partir da representao das funes Map/Reduce. O
SPLITTER representa como o algoritmo deve ler cada coluna de dados, isto , a cada TAB no
arquivo de dados o K-Means interpretar este comando com um separador de dados/colunas.
Neste primeiro bloco de cdigos, para finalizar, a varivel mCentroides transforma os
centrides em uma lista de array de Doubles, isto , o algoritmo armazena o conjunto de
centrides fornecidos pela ferramenta como um conjunto de dados a serem usados nas funes
de processamento do algoritmo.
Feita a estruturao dos arquivos utilizamos primeiramente a funo Map que ser
responsvel por calcular a distncia entre cada ponto e o seu centride. De acordo com
PICHILIANI (2006) a parte mais pesada dos clculos acontece nessa etapa, pois se temos um
grande volume de dados temos que multiplicar este quantitativo de dados pelo nmero de
grupos que desejamos clusterizar estas informaes.
33

Figura 14 Cdigo da classe Map


Fonte: Adaptado de Chaudhary (2013).
A ideia bsica neste ponto ler o arquivo contendo os centrides e armazena-lo em um
ArryList. O SPLITTER nesta fase l o arquivo dividido pelo valor atribudo a ele e o armazena
na lista. A grande vantagem desta abordagem realizao dos jobs em cache distribudo no
sistema HDFS, o que impacta diretamente na performance do algoritmo.

Figura 15- Cdigo do clculo de distncia entre os pontos


Fonte: Adaptado de Chaudhary (2013).
Ainda na classe map os dados so classificados de acordo com a sua distncia entre os
centrides de cada grupo, ou seja, a partir do centride atribudo anteriormente cada o ponto
vai pertencer classe representada pelo centride que est mais prximo deste dado.
34

Figura 16 Cdigo do clculo do ponto mais prximo do centride


Fonte: Adaptado de Chaudhary, 2013.
Outro ponto ainda a ser mencionado nesta fase o local exato onde a distncia
calculada e interada at que se encontre o ponto mais prximo relacionada a este centride.

Figura 17 Cdigo de sada do Map


Fonte: Adaptado de Chaudhary (2013).
Neste momento temos generalizao do sistema disponibilizado pelo quadro
Map/Reduce para coletar a sada dos dados atribudos a funo output.collect, onde neste
momento recuperamos os dados do centride e o dado de concentrao relacionado a ele como
parmetros de chave/valor para passarmos a funo Reduce.
Aps agrupar todos esses pontos, de acordo com Pichiliani (2006), o valor dos
centrides so apurados, isto , para cada classe que possui mais de um ponto o novo valor dos
centrides calculado fazendo-se a mdia de cada valor que pertencem a este grupo.

Figura 18 Cdigo da classe Reduce


Fonte: Prprios autores (2017).
A funo Reduce ir emitir todos os pontos dos dados de concentrao para esse
centride e calcular o prximo centride para esses pontos, sendo assim, os dados de
concentrao sero movidos para o centride que produzir a maior similaridade de dados.
35

Figura 19 Cdigo para o clculo do novo centride


Fonte: Adaptado de Chaudhary, 2013.
Este processo apesar de parecer complexo tem como objetivo encontrar o melhor grupo
para os dados de concentrao produzidos de acordo com o novo centride gerado e definir o
melhor agrupamento para estes dados no uma tarefa simples, haja em vista o nmero de
grupos e dados que se pretende minerar (NOLASCO; OLIVEIRA, 2016).
Neste aspecto o novo centride representa um dado que pode se diferenciar de parte dos
centrides enviados anteriormente, isto , os valores neste momento tendem a mudar tanto de
forma mnima quanto mxima podendo variar na quarta casa decimal, o que no representa uma
mudana significativa na clusterizao dos dados, quanto na primeira casa decimal levando a
novos agrupamentos dos dados de concentrao.

Figura 20 Cdigo dos novos centrides no bando de dados


Fonte: Adaptado de Chaudhary, 2013.
A funo output.collect mais uma vez recupera os dados do novo centroide e os novos
pontos atribudos aos novos agrupamentos.
Tem-se, nesse momento, a implementao completa do modelo de processamento
Map/Reduce e suas atribuies, no entanto, precisamos da classe principal para a execuo de
todo esse procedimento.
36

Figura 21 Cdigo da classe main


Fonte: Adaptado de Chaudhary, (2013).
Nota-se, portanto, a passagem do arquivo contendo os centrides iniciais para o sistema
de arquivos HDFS e em seguida a importao do arquivo contendo os dados a serem
clusterizados para o mesmo sistema de arquivo como demonstrado abaixo:

Figura 22 - Cdigo de importao dos dados para o sistema HDFS


Fonte: Adaptado de Chaudhary (2013).
O passo final definir uma condio de parada para o algoritmo, para isto definimos o
seguinte procedimento onde caso a distncia seja = 0,1 o algoritmo encerra o seu procedimento
devido ter alcanado a sua convergncia, ou seja, a distncia entre os pontos e o centroide a
mnima possvel.

Figura 23 - Cdigo de Parada do Algoritmo


Fonte: Adaptado de Chaudhary (2013).
Dessa forma temos o algoritmo K-Means implementado com as todas as suas funes
juntamente com o modelo de processamento Map/Reduce na ferramenta Apache Hadoop. O
cdigo completo se encontra no Apndice I deste trabalho.
37

4.1 VISUALIZAO DOS RESULTADOS DA MINERAO

Aps o processamento dos dados obtemos os mapas referentes a cada ms processado


pela ferramenta Apache Hadoop. Buscou-se utilizar cores que representassem o padro
oceanogrfico com a identificao de cada grupo minerado pela aplicao.
No entanto, anteriormente precisamos destacar os resultados obtidos pela minerao de
dados realizada com o SGBD MySQL. A figura 24 apresenta o resultado desta concentrao.
38

Figura 24 - Concentrao minerada no MySQL com a mdia do log da concentrao de cada ms.
Fonte: Di Paolo (2015).
39

Aps esta anlise, a figura 25 apresenta os resultados obtidos com a ferramenta Apache
Hadoop considerando tambm os pares latitude e longitude e todas as colunas representando os
meses do ano.
40

Figura 25 - Concentrao minerada no Hadoop com a mdia do log da concentrao de cada ms.
Fonte: Prprios Autores (2017).
41

Diferentemente do grfico apresentado na figura 24, alguns grupos no foram


identificados de maneira idntica, se diferenciando minimamente do resultado anterior, no
entanto, as variabilidades temporais (Di PAOLO, 2015) nas reas escolhidas para este estudo
apresentaram os mesmos resultados obtidos anteriormente, o que demonstra a eficcia do
modelo de processamento adotado.
42

5. AVALIAO DE DESEMPENHO COMPUTACIONAL E QUALITATIVO DA


FERRAMENTA APACHE HADOOP COM RELAO AO SGBD MYSQL

Com base nos resultados alcanados, alguns experimentos foram realizados como forma
de avaliar o desempenho da ferramenta Hadoop em relao ao processamento executado com
sistemas gerenciadores de banco de dados tradicionais.
De acordo com (HENNESSY, 2011 apud NOGUEIRA, 2015) o desempenho depende
das mtricas a serem estabelecidas para o que se pretende avaliar.
A anlise destas mtricas se baseia na execuo do algoritmo K-Means, levando em
contas alguns aspectos sugeridos por Nogueira (2015) que podem ser usados como parmetros
para avaliao desta ferramenta. Para este contexto manteremos a ateno para o tempo gasto
na execuo completa do algoritmo nos dois ambientes, contendo tambm o acesso a memria
e o tempo de utilizao da CPU.

5.2 ANLISE COMPUTACIONAL

Conforme determinamos na seo anterior ser estimado o tempo total de execuo, o


acesso a memria e o tempo de utilizao da CPU para avaliar o desempenho destes ambientes
de processamento.
O quadro abaixo apresenta os dados que sero minerados para medirmos o desempenho
das ferramentas Hadoop e MySQL.

Dados Parcela de dados


Concentrao_Clorofila 292.269 mil
Concentrao 3,5 milhes
Quadro 2 - Dados Utilizados
Fonte: Prprios autores (2017).

Para executar esta avaliao sero utilizados dois sistemas computacionais de pequeno
porte e de uso pessoal com as seguintes configuraes:
Notebook Dell, processador Intel Core i7 4 Gerao, rodando 2.4 GHz,
HD SATA de 500 GB e 8 GB de RAM
Desktop PC, processador Intel Core i7 4 Gerao, rodando 4.0 GHz, SSD
de 220 GB e 16 GB de RAM
43

5.3 DISCUSSO

Para a avaliao destes dados dividimos os resultados entre o SGBD MySQL e a


ferramenta Apache Hadoop, levando em conta as configuraes computacionais descritas
anteriormente.
Observou-se que ao processar os dados referentes a 1 (um) ms de concentrao de
clorofila marinha no SGBD MySQL o tempo total de execuo do algoritmo foi menor no
computador do tipo Desktop, levando em mdia 12 minutos para a sua execuo completa, sem
considerar falhas no processamento da ferramenta.
No entanto, ao processar a mesma base de dados na ferramenta Apache Hadoop
observou-se uma queda significativa no tempo de processamento da ferramenta, levando em
mdia 8 minutos para a entrega dos resultados, tendo como melhor resultado o computador do
tipo Desktop.
No grfico abaixo apresentado o tempo total gasto nos sistemas computacionais
usados neste trabalho.

MySQL Hadoop
32,1
TEMPO EM MINUTOS

9,6
8,3

8,1

NOTEBOOK DELL 8 GB DESKTOP PC 16 GB

Grfico 1 Estimativa de tempo de execuo


Fonte: Prprios autores (2017).
44

Em importante ressaltar que de acordo com este grfico que os melhores resultados so
apresentados pela ferramenta Apache Hadoop com base no hardware do Desktop, no entanto,
apesar da notria diminuio do tempo de execuo do algoritmo com este hardware, os dados
demonstram que claramente possvel alcanar os mesmos resultados com um sistema
computacional de menor robustez.
Outro aspecto a ser levantado nesta avaliao so os recursos consumidos para o
processamento destes dados. No grfico 2 e 3 so apresentados os grficos referentes a
minerao de 1 (um) ms de concentrao de clorofila, avaliando-se a utilizao de CPU e
memria durante o processamento dos dados.

MySQL Hadoop
92,5

82,8
64,3

54,6
VALORES EM %

NOTEBOOK DELL 8 GB DESKTOP PC 16 GB

Grfico 2 - Consumo de CPU


Fonte: Prprios autores (2017).
45

MySQL Hadoop

98,5

97,8
VALORES EM %

91,5

89,6
NOTEBOOK DELL 8 GB DESKTOP PC 16 GB

Grfico 3 - Consumo de Memria


Fonte: Prprios autores (2017).

Observa-se significativamente o aumento da utilizao de CPU e memria pela


ferramenta Hadoop. Tal fato pode ser explicado levando em considerao alguns fatores como
a virtualizao da ferramenta, a escrita dos dados em disco, alocao de memria e a prpria
robustez da ferramenta, o que leva a acrescentar que tais fatores pesam ao executar o
algoritmo de minerao.
A partir do segundo cenrio de avaliao, isto , os dados de concentrao de clorofila
marinha observou-se uma pequena alterao no consumo de CPU e memria, no entanto, o
tempo de execuo completa do processo de minerao diferenciou-se fortemente nos
diferentes ambientes de processamento. O resultado dessas aes esto demonstras nos grficos
abaixo.
46

MySQL Hadoop

6,28

5,12
4,3
TEMPO EM HORAS

1,52
NOTEBOOK DELL 8 GB DESKTOP PC 16 GB

Grfico 4 - Estimativa de tempo de execuo de Concentrao


Fonte: Prprios autores (2017).

Com relao a ferramenta Hadoop notou-se uma demanda ainda maior de tempo ao
executar o processamento, haja em vista que fatores como o algoritmo montado para a
minerao de dados, (NOGUEIRA, 2015) a procura pelos dados em disco e transferncia de
informaes acabam impactando como um todo no Hadoop.

MySQL Hadoop
98,5

96,8
VALORES EM %

92,3

91,6

NOTEBOOK DELL 8 GB DESKTOP PC 16 GB

Grfico 5 - Consumo de CPU de Concentrao


Fonte: Prprios autores (2017).
47

MySQL Hadoop

98,5

97,8
VALORES EM %

95,3

94,6
NOTEBOOK DELL 8 GB DESKTOP PC 16 GB

Grfico 6 - Consumo de Memria de Concentrao


Fonte: Prprios autores (2017).

A medida que os dados aumentam, a carga de processamento cresce notavelmente,


aproximando-se, assim, da capacidade mxima fornecida pelo hardware em ambos os cenrios
de utilizao de CPU e memria, nos diferentes ambientes de processamento.

5.3.1 ANLISE QUALITATIVA

Outro ponto sensvel nesta avaliao est relacionado ao aspecto qualitativo dos
resultados minerado pela ferramenta Hadoop. Nas figuras 26 e 27 apresentamos o resultado da
minerao com aproximadamente 300 mil registros realizada pelas ferramentas MySQL e
Apache Hadoop.
48

Figura 26 1 ms de concentrao (janeiro de 2015) Figura 27 - 1 ms de concentrao (janeiro de 2015)


com MySQL com Apache Hadoop
Fonte: Di Paolo (2017) Fonte: Prprios Autores (2017)

Conforme apresentado no captulo 4.1 deste trabalho, a anlise dos espaos temporais
da ferramenta Hadoop, em relao ao resultado gerado pelo SGBD MySQL, demonstram que
apesar de existirem algumas diferenas, a dinmica de concentrao e concentrao foram
devidamente identificadas.
Nota-se, tambm, uma clara regularidade no comportamento dos grupos, sugerindo,
assim, uma certa eficcia do resultado do Hadoop.
49

6. TRABALHOS CORRELATOS

Este captulo apresenta trabalhos pertinentes ao tema apresentado nos captulos


anteriores. Os presentes trabalhos so divididos em dois eixos temticos onde ser apresentado
a avaliao de desempenho dos ambientes de programao paralela Hadoop e Spark e a
minerao de dados com Big Data das variabilidades espao-temporais das concentraes de
clorofila prximas da costa marinha brasileira.

6.1 UMA AVALIAO DE DESEMPENHO DOS AMBIENTES DE PROGRAMAO


PARALELA HADOOP E SPARK

De acordo com Nogueira (2015) a mudana na arquitetura dos computadores tem levado
ao desenvolvimento de novas tcnicas de processamento e na utilizao de ferramentas
adequadas para a manipulao de grandes quantidades de dados.
O trabalho correlato proposto tem como autor Pedro Micael Theos Lucas Nogueira e
enfoca-se no contexto de Ferramentas de Big Data como artefato fundamental para o
processamento de dados semiestruturados ou no estruturados.
Segundo o autor deste estudo ao analisar separadamente cada uma das ferramentas de
Big Data e relaciona-las atravs de um processamento paralelo afirma que tais mecanismos
podem ser avaliados seguindo mtricas como o tempo de acesso ao disco, memria e o tempo
de uso da CPU, entre outros.
O autor ainda afirma que ferramentas Hadoop e Spark devem ser avaliadas, em relao
ao seu desempenho, atravs de mtodos nomeados como speedup e a eficincia do
processamento paralelo de ambas as ferramentas atravs da utilizao de frmulas matemticas.
Finalmente apresentado o resultado das avaliaes de desempenho das ferramentas no
contexto de Big Data e que refletem um melhor proveito no processo de escolha mais adequada
para a situao onde se deseja do aplicar as ferramentas.
50

6.2 MINERAO DE DADOS COM BIG DATA DAS VARIABILIDADES ESPAO-


TEMPORAIS DAS CONCENTRAES DE CLOROFILA PRXIMAS DA COSTA
MARINHA BRASILEIRA

Segundo Di Paolo (2015) o processo de minerao de dados aplicado ao contexto de


Big Data possibilita explorar de maneira satisfatria grandes contingentes de dados e encontrar
relaes entre estas informaes e, assim, obter algo que seja til para a o que se deseja
pesquisar.
O trabalho correlato proposto tem como autor o professor e mestre talo Flexa Di Paolo
e enfoca-se no contexto de Big Data como artefato o processamento de dados referentes s
concentraes de clorofila marinha prximas a costa marinha brasileira.
Segundo o autor procurou-se retratar a dinmica espacial da marinha como um
mecanismo de agrupamento de reas com similaridades de concentrao de clorofila marinha,
onde tais ocorrncias podem ser distinguidas atravs de algoritmos de clusterizao de dados.
Outro fator importante destacado pelo autor se refere ao poder computacional
direcionado para estas aes. De acordo com o autor, modelos computacionais com hardware
de baixo custo possibilitam a extrao de conhecimento dessas regies geogrficas, com o
benefcio de reduzir, assim, os custos financeiros com mquinas de alto porte.
Dessa forma, o trabalho passa a apresentar todos os passos para a seleo, extrao e
clusterizao dos dados em diferentes cenrios e em diferentes plataformas computacionais.
51

7. CONCLUSES

Este trabalho apresentou os processos necessrios para minerao de dados de


concentrao de clorofila marinha na ferramenta Apache Hadoop. Foram executados
experimentos em dois computadores de baixo custo a partir da estruturao dos dados na
ferramenta.
De uma forma geral, observou-se melhores resultados ao processar estes dados com o
sistema gerenciador de banco de dados MySQL, onde, neste ponto, torna-se respondida a
questo norteadora deste trabalho.
Seguindo o exposto, foram realizadas experimentaes a fim de identificar o sistema
operacional utilizado como mquina hospedeira para a virtualizao da ferramenta Hadoop.
Inicialmente o sistema operacional adotado fora baseado na plataforma Windows, no
entanto, as experimentaes realizadas neste sistema mostraram que no houvera um
aproveitamento significativo do hardware disponvel no sistema, o que, em certos casos,
tornava a utilizao do OS Cloudera dificultosa na plataforma operacional escolhida
inicialmente.
A utilizao de um sistema baseado em Linux possibilitou o melhor aproveitamento do
hardware do sistema, garantindo assim a diminuio do tempo de execuo e de consumo de
processamento utilizado pela ferramenta. Um fator limitante que, embora a alocao de
memria estivesse acima da mnima recomendada pela desenvolvedora, no foi possvel alocar
toda a memria disponvel no hardware do computador.
Outro ponto a ser destacado est relacionado as adaptaes no algoritmo de minerao.
Nos testes iniciais, o tempo mdio de execuo era de aproximadamente 20 horas, onde,
demonstrava uma perca notvel na equivalncia de tempo com SGBD MySQL, sendo assim,
com as devidas recomendaes diversas adaptaes foram realizadas para garantir um melhor
aproveitamento do algoritmo de minerao. O cdigo fonte desta verso inicial est disponvel
no apndice II deste trabalho.
As possiblidades tecnolgicas a partir dos resultados obtidos nos garantem ideias
inovadoras e de fcil acesso a usurios de computadores de baixo custo, pois, apesar de serem
ferramentas voltadas para um hardware e um profissional especifico da rea, as configuraes,
o hardware disponvel e os comandos utilizados na ferramenta mostraram que possvel a sua
execuo em computadores com sistemas mais acessveis e com relativo conhecimento nesta
rea de desenvolvimento.
52

Os objetivos especficos propostos neste trabalho foram plenamente alcanados,


levando em conta que a apresentao da ferramenta escolhida e os passos necessrios para a
minerao de dados foram perfeitamente atingidos, bem como a avaliao do desempenho e a
anlise qualitativa da ferramenta em relao a minerao de dados com modelo de banco
tradicionais.

7.1 PONTOS FORTES E FRACOS

FRACOS FORTES
Processamento paralelo inexistente Minerao dos dados utilizando ferramentas
para Big Data em computadores de baixo
custo.
Virtualizao da ferramenta impactando na Aproximao entre o ambiente de Big Data
diminuio do hardware disponvel para o e os pequenos usurios (estudantes e
procedimento. pesquisadores).
Necessidade de um hardware mais robusto Demonstrao da falta de necessidade de se
para minerar em paralelo adquirir um hardware robusto para comear
a estudar e trabalhar com o ambiente de BIG
DATA
A diferena de tempo de processamento Fcil adaptao do algoritmo Kmeans
entre a ferramenta MySql e o apache juntamente com o Apache Hadoop para
Hadoop qualquer soluo que se faa necessria.
Possibilidade de se trabalhar com os dados
de vrias formas e finalidades diferentes.

7.2 TRABALHOS FUTUROS

Este trabalho se focou inicialmente na proposta minerao de dados atravs de um


estudo de caso aplicado a concentrao de clorofila marinha, entretanto acredita-se que este
trabalho pode ser utilizado como referncia para trabalhos futuros, alm de se faz necessrio
complementao do estudo para melhores resultados. Nesse sentido, so apresentados a seguir
algumas propostas para trabalhos futuros:

a) Pesquisar e utilizar outras ferramentas para o processo de minerao de dados


com Big Data.
b) Executar este modelo de processamento de forma paralela.
c) Minerar diferentes fontes de dados alusivas a este trabalho.
53

REFERNCIAS

ALECRIM, Emerson. O que Big Data? INFOWESTER, 2013. Disponvel em:


<http://www.infowester.com/big-data.php>. Acesso em: 20 ago. 2016.

APACHE. Apache Hadoop Next Gen Map/Reduce (YARN), 2013. Disponvel em:
<http://hadoop.apache.org/docs/r0.23.10/hadoop-yarn/hadoop-yarn-site/YARN.html>
Acessado em: 27 nov. 2016

CASTRIOTTO, Thiago. A importncia dos tutoriais na internet, 2015. Disponvel em: <
http://www.webartigos.com/artigos/a-importancia-dos-tutoriais-na-internet/135620/>. Acesso
em: 26 out. 2016.

CENTOS. The CentOS Project, 2017. Disponvel em: <https://www.centos.org/>. Acesso


em: 12 out. 2016.

COSTA, Evandro et al. Minerao de Dados Educacionais: Conceitos, Tcnicas,


Ferramentas e Aplicaes, 2012. Jornada de Atualizao em Informtica na Educao -
JAIE 2012. Disponvel em: < http://br-ie.org/pub/index.php/pie/article/view/2341/2096>.
Acesso em: 22 out. 2016.

CHEDER, C. Big Data: expectativas, benefcios e barreiras, 2014. Disponvel em:


https://www.ibm.com/developerworks/community/blogs/ctaurion/entry/big_data_expect
ativas_beneficios_e_barreiras?lang=en. Acessado em: 13 nov. 2016

DEAN, Jeffrey; GHEMAWAT, Sanjay. Map/Reduce: Simplified Data Processing on


Large Clusters, 2004. Disponvel em: <https://www.usenix.org/legacy/event/osdi04/tech
/full_papers/dean/dean.pdf>. Acesso em: 10 ago. 2016.

DIEBOLD, Francis. A Personal Perspective on the Origin(s) and Development of Big


Data: The Phenomenon, the Term, and the Discipline, 2012. Disponvel em:
<http://www.ssc.upenn.edu/~fdiebold/papers/paper112/Diebold_Big_Data.pdf>. Acesso em:
29 out. 2016.

DI PAOLO, talo Flexa. Minerao de dados com Big Data das variabilidades espao-
temporais das concentraes de clorofila prximas da costa marinha brasileira. Campus
Universitrio do Guam UFPA, 2015.

FAYYAD, Usama; PIATETSKY-SHAPIRO, Gregory; SMYTH, Padhraic. From Data


Mining to Knowledge Discovery in Databases In: American Association for Artificial
Intelligence, EUA, 1996. Disponvel em: <http://www.kdnuggets.com/gpspubs/aimagkdd-
overview-1996-Fayyad.pdf>. Acesso em: 25 out. 2016.

FOX, Peter; HENDLER, James. Changing the Equation on Scientific Data


Visualization. 2011. Disponvel em: < http://science.sciencemag.org/content/sci/331/
6018/705.full.pdf>. Acesso em: 15 set. 2016.
54

FULLER, Samuel; MILLETT, Lynette. The Future of Computing Performance: Game


Over or Next Level? 2011. Disponvel em: <https://download.nap.edu/cart/download.
cgi?record_id=12980>. Acesso em: 16 set. 2016.

GALVO, Noemi Dreyer; MARIN, Heimar de Ftima. Tcnica de minerao de dados:


uma reviso da literatura, 2009. Disponvel em: < http://www.scielo.br/pdf/ape/v22n
5/14.pdf >. Acesso em: 16 set. 2016.

GIOVANNI. GES DISC Goddard Earth Schience Data and Information Services, EUA,
2014. Disponvel em: <http://disc.sci.gsfc.nasa.gov/giovanni/overview/index.html>.
Acesso em: 20 set. 2016.

HANSEN, Christer A. Optimizing Hadoop for the cluster, 2012. Disponvel em: < http://
citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.486.1265&rep=rep1&type=pdf>. Acesso
em: 26 out. 2016

HANSON, Jeffrey. Uma Introduo ao Hadoop Distributed File System, 2013. Disponvel
em: <https://www.ibm.com/developerworks/br/library/wa-introhdfs/>. Acesso em: 26 out.
2016

HEKIMA. Voc sabe o que Big Data Analytics, 2016. Disponvel em: < http://www.
bigdatabusiness.com.br/voce-sabe-o-que-e-big-data-analytics/>. Acesso em: 25 out. 2016.

KIM, Younghoon et al. DBCURE-MR:An efficient density-based clustering algorithm for


large data using Map/Reduce. Information Systems, n. 42, 2014, p. 15-35.

LLOYD, S. Least squares quantization in pcm. Information Theory IEEE Transactions,


2004. Disponvel em: <http://www-evasion.imag.fr/people/Franck.Hetroy/Teaching/
ProjetsImage/2007/Bib/lloyd-2004.pdf>. Acesso em: 10 set. 2016.

MENEZES, S. R. L; FREITAS, R. S; PARPINELLI, R. S. Anlise da qualidade de


diferentes mtricas para agrupamento de dados utilizando algoritmo bio-inspirado e
arquitetura Map/Reduce, 2016. Disponvel em: <http://www.lbd.dcc.ufmg.br/colecoes/
sbsi/2016/024.pdf>. Acesso em: 8 abr. 2017.

NEVES, Alana Kasahara. O Uso de Sries Temporais e Minerao de Dados no


Mapeamento de Cobertura do Solo e seus Padres, 2015. Disponvel em: < http:
//wiki.dpi.inpe.br/lib/exe/fetch.php?media=ser300:monografia_alanak.pdf >. Acesso em: 14
nov. 2016.

NOGARE, Diego. Quero trabalhar com Big Data, 2014. Disponvel em: <http://www.diego
nogare.net/2014/06/quero-trabalhar-com-big-data-como-fao/>. Acesso em: 15 nov. 2016.

NOGUEIRA, Pedro Micael T. Lucas. Uma Avaliao de Desempenho dos Ambientes de


Programao Paralela Hadoop e Spark, 2015. Disponvel em: <http://www.files.scire.net
.br/atrio/cefet-mg-ppgmmc_upl/THESIS/199/dissertacao_pedromicael_201222830027_2015
0814112009746.pdf >. Acesso em: 20 out. 2016.

NOLASCO, Diogo; Oliveira, Jonice. Modelagem de Tpicos e Criao de Rtulos:


55

Identificando Temas em Dados SemiEstruturados e No-Estruturados, 2016. Disponvel


em: < http://sbbd2016.fpc.ufba.br/sbbd2016/minicursos/minicurso4.pdf >. Acesso em: 07 abr.
2017

OLIVEIRA, Cssio Camilo; SILVA, Joo Carlos. Minerao de Dados: Conceitos,


Tarefas, Mtodos e Ferramentas, 2009. Disponvel em: < http://www.inf.ufg.br/sites/
default/files/uploads/relatorios-tecnicos/RT-INF_001-09.pdf>. Acesso em: 20 out. 2016.

OPSERVICES. Big Data Analytics, [2010?]. Disponvel em: < https://www.opservices.com.


br/big-data-analytics/>. Acesso em: 21 out. 2016.

PENCHIKALA, Srini. Big Data com Apache Spark, 2015. Disponvel em: < https://www.
opservices.com.br/big-data-analytics/>. Acesso em: 22 out. 2016.

PICHILIANI, Mauro. Data Mining na Prtica: Algoritmo K-Means, 2006. Disponvel em:
<https://imasters.com.br/artigo/4709/sql-server/data-mining-na-pratica-algoritmo-k-
means/?trace=1519021197&source=single>. Acesso em: 04 abr. 2017.

PRASS, Fernando Sarturi. Algoritmo de k-means, 2013. Disponvel em: <http://fp2.


com.br/blog/index.php/2013/algoritmo-de-k-means/>. Acesso em: 31 mai. 2017.

RIBEIRO, Claudio Jose Silva. Big Data: os novos desafios para o profissional da
informao. 2014. Disponvel em: <http://periodicos.ufpb.br/ojs/index.php/itec/article
/view/19380>. Acesso em: 16 set. 2016.

SANTOS, Renato P. Big Data: uma nova proposta didtica no ensino de cincias atravs
de ferramentas pblicas e gratuitas, 2013. Disponvel em: < https://www.researchgate.net
/publication/253234152_Big_data_uma_nova_proposta_didatica_no_ensino_de_ciencias_atra
ves_de_ferramentas_publicas_e_gratuitas>. Acesso em: 28 out. 2016.

SAS, Sistema. O que Big Data, [2012?]. Disponvel em: < http://www.sas.com
/pt_br/insights/big-data/what-is-big-data.html >. Acesso em: 16 set. 2016.

SAS, Sistema. Minerao de Dados: O que e porque importante, [2012?]. Disponvel


em: < http://www.sas.com/pt_br/insights/analytics/mineracao-de-dados.html#>. Acesso em:
20 out. 2016.

REZENDE, Solange Oliveira. Minerao de Dados, 2005. XXV Congresso da Sociedade


Brasileira de Computao, 2005. Disponvel em: < http://www.lbd.dcc.ufmg.br/colecoes
/enia/2005/0102.pdf>. Acesso em: 22 out. 2016.

VIEIRA, Marcos Rodrigues et al. Bancos de Dados NoSQL: Conceitos, Ferramentas,


Linguagens e Estudos de Casos no Contexto de Big Data. 2012. In: Simpsio Brasileiro de
Bancos de Dados - SBBD. Disponvel em: <http://data.ime.usp.br/sbbd2012/artigos/
sbbd_min_01.html>. Acesso em: 16 set. 2016.

YIN, R. K. Estudo de caso: planejamento e mtodos. 3 ed. Porto Alegre: Bookman, 2005.

WITTEN, I; FRANK, E. Data Mining: Practical Machine Learning Tools and


Techniques, 2005. Disponvel em: < https://www.ibm.com/developerworks/vn/
56

library/contest/dw-freebooks/Tim_Hieu_Big_Data/Understanding_BigData.PDF>. Acesso
em: 02 nov. 2016.

ZIKOPOULOS, Paul C. Understanding Big Data: Analytics for Enterprise Class Hadoop
and Streaming Data, 2011. Disponvel em: < https://www.ibm.com/developerworks/vn/
library/contest/dw-freebooks/Tim_Hieu_Big_Data/Understanding_BigData.PDF>. Acesso
em: 03 nov. 2016.

ZUBEN, Fernando J; MOSCATO, Pablo A. Uma Viso Geral de Clusterizao de Dados,


2002. Disponvel em:<ftp://ftp.dca.fee.unicamp.br/pub/docs/vonzuben/ia36802/topico502.pdf
>. Acesso em: 03 nov. 2016.
57

APENDICS

APNCIDE I Cdigo de Execuo do K-Means

import java.io.IOException;
import java.util.*;
import java.io.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.DecimalFormat;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.filecache.DistributedCache;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.*;
import org.apache.hadoop.mapred.*;
import org.apache.hadoop.mapred.Reducer;

public class Kmeans {

public static Statement stmt;

private static final String USUARIO = "root";


private static final String SENHA = "cloudera";
private static final String URL =
"jdbc:mysql://10.0.2.15:3306/clorofila";
private static final String DRIVER = "com.mysql.jdbc.Driver";

// Conecta com o banco


public static Connection abrir() throws Exception {

Class.forName(DRIVER);

Connection conn = DriverManager.getConnection(URL, USUARIO,


SENHA);

stmt = conn.createStatement();
return conn;

public static String OUT = "/home/cloudera/Jobs/testdata";


public static String IN = "/home/cloudera/Jobs/testdata";
public static String CENTROID_ARQUIVO_NOME =
58

"/centroidSaida.txt";
public static String OUTPUT_ ARQUIVO_NOME = "/part-00000";
public static String DATA_FILE_NAME =
"/concetracao_concentrao.txt";
public static String JOB_NOME = "KmeanHadaoop";
public static String SPLITTER = "\t";
public static List<Double> mCentroides = new ArrayList<>();

/*
CONFIGURE CRIA CENTROIDE
ATE QUE A DISTANCIA SEJA != 0,1
O MAP CALCULA AS DISTANCIA
O REDUCE CALCULA O NOVO CENTROIDE */

Na classe Mapper estamos substituindo a funo configure.


Neste, estamos lendo o arquivo de Cache Distribudo e, em
seguida, armazenando
isso em varivel de instncia "mCentroide"

*/
public static class Map extends Map/ReduceBase implements
Mapper<LongWritable, Text, DoubleWritable,
DoubleWritable> {

@Override
public void configure(JobConf job) {
try {
/* Obter o arquivo do cache distribudo
L-lo e armazenar o centride no ArrayList */
Path[] cacheFiles =
DistributedCache.getLocalCacheFiles(job);
if (cacheFiles != null && cacheFiles.length > 0) {
String line;
mCenters.clear();
try (BufferedReader cacheReader = new
BufferedReader(
new FileReader(cacheFiles[0].toString()))) {

/*
Ler o arquivo dividido pelo divisor e armazenar na lista
Neste caso os os registros/colunas sao separados por um TAB
*/
while ((line = cacheReader.readLine()) != null) {
String[] temp = line.split(SPLITTER);
mCentroide.add(Double.parseDouble(temp[0]));
}
}
}
} catch (IOException e) {
59

System.err.println("Excecao ao ler o Cache Distribuido);


}
}

/*
* A funo de map ir encontrar o centro mnimo do ponto
e emiti-lo para o redutor
*/
@Override
/* CALCULA A DISTANCIA PRO PONTO */
public void map(LongWritable key, Text value,
OutputCollector<DoubleWritable, DoubleWritable>
output,
Reporter reporter) throws IOException {
String line = value.toString();
double point = Double.parseDouble(line);
double min1, min2 = Double.MAX_VALUE, nearest_center =
mCenters
.get(0);

// Encontre o centro mnimo de um ponto


for (double c : mCentroide) {
min1 = c - point;

/*
PARA CADA CALCULO DO CENTROID
DEVE ESCOLHER O NOVO_CENTROIDE (CENTRO MAIS
PROXIMO)
PARA CALCULAR A DISTANCIA
*/
if (Math.abs(min1) < Math.abs(min2)) {

novo_centroide = c;

min2 = min1;

}
}
// Emite o centro mais prximo e o ponto
output.collect(new DoubleWritable(novo_centroide),
new DoubleWritable(point));
}
}

public static class Reduce extends Map/ReduceBase implements


Reducer<DoubleWritable, DoubleWritable, DoubleWritable,
Text> {
60

/*

A funo Reduce ir emitir todos os pontos para esse centro e


calcular o prximo centro para esses pontos

*/
@Override

public void reduce(DoubleWritable key,


Iterator<DoubleWritable> values,
OutputCollector<DoubleWritable, Text> output,
Reporter reporter)
throws IOException {
int x = 0;
double newCenter;
double sum = 0;
int no_elements = 0;
String points = "";

while (values.hasNext()) {
double d = values.next().get();
points = points + " " + Double.toString(d);
sum = sum + d;
++no_elements;

x++;
}

// Temos novo centro agora


newCenter = sum / no_elements;

System.out.println("Centroid ================ " +


newCenter);

// Emite o novo centro e ponto


output.collect(new DoubleWritable(newCenter), new
Text(points));
}
}

public static void main(String[] args) throws Exception {

// Nome da tabela
System.out.println("Executando Kmeans");
/*IN = args[0];
OUT = args[1]; */
String input = IN;
61

String output = OUT + System.nanoTime();


String again_input = output;

// Reiterando at a convergncia
int iteration = 0;

boolean isdone = false;


while (isdone == false) {

JobConf conf = new JobConf(KmeansMin.class);


if (iteration == 0) {
Path hdfsPath = new Path(input +
CENTROID_ARQUIVO_NOME);
DistributedCache.addCacheFile(hdfsPath.toUri(),
conf);
}

conf.setJobName(JOB_NAME);
conf.setMapOutputKeyClass(DoubleWritable.class);
conf.setMapOutputValueClass(DoubleWritable.class);
conf.setOutputKeyClass(DoubleWritable.class);
conf.setOutputValueClass(Text.class);
conf.setMapperClass(Map.class);
conf.setReducerClass(Reduce.class);
conf.setInputFormat(TextInputFormat.class);
conf.setOutputFormat(TextOutputFormat.class);

FileInputFormat.setInputPaths(conf,
new Path(input + DATA_FILE_NAME));
FileOutputFormat.setOutputPath(conf, new Path(output));

JobClient.runJob(conf);
FileSystem fs = FileSystem.get(new Configuration());
List<Double> centers_next;
try (BufferedReader br = new BufferedReader(new
InputStreamReader(
fs.open(ofile)))) {
centers_next = new ArrayList<>();
String line = br.readLine();
while (line != null) {
String[] sp = line.split("\t| ");
int x = sp.length;
double c = Double.parseDouble(sp[0]);
centers_next.add(c);

line = br.readLine();

}
}
62

String prev;
if (iteration == 0) {
prev = input + CENTROID_ARQUIVO_NOME;
}
Path prevfile = new Path(prev);
FileSystem fs1 = FileSystem.get(new Configuration());
List<Double> centers_prev;
try (BufferedReader br1 = new BufferedReader(new
InputStreamReader(

fs1.open(prevfile)))) {
centers_prev = new ArrayList<>();
String l = br1.readLine();
while (l != null) {
String[] sp1 = l.split(SPLITTER);
double d = Double.parseDouble(sp1[0]);
centers_prev.add(d);
l = br1.readLine();

}
}

// Classifica o centroide antigo e o novo centroide e


verifica a condio de convergncia
Collections.sort(centers_next);
Collections.sort(centers_prev);

Iterator<Double> it = centers_prev.iterator();
for (double d : centers_next) {
double temp = it.next();

/*
CASO A DISTANCIA SEJA = 0,1 O ALGORITMO PARA PORQUE
ALCANCOU A SUA CONVERGENCIA, OU SEJA,
A DISTANCIA ENTRE OS PONTOS E O O CENTROIDE E A MINIMA
POSSIVEL
*/
if (Math.abs(temp - d) <= 0.1) {

isdone = true;
} else {
isdone = false;
break;
}
}

if (isdone == true) {
abrir();
63

try (BufferedReader br = new BufferedReader(new


InputStreamReader(

fs.open(ofile)))) {
centers_next = new ArrayList<>();
String line = br.readLine();

int z = 1;
while (line != null) {
String[] sp = line.split("\t| ");
int x = sp.length;
double c = Double.parseDouble(sp[0]);
centers_next.add(c);
line = br.readLine();

double centroid = Double.parseDouble(sp[0]);

for (int y = 2; y < x; y++) {


System.out.println("Valor: " + sp[y] + "
| Centroid: " + centroid + " | Linha: " + z);

try {
stmt.execute("INSERT INTO teste_clim (centroid,
concentracao)
VALUES(" + centroid + "," +
Double.parseDouble(sp[y]) + ")");

} catch (SQLException ex) {

Logger.getLogger(KmeansMin.class.getName()).log(Level.SEVERE, null,
ex);
}
z++;
}

}
}
}

++iteration;
again_input = output;
output = OUT + System.nanoTime();
}
}
}
64

APNDICE II Cdigo K-means (20 hrs de processamento)

import java.io.IOException;
import java.util.*;
import java.io.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.filecache.DistributedCache;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.*;
import org.apache.hadoop.mapred.*;
import org.apache.hadoop.mapred.Reducer;

public class KmeanHadoop {

public static Statement stmt;

private static final String USUARIO = "root";


private static final String SENHA = "cloudera";
private static final String URL =
"jdbc:mysql://10.0.2.15:3306/clorofila";
private static final String DRIVER = "com.mysql.jdbc.Driver";

// Conectar ao banco
public static Connection abrir() throws Exception {
// Registrar o driver
Class.forName(DRIVER);
// Capturar a conexo
Connection conn = DriverManager.getConnection(URL, USUARIO, SENHA);

stmt = conn.createStatement();
// Retorna a conexao aberta
return conn;

public static String CENTROID_FILE_NAME = "/centroid2.txt";


public static String OUTPUT_FILE_NAME = "/part-00000";
public static String DATA_FILE_NAME = "/concentrao.txt";
public static String JOB_NAME = "KmeansHadoop";
public static String SPLITTER = "\t";
65

public static List<Double> mCentroides = new ArrayList<>();

/*
CONFIGURE CRIA CENTROIDE
ATE QUE A DISTANCIA SEJA != 0,1
O MAP CALCULA AS DISTANCIA
O REDUCE CALCULA O NOVO CENTROIDE */
/*
* Na classe Mapper estamos substituindo a funo configure.
Neste, estamos lendo o arquivo de Cache Distribudo e, em seguida,
armazenando
isso em varivel de instncia "mCenters"
*/

public static class Map extends Map/ReduceBase implements


Mapper<LongWritable, Text, DoubleWritable, DoubleWritable> {

@Override
public void configure(JobConf job) {
try {
/* Obter o arquivo do cache distribudo
L-lo e armazenar o centride no ArrayList */
Path[] cacheFiles = DistributedCache.getLocalCacheFiles(job);
if (cacheFiles != null && cacheFiles.length > 0) {
String line;
mCentroides.clear();
try (BufferedReader cacheReader = new BufferedReader(
new FileReader(cacheFiles[0].toString()))) {
/* Ler o arquivo dividido pelo divisor e armazenar na lista
Neste caso os os registros/colunas sao separados por um TAB
*/
while ((line = cacheReader.readLine()) != null) {
String[] temp = line.split(SPLITTER);

mCentroides.add(Double.parseDouble(temp[0]));
}
}
}
} catch (IOException e) {
System.err.println("Excecao ao ler o Cache Distribuido: " + e);
}
}

/*
* A funo de map ir encontrar o centro mnimo do ponto
e emiti-lo para o redutor
*/
66

@Override
/* CALCULA A DISTANCIA PRO PONTO */
public void map(LongWritable key, Text value,
OutputCollector<DoubleWritable, DoubleWritable> output,
Reporter reporter) throws IOException {
String line = value.toString();
double point = Double.parseDouble(line);
double min1, min2 = Double.MAX_VALUE, nearest_center = mCentroides
.get(0);

// Encontre o centro mnimo de um ponto


for (double c : mCenters) {
min1 = c - point;

/*PARA CADA CALCULO DO CENTROID


DEVE ESCOLHER O NEAREST_CENTER (CENTRO MAIS PROXIMO)
PARA CALCULAR A DISTANCIA */
if (Math.abs(min1) < Math.abs(min2)) {
nearest_center = c;
min2 = min1;
}
}
// Emite o centro mais prximo e o ponto
output.collect(new DoubleWritable(nearest_center),
new DoubleWritable(point));
}
}

public static class Reduce extends Map/ReduceBase implements


Reducer<DoubleWritable, DoubleWritable, DoubleWritable, Text> {

/*

* A funo Reduce ir emitir todos os pontos para esse centro e


calcular o prximo centro para esses pontos
*/
@Override

public void reduce(DoubleWritable key, Iterator<DoubleWritable>


values,
OutputCollector<DoubleWritable, Text> output, Reporter reporter)
throws IOException {
int x = 0;
double newCenter;
double sum = 0;
int no_elements = 0;
String points = "";
ArrayList<Double> lista_valores = new ArrayList<>();
67

while (values.hasNext()) {
double d = values.next().get();
points = points + " " + Double.toString(d);
sum = sum + d;
++no_elements;
lista_valores.add(d);
x++;
}

System.out.println("X e :" + x);

// Temos novo centro agora


newCenter = sum / no_elements;

for (int y = 0; y < x; y++) {


System.out.println("Centride: " + newCenter + " / " + "Valores: " +
lista_valores.get(y));

try {
stmt.execute("UPDATE kmdata209 SET cluster_id = " + newCenter + "
WHERE log = " + lista_valores.get(y) );
} catch (SQLException ex) {
Logger.getLogger(KmeanHadoop.class.getName()).log(Level.SEVERE,
null, ex);
}

// Emite o novo centro e ponto


output.collect(new DoubleWritable(newCenter), new Text(points));
}
}

public static void main(String[] args) throws Exception {

abrir();
/*
try {
Class.forName(driverName);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block

}
//Conexao
Connection con =
DriverManager.getConnection("jdbc:hive2://localhost:10000/default",
"hive", "");
stmt = con.createStatement();
68

*/
// Nome da tabela
System.out.println("Executando Kmeans");
/*IN = args[0];
OUT = args[1]; */
String input = IN;
String output = OUT + System.nanoTime();
String again_input = output;

// Reiterando at a convergncia
int iteration = 0;

boolean isdone = false;


while (isdone == false) {

JobConf conf = new JobConf(KmeanHadoop.class);


if (iteration == 0) {
Path hdfsPath = new Path(input + CENTROID_FILE_NAME);
// upload the file to hdfs. Overwrite any existing copy.
DistributedCache.addCacheFile(hdfsPath.toUri(), conf);
} else {
Path hdfsPath = new Path(again_input + OUTPUT_FILE_NAME);
// upload the file to hdfs. Overwrite any existing copy.
DistributedCache.addCacheFile(hdfsPath.toUri(), conf);
}

conf.setJobName(JOB_NAME);
conf.setMapOutputKeyClass(DoubleWritable.class);
conf.setMapOutputValueClass(DoubleWritable.class);
conf.setOutputKeyClass(DoubleWritable.class);
conf.setOutputValueClass(Text.class);
conf.setMapperClass(Map.class);
conf.setReducerClass(Reduce.class);
conf.setInputFormat(TextInputFormat.class);
conf.setOutputFormat(TextOutputFormat.class);

FileInputFormat.setInputPaths(conf,
new Path(input + DATA_FILE_NAME));
FileOutputFormat.setOutputPath(conf, new Path(output));

JobClient.runJob(conf);

Path ofile = new Path(output + OUTPUT_FILE_NAME);


FileSystem fs = FileSystem.get(new Configuration());
List<Double> centers_next;
try (BufferedReader br = new BufferedReader(new InputStreamReader(
fs.open(ofile)))) {
centers_next = new ArrayList<>();
String line = br.readLine();
69

while (line != null) {


String[] sp = line.split("\t| ");
double c = Double.parseDouble(sp[0]);
centers_next.add(c);
line = br.readLine();

}
}

String prev;
if (iteration == 0) {
prev = input + CENTROID_FILE_NAME;
} else {
prev = again_input + OUTPUT_FILE_NAME;
}
Path prevfile = new Path(prev);
FileSystem fs1 = FileSystem.get(new Configuration());
List<Double> centers_prev;
try (BufferedReader br1 = new BufferedReader(new InputStreamReader(
fs1.open(prevfile)))) {
centers_prev = new ArrayList<>();
String l = br1.readLine();
while (l != null) {
String[] sp1 = l.split(SPLITTER);
double d = Double.parseDouble(sp1[0]);
centers_prev.add(d);
l = br1.readLine();

}
}

// Classifica o centroide antigo e o novo centroide e


verifica a condio de convergncia
Collections.sort(centers_next);
Collections.sort(centers_prev);

Iterator<Double> it = centers_prev.iterator();
for (double d : centers_next) {
double temp = it.next();

/* CASO A DISTANCIA SEJA = 0,1 O ALGORITMO PARA


PORQUE
ALCANCOU A SUA CONVERGENCIA, OU SEJA,
A DISTANCIA ENTRE OS PONTOS E O O CENTROIDE E A
MINIMA POSSIVEL */
if (Math.abs(temp - d) <= 0.1) {
isdone = true;
} else {
isdone = false;
70

break;
}
}
++iteration;
again_input = output;
output = OUT + System.nanoTime();
}
}

Você também pode gostar