Você está na página 1de 26

Simpsio Brasileiro de Banco de Dados - SBBD 2013 Minicursos

Minicurso

1
Anlise em Big Data e um Estudo de Caso utilizando Ambientes de Computao em Nuvem
Ticiana L. C. da Silva, Flvio R. C. Sousa, Jos Antnio F. de Macdo e Javam C. Machado

Resumo As novas aplicaes de minerao de dados no contexto de Big Data ou anlise em Big Data necessitam gerenciar grandes volumes de dados de diferentes tipos e estruturas. As tcnicas de minerao aplicadas sob tais dados possibilitam a extrao de novos conhecimentos ou a realizao de predies, por exemplo. Entretanto, o processamento intensivo de dados est alm da capacidade de qualquer mquina individual e requer que a computao seja realizada em clusters. Dessa forma, a utilizao de tcnicas de minerao para grandes volumes de dados exige adaptaes em seus algoritmos de forma a paralelizar a execuo e utilizar ambientes de larga escala para o armazenamento e processamento, atualmente disponveis por meio de infraestruturas de computao em nuvem. Este minicurso tem como objetivo apresentar os principais algoritmos de minerao para Big Data considerando a utilizao de ambientes de computao em nuvem, alm de apresentar boas prticas para o desenvolvimento de solues neste contexto. Tambm apresentado um estudo de caso considerando o domnio de dados de monitoramento de trfego, enfatizando o uso das tcnicas de minerao e da infraestrutura de nuvem discutidas. Por m, so apresentadas as consideraes nais sobre o tema, destacando oportunidades e desaos encontrados.

1.1. Introduo
Nas duas ltimas dcadas, o aumento contnuo do poder computacional tem produzido um uxo enorme de dados [QU et al. 2012]. A cada dia, 2.5 quintilhes de bytes de dados so criados e 90% dos dados no mundo hoje foram produzidos nos ltimos dois anos [Wu et al. 2013]. Como exemplos deste cenrio, pode-se citar modernos centros de pesquisa em fsica, tais como DZero, que normalmente geram mais de um terabyte de dados por dia. A rede social Facebook possui mais de um bilho de usurio e cem horas de novos vdeos so armazenados a cada minuto no Youtube. Estes exemplos exigem arma-

Simpsio Brasileiro de Banco de Dados - SBBD 2013 Minicursos

zenamento eciente, anlise de grande volume de dados e tomada de deciso instantnea. A este contexto de gesto e anlise de dados tem-se denominado Big Data. De acordo com [Begoli and Horey 2012], Big Data a prtica de coleta e processamento de grandes conjuntos de dados e sistemas e algoritmos utilizados para analisar estes conjuntos de dados massivos. J [Wu et al. 2013] argumenta que Big Data refere-se a grandes volumes heterogneos, fontes autnomas com controle distribudo e descentralizado, procurando explorar as relaes complexas e em evoluo entre os dados. Apesar das enormes possibilidades do uso da informao aferidas ao fenmeno Big Data, no trivial entender quais tcnicas e mtodos de gerenciamento de dados sero adequados para lidar com os desaos trazidos por este novo cenrio. Apesar do termo Big Data ser explicado atravs dos famosos 3 Vs: Volume, Velocidade e Variabilidade, no so claros os desaos trazidos por tais caracteristicas s tecnologias de banco de dados desenvolvidas ao longo dos ltimos 40 anos. De fato, banco de dados tem como premissa lidar com grande volumes de dados por meio de inmeras tcnicas de processamento distribudo. A velocidade tratada pelos bancos de dados que manipulam stream de dados, e a variabilidade foi amplamente pesquisada em mtodos para integrao de dados estruturados e semiestruturados, os quais visam lidar com a heterogeneidade de modelos e dados. Consequentemente, segundo Dan Suciu [Suciu 2013], o que Big Data traz de novo ao contexto de gerenciamento de dados so trs aspectos: dados so armazenados em memria principal, necessidade de inmeras iteraes sobre os dados, a ocorrncia de falhas uma regra. Com o atual uso de infraestruturas massivas de servidores virtualizados para processar um grande volume de dados distribudos, podemos supor que a maior parte dos dados j processados estaro armazenados em memria, em suas respectivas mquinas virtuais. Desta forma, a nova mtrica de complexidade para processamento de consultas deixa de ser a nmero de acessos a disco para se tornar quantidade de comunicao entre os servidores que processam as informaes. Claramente, os mtodos e tcnicas de banco de dados devero levar em considerao esta mudana de complexidade. Diversos tipos de anlise de dados no contexto Big Data exigem computao iterativa, incluindo clusterizao usando K-Means, PageRank, consultas recursivas relacionais, anlise de redes sociais, entre outros. Essas tcnicas visam processar os dados iterativamente at que a computao satisfaa uma determinada condio de parada ou convergncia. Este tipo de computao iterativa no provido pelas tecnologias de banco de dados atuais. De fato, sero necessrias tcnicas mais sosticadas para lidar com computao iterativa, levando em conta os custos de comunicao. Outro ponto importante a destacar que banco de dados paralelos lidam com a falha dos ns de maneira excepcional. Em um cenrio Big Data, onde uma grande quantidade de mquinas esto envolvidas, claramente as falhas deixam de ser uma exceo para se tornarem uma regra. Desta maneira, necessrio que o gerenciamento de dados em Big Data lide com a falha dos ns como um evento frequente, e no como uma exceo ao processamento. Um outro ponto importante a destacar no cenrio Big Data a infraestrutura computacional necessria para lidar com grandes volumes de dados heterogneos e distribu-

Simpsio Brasileiro de Banco de Dados - SBBD 2013 Minicursos

dos. Considerando o grande volume a ser analisado e que o processamento intensivo dos dados est alm da capacidade de qualquer mquina individual, o cenrio Big Data demanda a disponibilizao de novos modelos computacionalmente ecientes [Lin and Dyer 2010]. Neste contexto, a computao baseada em clusters permite aproveitar grande nmero de processadores em paralelo para resolver um problema de computao [Pavlo et al. 2009]. Claramente, a disponibilizao de uma infraestrutura de processamento em larga escala exige uma infraestrutura de software compatvel, a qual possa tirar vantagem da grande quantidade de mquinas e mitigar o problema de comunicao entre essas mquinas. Com o interesse em clusters, aumentou a quantidade de ferramentas para utiliz-los, dentre as quais se destaca o framework MapReduce [Dean and Ghemawat 2008] e sua implementao de cdigo aberto Hadoop, utilizado para gerenciar grandes quantidades de dados em clusters de servidores. Este framework atraente porque oferece um modelo simples por meio do qual os usurios podem expressar programas distribudos relativamente sosticados. A implantao e o gerenciamento de sistemas de clusters de larga escala envolvem grandes investimentos na aquisio e manuteno de equipamentos. Para melhorar o gerenciamento e reduzir os custos, as aplicaes de Big Data tm utilizado ambientes de Cloud Computing ou Computao em Nuvem [Agrawal et al. 2011]. Estes ambientes permitem que empresas e indivduos aluguem capacidade de computao e armazenamento sob demanda e com pagamento baseado no uso, em vez de fazerem grandes investimentos de capital necessrios para a construo e instalao de equipamentos de computao em larga escala [Sousa et al. 2010]. Alm disso, a Computao em Nuvem fornece ambientes com grande capacidade de armazenamento, escalveis, elsticos, com elevado desempenho e alta disponibilidade. Assim sendo, a nuvem fornece uma alternativa vivel para a construo de aplicaes de gesto e anlise de grandes volumes de dados [Agrawal et al. 2011]. As aplicaes de Big Data esto se expandindo em todos os domnios de cincia e engenharia, incluindo fsica, biologia e medicina. Estas aplicaes demostram que o gerenciamento de grandes volumes de dados est alm da capacidade das ferramentas de software para armazenar e processar estes dados dentro de um intervalo de tempo aceitvel. O desao fundamental para as aplicaes de Big Data explorar os grandes volumes de dados e extrair informaes teis ou conhecimento para futuras aes [Rajaraman and Ullman 2012]. Em muitas situaes, o processo de anlise deve ser eciente e quase em tempo real, pois o armazenamento de todos os dados observados quase invivel [Wu et al. 2013]. Como resultado, um volume de dados sem precedentes necessita de anlise ecaz. Para tanto, tcnicas de minerao de dados podem ser utilizadas para analisar e entender os dados a serem manipulados. A anlise baseada em modelos capazes de sumarizar dados, extrair novos conhecimentos ou realizar predies. Estes modelos podem ser utilizados para construir um software que possibilite identicar o perl de clientes para conceder emprstimos bancrios, aplicaes de recomendao de busca de amigos em redes sociais, que envolvem grafos com milhes de ns e arestas ou, ainda, sistemas de software que identiquem possveis ameaas terroristas [Rajaraman and Ullman 2012]. Os trs principais componentes para sucesso de um projeto de minerao de dados

Simpsio Brasileiro de Banco de Dados - SBBD 2013 Minicursos

no contexto de Big Data so: (i) presena de um cenrio de aplicao em que seja possvel identicar a demanda por descoberta de conhecimento; (ii) um modelo que realize a anlise desejada; (iii) uma implementao eciente que seja capaz de gerenciar um grande volume de dados [Rajaraman and Ullman 2012]. Outros fatores devem ser considerados para resolver um problema com um grande volume de dados, tais como o tamanho e a complexidade dos dados, a facilidade com a qual os dados podem ser ecientemente transportados e principalmente se o algoritmo pode ser paralelizado de forma eciente [Schadt et al. 2010]. Entretanto, a anlise dos dados no uma tarefa trivial. preciso utilizar tcnicas automatizadas que garantam que os dados sero explorados corretamente. Utilizar tcnicas tradicionais permitindo, por exemplo, que o conhecimento seja obtido apenas por intervenes de especialistas humanos no uma deciso vivel, devido ao grande volume de dados. As tcnicas de minerao podem ser utilizadas para extrair conhecimento tanto de tipos de dados convencionais, tambm chamados alfanumricos (i.e. letras, nmeros e datas), quanto de dados no convencionais, a exemplo de tipos de dados espaciais, espao temporais, biolgicos, assim como dados estruturados, bem como no estruturados, por exemplo, vdeos, fotos e som. Dessa forma, outro desao relevante da anlise de dados em Big Data gerenciar dados de diferentes tipos e estruturas [Rajaraman and Ullman 2012]. Este minicurso apresenta e discute as principais questes relacionadas anlise para Big Data, destacando os pontos chaves e as boas prticas para a construo de novos algoritmos para Big Data. Alm disso, como o ambiente de Computao em Nuvem pode auxiliar na gesto e no processamento destes dados. Este trabalho est organizado da seguinte forma: a Seo 1.2 apresenta as tecnologias e infraestruturas utilizadas para a anlise de Big Data. A Seo 1.3 apresenta os principais algoritmos de minerao de dados em Big Data. A Seo 1.4 apresenta um estudo de caso baseado em dados de trnsito. Por m, a Seo 1.6 apresenta as consideraes nais sobre o tema, lies aprendidas e destaca tendncias direcionamentos futuros, como as oportunidades e desaos encontrados.

1.2. Infraestrutura para Anlise em Big Data


A necessidade em gerenciar e analisar uma grande quantidade de dados e fornecer alto desempenho tem sido requisitos comuns em muitas empresas. Para tratar estes problemas, diferentes solues tm sido propostas, entre elas a migrao/construo de aplicaes para ambientes de computao em nuvem, alm de sistemas baseados em Distributed Hash Table (DHT) ou estrutura de arrays multidimensionais [Sousa et al. 2010]. Dentre estas solues, destaca-se o paradigma MapReduce [Dean and Ghemawat 2008], concebido para apoiar o processamento distribudo de grandes conjuntos de dados em clusters de servidores e sua implementao de cdigo livre Hadoop [White 2012]. Computao em Nuvem prov solues baratas e ecientes para armazenamento e anlise de grandes volumes de dados [Li and Zhang 2011]. Existem diferentes denies e conceitos de computao em nuvem. Segundo [Mell and Grance 2009], computao em nuvem pode ser denido como um modelo que permite acesso sob demanda a um agrupamento de recursos computacionais que podem ser congurveis, como CPU, armazenamento, memria, entre outros. Eles podem ser rapidamente fornecidos e liberados

Simpsio Brasileiro de Banco de Dados - SBBD 2013 Minicursos

com o mnimo esforo de gerenciamento ou assistncia do provedor da nuvem. Algumas propriedades fundamentais distinguem computao em nuvem dos sistemas distribudos tradicionais (e.g. sistemas em grade, clusters, P2P, etc) e esto relacionadas ao seu carter atrativo: (i) Auto-Servio sob demanda, (ii) Elasticidade rpida, (iii) Pagamento medida que o servio utilizado (Pay-as-you-go) (iv) Nvel de qualidade de servio (SLA), (v) Agrupamento ou Pooling de Recursos. A seguir, falaremos mais de cada uma dessas caractersticas. Auto-servio sob demanda diz respeito possibilidade do consumidor utilizar os recursos computacionais (tempo de servidor, por exemplo) quando necessrio sem qualquer interveno humana com o provedor do servio. Outra caractertica a elasticidade que permite escalar mais recurso com o aumento da demanda, e liberar recurso, na retrao dessa demanda. Para o consumidor, os recursos disponveis para provisionamento muitas vezes parecem ser ilimitados e podem ser alocados em qualquer quantidade e a qualquer momento. Os recursos em sistemas na nuvem so automaticamente controlados e o seu uso medido em um nvel de abstrao apropriado para o tipo de servio (como armazenamento, processamento, por exemplo). No modelo Pay-as-you-go, o consumidor s paga pelo que utiliza e pelo tempo de utilizao. A utilizao dos recursos pode ser monitorada, controlada e informada, gerando transparncia tanto para o provedor como para o consumidor do servio utilizado. O SLA a garantia mnima de qualidade de servio. Os recursos de computao do provedor so agrupados para atender a mltiplos consumidores em modelo multiinquilinos. Os diferentes recursos fsicos e virtuais so dinamicamente atribudos e reatribudos conforme a demanda dos consumidores. H uma certa independncia de localizao geogrca, uma vez que o consumidor em geral no controla ou conhece a localizao exata dos recursos fornecidos (como armazenamento, processamento, memria e comunicao de rede), mas pode ser capaz de especicar a localizao em um nvel de abstrao mais alto (como pas, estado ou datacenter). Consequentemente, qualquer servio computacional que seja executado em um ambiente em nuvem precisar estar em conformidade com tais propriedades [Coelho da Silva 2013]. O Hadoop implementa o modelo de programao MapReduce, juntamente com um sistema de arquivo distribudo chamado Hadoop Distributed File System (HDFS) para permitir o processamento de grandes volumes de dados em ambientes distribudos. O HDFS foi projetado e otimizado para ser executado em centros de dados e fornecer elevada vazo, baixa latncia e tolerncia a falhas individuais de servidores. Em clusters ou ambientes de computao em nuvem, comum haver falhas nos ns ou na rede. Dessa forma, necessrio o uso de estratgias para tratar estas falhas, principalmente considerando que o processamento pode demandar horas para seu trmino. A cada falha pode ser necessrio abortar e reiniciar todo o processamento. Um cenrio possvel a execuo nunca ser concluda com xito. Algumas medidas poderiam ser adotadas como, por exemplo: (i) armazenar arquivos redundantes e (ii) dividir o processamento entre os ns computacionais. Assim sendo, quando uma tarefa interrompida por uma falha, ela no prejudica o processamento de outras tarefas, basta que somente ela seja reiniciada. O HDFS implementa estratgias para o tratamento de falhas, como o uso de replicao e distribuio dos dados.

Simpsio Brasileiro de Banco de Dados - SBBD 2013 Minicursos

Figura 1.1. Funcionamento das funes Map e Reduce retirada do livro [Rajaraman and Ullman 2012]

O Hadoop utiliza o modelo de programao MapReduce para a execuo de programas. Este modelo baseado em duas primitivas da programao funcional: Map e Reduce. A execuo MapReduce realizada da seguinte forma: (i) A funo Map recebe como entrada uma lista de pares chave-valor K1 , V1 e sua sada tambm uma lista de pares chave-valor intermedirios K2 , V2 ; (ii) Os pares chave-valor K2 , V2 so denidos de acordo com a implementao da funo Map fornecida pelo usurio, e ao nal de cada tarefa Map, so coletados por um n mestre. Em seguida, ordenados pela chave. As chaves so divididas entre todas as tarefas Reduce. Os pares chave-valor que possuem mesma chave so designados a mesma tarefa Reduce; (iii) A funo Reduce recebe como entrada todos os valores V2 de uma mesma chave K2 e produz como sada pares chave-valor K3 , V3 que formam o resultado do processo MapReduce. As tarefas Reduce executam sobre uma chave por vez, e a forma de combinao dos valores determinada pelo cdigo da funo Reduce dada pelo usurio. O funcionamento das funes Map e Reduce pode ser acompanhado como apresentado na Figura 1.1. A arquitetura MapReduce Mestre-Escravo. O n Mestre possui vrias responsabilidades, entre elas criar certo nmero de tarefas Map e tarefas Reduce (esses nmeros podem ser dados de entrada pelo usurio). Alm disso, o Mestre aloca as tarefas aos ns Escravos. No entanto, desejvel limitar o nmero de tarefas Reduce, pois cada tarefa Map cria um arquivo intermedirio para cada tarefa Reduce, dessa forma se existem muitas tarefas Reduce, o nmero de arquivos intermedirios pode ser muito grande. O n Mestre guarda o estado de cada tarefa Map e Reduce (em espera, em execuo ou nalizada). O n Escravo reporta ao Mestre quando termina uma tarefa, e s ento uma nova tarefa escalonada pelo Mestre ao Escravo. Os arquivos intermedirios criados por uma tarefa Map (para cada tarefa Reduce)

Simpsio Brasileiro de Banco de Dados - SBBD 2013 Minicursos

so salvos no disco local do n Escravo. O Mestre informado da localizao e do tamanho desses arquivos, e escalona uma ou mais tarefas Reduce que os recebem de entrada. Cada tarefa Reduce executa o cdigo escrito pelo usurio e grava a sada do sistema de arquivo distribudo HDFS. O Hadoop gerencia a execuo paralela, coordena a execuo das tarefas Map e Reduce e trata as falhas durante a execuo. Um exemplo de computao MapReduce bastante difundido a contagem do nmero de ocorrncias que cada palavra aparece em uma coleo de documentos. Nesse exemplo, a entrada um repositrio de documentos. A funo Map desse exemplo usa chaves que so do tipo Strings (as palavras) e os valores so inteiro. A tarefa Map l o documento e o quebra em uma sequncia de palavras w1 , w2 ,..., wn . Em seguida, emite uma sequncia de pares chave-valor onde o valor igual a 1. Dessa forma, a sada do Map para determinado documento do repositrio uma sequncia de pares chave-valor: w1 , 1 , w2 , 1 ,..., wn , 1 . Uma nica tarefa Map pode processar muitos documentos. Ento, a sada ir conter mais de uma sequncia. Outro ponto importante se uma palavra w aparece m vezes entre todos os documentos a serem lidos, ento a sada conter m pares chave-valor w, 1 . A funo Reduce combina esses m pares em um nico par w, m .

1.3. Minerao de Dados em Big Data


1.3.1. Boas prticas para Algoritmos em Big Data O processo de minerar dados formado por um conjunto de tcnicas para descoberta de conhecimento a partir de grandes bases de dados. Tais tcnicas baseiam-se em modelos capazes de sumarizar dados, extrair novos conhecimentos ou realizar predies. Classicao uma tcnica de minerao de dados que est na categoria de aprendizagem supervisionada, ou seja, fornecida uma classe a qual cada amostra do conjunto de dados de treinamento pertence. Os algoritmos que implementam essa tcnica so preditivos, pois suas tarefas de minerao desempenham inferncias nos dados com o intuito de fornecer previses ou tendncias, obtendo informaes no disponveis a partir dos dados disponveis. Outras duas tcnicas tambm mais conhecidas, porm no supervisionadas, so Clusterizao e Associao. Nestes algoritmos, o rtulo da classe de cada amostra do treinamento no conhecido, e o nmero ou conjunto de classes a ser treinado pode no ser conhecido a priori, da o fato de ser uma aprendizagem no-supervisionada. Clusterizao uma tcnica de aprendizagem no supervisionada muito utilizada em minerao de dados. Assume papel importante em aplicaes como reconhecimento de padres e recuperao de informao. Os algoritmos de clusterizao particionam os dados em diferentes grupos, tal que a similaridade entre elementos que pertencem ao mesmo grupo seja minimizada e a similaridade entre elementos que pertencem a grupos diferentes seja maximizada. A Associao capaz de estabelecer regras entre os atributos. O prprio algoritmo elege atributos determinantes (lado esquerdo da regra) e os atributos resultantes (lado direito) na tarefa de minerao revelando associaes entre valores dos atributos, tendo o algoritmo sua nfase no compromisso entre preciso e cobertura [Silva 2004]. Conforme discutido anteriormente, os algoritmos de minerao de dados em sua

Simpsio Brasileiro de Banco de Dados - SBBD 2013 Minicursos

verso centralizada no so adequados para processar dados Big Data. Assim, podemos elencar um conjunto de boas prticas para que esses algoritmos sejam modicados e satisfatrios para o contexto de Big Data. Os trabalhos apresentados na prxima seo seguem esses princpios, o que os torna adequados para grandes volumes de dados. Do nosso conhecimento, no h nenhuma publicao ou estudo que apresente quais os requisitos que um algoritmo deve ter para se tornar adequado ao contexto Big Data. O que conseguimos perceber foi um conjunto de boas prticas que esto presentes em muitos algoritmos que trabalham com grandes volumes de dados. Um dos nossos trabalhos futuros caracterizar e descobrir quais outras caractersticas se enquadrariam tambm nesse cenrio. O primeiro passo para se obter um bom algoritmo que manipule dados Big Data paraleliz-lo e utilizar o paradigma de diviso e conquista [Ji et al. 2012], isso pode ser alcanado utilizando MapReduce, que capaz de manipular grandes volumes de dados e ecientemente executar o algoritmo em paralelo. Alm disso, os dados devem estar distribudos entre os ns de processamento. Essa distribuio ou particionamento dos dados deve ser balanceada entre os ns do cluster, a m de evitar sobrecarga em um n em particular. necessrio nesse caso observar o desvio da distribuio do dado. Alm disso, comum a utilizao de replicao para paralelizar os algoritmos. No contexto de Big Data, importante evitar replicao de dados, j que possivelmente pode resultar em crescimento exponencial da quantidade de dados a se processar. Outro ponto relevante que os sistemas sobre os quais esses algoritmos executam tambm devem ser satisfatrios para a anlise de dados Big Data. Em [Cohen et al. 2009, Herodotou et al. 2011], so elencados 6 princpios que tornam um sistema adequado para Big Data, conhecido como MADDER: Magnetic, Agile, Deep, Data-lifecycle-awareness, Elasticity e Robustness. A seguir, explicamos cada um deles. Magnetic: O sistema capaz de manipular qualquer fonte de dados independente da presena de possveis outliers, de no haver esquema ou estrutura, alm da ausncia de valores para alguns atributos. Agile: O sistema se adapta rpida evoluo dos dados. Deep: O sistema suporta anlises mais complexas, utilizando modelos estaststicos e tcnicas de aprendizagem de mquina, por exemplo. Data-lifecycle-awareness: O sistema otimiza a movimentao, o armazenamento e o processamento de dados Big Data durante todo seu ciclo de vida. Elasticity: O sistema capaz de ajustar o uso dos recursos e custos operacionais aos requisitos dos usurios e do processamento da carga de trabalho. Robustness: O sistema continua a prover servio mesmo com possveis adversidades como, por exemplo, falha de hardware e dados corrompidos. Em [Begoli and Horey 2012], possvel encontrar alguns princpios para projetos em Big Data.

Simpsio Brasileiro de Banco de Dados - SBBD 2013 Minicursos

1.3.2. Exemplos de Algoritmos de Minerao de Dados modicados para tratar grandes volumes de dados A seguir, reunimos os trabalhos dos 2 ltimos anos das principais conferncias e peridicos em banco de dados e minerao de dados. Os principais trabalhos que seguem as boas prticas apresentadas anteriormente so apresentados nas prximas subsees. 1.3.2.1. Itens Frequentes e Regras de Associao A descoberta dos itens/palavras mais frequentes e Regras de Associao so tcnicas bastante conhecidas em minerao e aplicaes de banco de dados. Porm algumas diculdades surgem quando a tcnica aplicada a um grande volume de dados, no caso do algoritmo Apriori [Agrawal et al. 1994], o tempo gasto pode ser exponencial [Yang et al. 2010]. Os dados possuem um conjunto de itens como, por exemplo, uma lista de compras de um consumidor, uma sequncia de pginas visitadas por meio de um browser, uma coleo de vdeos avaliados por um espectador, um sequncia de mutaes nos genes de um amostra de DNA. Dado esse conjunto de dados, interessante identicar padres e regras de associao entre os itens que nele se encontram, ou seja, descobrir quais itens aparecem juntos frequentemente nesse conjunto de dados. Os trabalhos [Agrawal et al. 1994] e [Yang et al. 2010] propem uma implementao do algoritmo Apriori paralelizada via MapReduce. Porm, mltiplas iteraes de MapReduce so necessrias durante a computao. Uma iterao produz um item frequente, e deve-se continuar iterando at que no existam mais itens novos a serem adicionados. Essa estratgia pode ser muito custosa para um grande volume de dados. O trabalho [Riondato et al. 2012] tambm apresenta um algoritmo paralelizado usando MapReduce para minerao de itens frequentes e regras de associao, alm disso no utiliza replicao de dados. Para isso, so criadas vrias amostras randmicas e pequenas do conjunto de dados. O algoritmo de minerao executado nessas amostras independentes e em paralelo. Os resultados gerados so coletados, agregados e ltrados para prover uma nica sada. Como [Riondato et al. 2012] minera subconjuntos randmicos do conjunto de dados, o resultado nal uma aproximao da soluo real. O artigo fez uma anlise propabilstica para mostrar que realmente prov garantias quanto a aproximao com a soluo real. O usurio nal deve fornecer a acurcia e a conana como parmetros e a estratgia computa uma aproximao da coleo de interesse que satisfaz esses parmetros. Embora [Riondato et al. 2012] no seja a primeira proposta (como vimos anteriormente) para solucionar tais problemas em minerao de dados utilizando MapReduce, o que o difere dos outros [Cryans et al. 2010, Ghoting et al. 2011, Hammoud 2011, Li et al. 2008, Li and Zhang 2011, Yang et al. 2010] so dois aspectos fundamentais. O primeiro, os outros trabalhos usam replicao de dados para paralelizar a computao, possivelmente resultando em crescimento exponencial da quantidade de dados. Ao contrrio do [Riondato et al. 2012] que somente minera um nmero de amostras randmicas do conjunto de dados inicial. Como o MapReduce apresenta custo alto em relao movimentao dos dados entre diferentes mquinas (denotado como shufing), [Riondato et al. 2012] garante melhor desempenho que os anteriores. Outra diferena

Simpsio Brasileiro de Banco de Dados - SBBD 2013 Minicursos

que os trabalhos anteriores criam as regras de associao sequencialmente aps a coleta via MapReduce dos itens frequentes, ao contrrio de [Riondato et al. 2012] que tanto a extrao dos itens frequentes quanto a criao das regras so feitas via MapReduce. Considerando as boas prticas apresentadas anteriormente, tais diferenas mostram que [Riondato et al. 2012] mais adequado para ser utilizado no contexto de Big Data do que os trabalhos [Cryans et al. 2010, Ghoting et al. 2011, Hammoud 2011, Li et al. 2008, Li and Zhang 2011, Yang et al. 2010]. 1.3.2.2. Classicao Os algoritmos de Classicao so capazes de realizar predio de categorias. Os mais conhecidos so rvore de deciso [Quinlan 1986], redes bayesianas [Michie et al. 1994] e os vizinhos mais prximos [Cover and Hart 1967]. Da mesma forma que para os outros algoritmos de minerao de dados apresentados anteriormente, as pesquisas tambm focaram em oferecer tcnicas de classicao de processamento paralelo e distribudo para grandes volumes de dados. O trabalho [He et al. 2010] prope uma verso paralelizada dos algoritmos de rvore de deciso, redes bayesianas e vizinhos mais prximos utilizando MapReduce. Para o algoritmo dos k-vizinhos mais prximos, a computao para encontrar a similaridade entre os dados do conjunto de treino e teste feita independentemente. Assim, o conjunto de dados fornecido como entrada pode ser particionado em n blocos que podem ser processados em diferentes ns. Alm do conjunto de dados de entrada, tambm fornecido o nmero k de vizinhos mais prximos. A funo de Map calcula a similaridade das amostras dadas de entrada e a funo Reduce ordena as similaridades e seleciona os k-vizinhos mais prximos. Para o classicador utilizando redes bayesianas, o clculo intensivo a ser realizado o das probabilidades condicionais. Inicialmente, ocorre a fase de treino utilizando MapReduce. Na funo de Map, os atributos e seus valores so identicados com valor de chave igual a 1. Na funo de Reduce contabilizada a frequncia de cada atributo e seu valor. Na fase de teste tambm se utiliza MapReduce, a funo de Map l as probabilidades geradas pela fase de treino e calcula a probabilidade de amostras de testes pertencerem a cada categoria da classicao, bem como se a predio da categoria foi realizada corretamente ou no. Na funo Reduce, calcula-se a quantidade de amostras categorizadas corretamente e erroneamente. A ideia bsica do algoritmo de rvore de deciso recursivamente escolher o melhor atributo para dividir os ns da rvore. Aps selecionar um atributo, o conjunto de treino dividido em vrias parties de acordo com o valor do atributo escolhido. Na fase de treino, o processo de MapReduce iniciado para cada partio que recursivamente computa o melhor atributo para dividir os dados no n corrente da rvore. As regras de deciso so armazenadas e novas regras so geradas. Na fase de teste, a funo Map verica para cada amostra, as regras de deciso e prev uma categoria. Somente a funo Map necessria. Alguns trabalhos como [Kim and Shim 2012], [Lu et al. 2012], [Ghoting et al. 2011], [Zhou et al. 2012], [Panda et al. 2009] apresentam a aplicao e implementao dos al-

10

Simpsio Brasileiro de Banco de Dados - SBBD 2013 Minicursos

goritmos de classicao discutidos acima utilizando MapReduce, ou ainda, aplicando algumas boas prticas para Big Data.

1.3.2.3. Clusterizao O k-means continua a ser o mais popular mtodo de clusterizao, alm de ser identicado como um dos mais importantes dentre os algoritmos de minerao de dados [Wu et al. 2008]. Entretanto, em termos de qualidade e ecincia, a ordem de execuo do k-means pode ser exponencial no pior caso. Alm disso, a soluo encontrada pode ser de um timo local, e possivelmente longe de se obter um timo global. O algoritmo k-means++ [Arthur and Vassilvitskii 2007] foi proposto como envoluo do k-means e oferece melhor estratgia de inicializao dos centrides. No k-means, so selecionados k centrides randomicamente em uma nica iterao de acordo com uma distribuio especca, j em [Arthur and Vassilvitskii 2007] so k iteraes e seleciona-se um ponto em cada iterao considerando que qualquer ponto no tem a mesma probabilidade de ser selecionado que os outros ( pois esta probabilidade constantemente alterada quando cada novo centride selecionado). Este o ganho do algoritmo k-means++, porm devido a sua natureza sequencial, a aplicabilidade limitada para grandes volumes de dados: deve-se iterar k vezes sobre os dados para encontrar um bom conjunto de centrides inicialmente. Idealmente, gostar-se-ia de ter um algoritmo que precise de um menor nmero de iteraes, e que selecione mais de um ponto em cada iterao da mesma maneira que o K-means++. Em [Bahmani et al. 2012], proposta uma estratgia paralela para reduzir o nmero de iteraes necessrias, a m de obter uma boa inicializao utilizando MapReduce. [Bahmani et al. 2012] segue essa intuio e encontra o ponto ideal de centride (ou o melhor ponto de trade-off), denindo cuidadosamente o nmero de iteraes e considerando que a probabilidade de selecionar cada ponto diferente de qualquer outro ponto. Com esse cenrio, a aplicabilidade do [Bahmani et al. 2012] possvel para grandes volumes de dados. Um dos mais importantes algoritmos de clusterizao o DBScan(Density-based Spatial Clustering of Application with Noise) [Ester et al. 1996]. Suas vantagens em relao s outras tcnicas de clusterizao so agrupar dados em clusters de formato arbitrrio, no requerer o nmero de clusters a priori, alm de lidar com outliers no conjunto de dados. Em [He et al. 2011], proposta uma implementao do DBScan em 4 estgios de MapReduce, utilizando particionamento baseado em grid. Como o conjunto de dados particionado, o artigo tambm apresenta uma estratgia para juno de clusters que esto em parties diferentes e que contm os mesmos pontos em suas fronteiras. Tais pontos esto replicados nas parties e a descoberta de quais clusters podem ser reunidos em um s cluster averiguada a partir deles. Note que o nmero de pontos de fronteira replicados pode afetar a ecincia da clusterizao, pois tais pontos no somente aumentam a carga de cada n computacional, mas aumentam ainda o tempo de reunir os resultados dos diferentes ns computacionais. Semelhante ao trabalho anterior, em [Dai and Lin 2012] tambm proposta a implementao do DBScan utilizando MapReduce. O conjunto de dados particionado de modo a manter o balanceamento de carga entre os ns computacionais, e ainda minimi-

11

Simpsio Brasileiro de Banco de Dados - SBBD 2013 Minicursos

zar os pontos de fronteiras entre as parties. Dessa forma, aumenta-se a ecincia da clusterizao e do processo de juno dos clusters. O DBScan executado em cada n computacional sobre cada partio utilizando um ndice Kd-tree. A juno de clusters que esto em parties distintas feita quando um mesmo ponto estiver em tais parties e for designado como um core point em algum dos clusters. Se detectado que dois clusters devem sofrer processo de juno, os clusters so renomeados. Tal processo tambm ocorre em [He et al. 2011]. Nosso estudo de caso se assemelha a ambos [He et al. 2011], [Dai and Lin 2012], pois considera o desao de manipular grandes volumes de dados e ambas solues utilizam MapReduce para paralelizar o algoritmo DBScan. Porm, nosso estudo de caso utiliza outra tcnica de particionamento, prope outra estratgia de juno de clusters que no necessita de replicao. Por isso, se torna mais adequado s boas prticas listadas anteriormente para Big Data.

1.4. Estudo de Caso


Para esse curso foi preparado um estudo de caso que aborda a aplicao do algoritmo de DBScan [Ester et al. 1996] em um grande volume de dados, utilizando uma plataforma de nuvem e o paralelismo obtido por meio do MapReduce. O enfoque mostrar como a tcnica de minerao foi modicada para ser aplicada em Big Data. 1.4.1. Descrio do Estudo de Caso A divulgao de informaes sobre o trnsito nas grandes cidades pode ser obtido de tweets, coletadas por meio de GPS nos veculos ou foto-sensores. A informao obtida pode ser usada tanto de forma complementar quela gerada por cmeras e sensores fsicos, orientando as aes dos agentes pblicos a curto e longo prazo, quanto diretamente pelos motoristas, em tempo real ou quase-real, apoiando suas decises quanto ao deslocamento pela cidade [Ribeiro Jr et al. 2012]. Por meio desses dados possvel analisar o comportamento do trnsito nas cidades e descobrir, por exemplo, padres como: em quais trechos da cidade ocorrem mais congestionamentos? Tal descoberta pode auxiliar a busca por solues ecazes de reengenharia de trnsito no contexto de cidades inteligentes. Dessa forma, a crescente popularidade desse tipo de canal de informao indica que, em pouco tempo, informaes sensoriadas e transmitidas pelos prprios cidados podem se tornar a principal fonte de avaliao da situao do trnsito em tempo real [Ribeiro Jr et al. 2012]. Dessa forma, a obteno de conhecimento a partir desses dados uma tarefa importante. O estudo de caso desse trabalho consiste em, a partir de dados de trnsito, detectar em que trechos ocorrem congestionamento em uma cidade com frequncia. Para isso, o algoritmo de DBScan visto na Seo 1.3 utilizado como soluo, porm dado o grande volume de dados deve-se utilizar uma verso paralelizada. Dessa forma, outro problema consiste em como paralelizar tal algoritmo no nosso contexto de dados de trnsito. Para isso, o MapReduce utilizado como plataforma para a execuo do DBScan paralelizado. Outros trabalhos, tais como [He et al. 2011], [Dai and Lin 2012], tambm utilizam MapReduce para paralelizar o algoritmo de DBScan, porm apresentam estratgias e cenrio diferentes do apresentado neste texto.

12

Simpsio Brasileiro de Banco de Dados - SBBD 2013 Minicursos

1.4.2. Descrio dos Dados de trnsito Os dados utilizados nesse estudo de caso so da cidade de Fortaleza e foram coletados de sites de trnsito e de GPS. Tais dados so sobre o trfego na cidade, informando a velocidade mdia em que os carros trafegam em determinado local (latitude e longitude) e o horrio da coleta. A manipulao desses dados nesse trabalho considerada Big Data, (i) pela presena do grande volume de dados a ser gerenciado, (ii) pela variedade dos dados (dados obtidos a partir de diferentes fontes, os quais no estruturam a informao da mesma forma) e (iii) pela velocidade com que essas informaes chegam aos conjuntos de dados, dado que a todo instante de tempo, os sensores coletam a posio espao temporal do veculo, bem como a sua velocidade. 1.4.3. Infraestrutura de Computao em Nuvem A infraestrutura utilizada nesse estudo de caso o ambiente de nuvem privada da Universidade Federal do Cear (UFC) que tem como plataforma o OpenNebula. O nmero de mquinas virtuais utilizadas foram 11 com sistema operacional Ubuntu, 8GB de memria RAM e 4 unidades de CPU. A verso do Hadoop instalada em cada mquina foi a 1.1.2 e as variveis de ambiente foram setadas com valores como mostrados na Tabela 1.1. Em cada mquina tambm deve ser instalado o PostgreSQL 9.1, e ainda a biblioteca Spatial and Geographic Objects for PostgreSQL (PostGIS) para manipular objetos espaciais.
Tabela 1.1. Variveis de congurao do Hadoop setadas.

Varivel de Congurao hadoop.tmp.dir fs.default.name mapred.job.tracker mapreduce.task.timeout mapred.child.java.opts mapred.reduce.tasks dfs.replication

Valor /tmp/hadoop hdfs://master:54310 master:54311 36000000 -Xmx8192m 11 5

1.4.4. Algoritmo DBScan para dados Big Data O estudo de caso envolve diretamente a velocidade do uxo de trnsito, uma vez que os congestionamentos se caracterizam principalmente por baixas velocidades. Assim, a primeira etapa a partir dos dados coletados, inicialmente um ltro aplicado para que apenas registros com velocidades abaixo de 20km/h (consideradas como congestionamento) sejam considerados no conjunto de dados e os outros sejam descartados. A segunda etapa considerar a dimenso espacial: latitude e longitude. Nessa fase ocorre a clusterizao por proximidade geogrca dos pontos que foram selecionados de baixa velocidade. Dessa forma, ser possvel visualizar onde as velocidades baixas se concentram considerando a dimenso espacial, que representaro potencialmente os congestionamentos identicados. Porm, uma ltima etapa ainda necessria. Alm do processamento j realizado, a clusterizao por tempo fundamental para se identicar

13

Simpsio Brasileiro de Banco de Dados - SBBD 2013 Minicursos

Figura 1.2. Arquitetura da nossa soluo

em quais horrios os congestionamentos ocorrem. No entanto, para caracterizar melhor a soluo proposta, essa fase no abordada nesse estudo de caso. Dessa forma, a partir de um grande volume de dados de trnsito de uma cidade, o objetivo encontrar os trechos da cidade onde h mais congestionamento. Assim, necessrio identicar grupos que possuem alta densidade de pontos nesse conjunto de dados, e ainda que apresentem baixas velocidades. A seguir, os passos para paralelizar o DBScan utilizando o modelo de programao MapReduce que constituem a implementao da soluo proposta para o problema, tambm apresentado na Figura 1.2 Na primeira fase de Map, cada registro do conjunto de dados ser descrito como um par chave, valor , tal que a chave diz respeito rua em que a informao se refere, e o valor posio geogrca (latitude e longitude) da coleta. Em seguida, ocorre o Reduce que recebe uma lista de valores de mesma chave, ou seja, as posies geogrcas de uma mesma rua. Nessa fase, o algoritmo DBScan aplicado. O resultado armazenado em uma base de dados, so guardados o id de cada cluster e as informaes dos seus pontos (latitude, longitude, se core point, se noise, por exemplo). Esses termos so denidos pela tcnica do DBScan. Como as ruas de uma cidade se cruzam e o particionamento dos dados feito por rua, nessa fase necessrio descobrir quais clusters de ruas diferentes se interceptam ou podem ser reunidos em apenas um cluster. Ou seja, dois clusters podem ter pontos a uma distncia menor que eps, de tal sorte que se os dados fossem processados em um mesmo Reduce ou fossem de uma mesma partio, ter-ia-se apenas um nico cluster. Dessa forma, o cluster tambm armazenado como um objeto geomtrico no banco de dados, e apenas objetos que esto a uma distncia de no mximo eps podero passar pela fase de merge que a fase seguinte. Tuplas com pares de clusters candidatos a merge so passadas com mesma chave para o prximo MapReduce. Essa fase pode ser chamada de merge de clusters, ela tambm descrita por um processo MapReduce. A funo Map a identidade. A funo Reduce recebe como chave o menor id de clusters que devem ser reunidos em um s, e como valor os outros candidatos a merge com a chave. Nessa fase, se dois clusters devem

14

Simpsio Brasileiro de Banco de Dados - SBBD 2013 Minicursos

ser reunidos em um s, as informaes dos pontos pertencentes aos clusters so atualizadas. A abordagem desse trabalho considera a possibilidade de um ponto que noise em um cluster, com o merge de clusters, pode ter se tornado um border ou core point. A seguir os algoritmos implementados da soluo proposta. 1.4.5. Implementao dos algoritmos propostos Na programao MapReduce necessrio denir duas classes que estendam de MapReduceBase e implementem uma das seguintes interfaces: Mapper e Reducer. Os tipos de entrada e sada das funes de Map e Reduce so parametrizadas, sendo que esses parmetros devem implementar a interface Writable (o Hadoop j fornece alguns tipos bsicos que seguem essa interface).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

p u b l i c s t a t i c c l a s s C l u s t e r M a p p e r e x t e n d s MapReduceBase implements Mapper < L o n g W r i t a b l e , Text , Text , Text > { / / r e g i s t r o f o r m a d o p o r uma t r i p l a <Rua , l a t , l o n g > p u b l i c v o i d map ( L o n g W r i t a b l e key , T e x t v a l u e , O u t p u t C o l l e c t o r < Text , Text > o u t p u t , R e p o r t e r r e p o r t e r ) throws I O E x c e p t i o n { T e x t s t r e e t = new T e x t ( ) ; String line = value . toString () ; String [] tokenizer = line . split ( " ," ) ; street . set ( tokenizer [0]) ; S t r i n g v a l u e s = t o k e n i z e r [1]+ " "+ t o k e n i z e r [ 2 ] ; value . set ( values ) ; output . c o l l e c t ( street , value ) ; } }

Algoritmo 1.1. Primeiro MapReduce-Fase de particionamento

O procedimento map no Algoritmo 1.1 ClusterMapper tem como objetivo converter os dados recebidos em arquivos, tal que cada registro formado por uma tripla nomedarua, latitude, longitude em pares chave-valor K , V , de tal sorte que K o nome da rua e V uma tupla latitude, longitude . Tais pares so passados como entrada para a fase de Reduce a seguir. Isso possvel, pois o Hadoop por padro particiona os arquivos a serem processados por linha do arquivo, assim cada linha passada por vez ao procedimento map. Ainda no primeiro MapReduce na fase de Reduce, o Algoritmo 1.2 recebe para uma mesma chave um conjunto de valores, sendo a chave o nome da rua e cada valor uma posio geogrca pertencente rua que uma tupla latitude, longitude . O algoritmo de DBScan utilizando ndice KD-tree [Bentley 1975] aplicado aos pontos de uma mesma rua, sendo essa fase paralelizada para ruas distintas que pertencem ao conjunto de dados de entrada. Os resultados de cada cluster criado nessa fase so armazenados em uma base de dados, nesse estudo de caso utiliza-se o PostgreSQL. A classe contendo o mtodo principal apresentada no Algoritmo 1.3 em que o objeto JobConf construdo. Por meio deste possvel determinar todas as conguraes iniciais, alm dos diretrios de entrada e sada de dados e dos parmetros de eps

15

Simpsio Brasileiro de Banco de Dados - SBBD 2013 Minicursos

e minPoints necessrios aos algoritmos anteriormente apresentados. Perceba que o Algoritmo 1.2 tem um mtodo para obter o que foi passado de parmetro para JobConf no mtodo principal.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

p u b l i c s t a t i c c l a s s C l u s t e r R e d u c e r e x t e n d s MapReduceBase implements Reducer < Text , Text , Text , Text > { p r i v a t e s t a t i c double eps ; private s t a t i c int minPoints ; p u b l i c void c o n f i g u r e ( JobConf job ) { e p s = Double . p a r s e D o u b l e ( j o b . g e t ( " e p s " ) ) ; minPoints = I n t e g e r . p a r s e I n t ( job . get ( " minPoints " ) ) ; super . c o n f i g u r e ( job ) ; } p u b l i c v o i d r e d u c e ( T e x t key , I t e r a t o r < Text > v a l u e s , O u t p u t C o l l e c t o r < Text , Text > o u t p u t , R e p o r t e r r e p o r t e r ) throws I O E x c e p t i o n { S t r i n g p a t h = key . t o S t r i n g ( ) . r e p l a c e A l l ( " " , " " ) ; B u f f e r e d W r i t e r o u t = new B u f f e r e d W r i t e r ( new F i l e W r i t e r ( f i l e ) ) ; String [] line ; while ( val ues . hasNext ( ) ) { l i n e = values . next ( ) . t oStr ing ( ) . trim ( ) ; out . w r i t e ( l i n e [0]+ " , "+ l i n e [1]+ " \ n" ) ; } out . close ( ) ; dbscan . l o a d P o i n t s ( f i l e ) ; dbscan . c r e a t e I n d e x ( ) ; d b s c a n . d b s c a n ( key . t o S t r i n g ( ) , eps , m i n P o i n t s ) ; o u t p u t . c o l l e c t ( key , new T e x t ( " p o i n t s c l u s t e r e d " ) ) ; } }

Algoritmo 1.2. Primeiro MapReduce-Aplicao do DBScan nos dados de uma mesma partio
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

public c l a s s FirstMapReduceKdTree { p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) throws I O E x c e p t i o n { J o b C o n f c o n f = new J o b C o n f ( F i r s t M a p R e d u c e K d T r e e . c l a s s ) ; conf . s e t ( " eps " , args [ 2 ] ) ; conf . s e t ( " minPoints " , args [ 3 ] ) ; conf . setJobName ( " C l u s t e r i n g K d T r e e " ) ; conf . setOutputKeyClass ( Text . c l a s s ) ; conf . s e t O u t p u t V a l u e C l a s s ( Text . c l a s s ) ; conf . setMapperClass ( ClusterMapper . c l a s s ) ; conf . setReducerClass ( ClusterReducer . c l a s s ) ; conf . setInputFormat ( TextInputFormat . c l a s s ) ; conf . setOutputFormat ( TextOutputFormat . c l a s s ) ; F i l e I n p u t F o r m a t . s e t I n p u t P a t h s ( c o n f , new P a t h ( a r g s [ 0 ] ) ) ; F i l e O u t p u t F o r m a t . s e t O u t p u t P a t h ( c o n f , new P a t h ( a r g s [ 1 ] ) ) ; conf . s e t J a r B y C l a s s ( FirstMapReduceKdTree . c l a s s ) ; JobClient . runJob ( conf ) ; } }

Algoritmo 1.3. Classe que prepara os dados e que invoca as funes Map e Reduce

A fase seguinte feita por meio de dois procedimentos armazenados no PostgreSQL. O SGBD escolhido poderia ter sido outro que tivesse suporte a dados espaciais como, por exemplo, Oracle. O primeiro procedimento quando invocado cria um objeto geomtrico de cada cluster obtido da fase anterior. O segundo tem como objetivo encontrar quais clusters deveriam ser apenas um se estivessem em uma mesma partio durante a aplicao do DBScan. Assim, para descobrir quais clusters devem sofrer merge, vericado quais desses objetos esto a uma distncia menor ou igual que eps. A funo utilizada para criar objetos geomtricos st-convexhull e para comparar se a distncia

16

Simpsio Brasileiro de Banco de Dados - SBBD 2013 Minicursos

entre dois objetos geomtricos menor que eps, utiliza-se ST-Distance. Ambas fazem parte da biblioteca PostGIS. Para descobrir se dois clusters devem sofrer merge, o Algoritmo 1 a seguir recebe dois clusters dados de entrada C1 e C2 . Em seguida, para cada ponto pi C1 vericado quais pontos p j C2 esto a uma distncia menor ou igual a eps de pi . Dessa forma, a vizinhana de cada ponto dos dois clusters atualizada e, consequentemente, o nmero de vizinhos. Perceba que com isso, possvel que um ponto pi C1 que antes era border, pois em C1 havia menos que minPoints vizinhos, com a juno de C1 C2 pode virar core por ter aumentado sua vizinhana. Quando dois pontos quaisquer pi C1 e p j C2 so core e esto a uma distncia menor que eps, isso suciente e necessrio para que haja merge dos clusters. O Algoritmo 1 mostra como vericado se dois clusters devem se unir, bem como atualiza o nmero de vizinhos e os labels ehCore, ehBorder ou ehNoise. Se o retorno do Algoritmo 1 indica que deve ocorrer merge, os pontos pertencentes a cada cluster so renomeados para que tenham o mesmo identicador de cluster. Anteriormente a essa vericao de merge, o conjunto de clusters candidatos dado de entrada para a segunda fase de MapReduce. Como toda entrada de uma funo Map ou Reduce dada por um par constitudo por uma chave e a ela associada um conjunto de valores, a chave, nesse caso, o identicador de um cluster que chamado de representante. Os valores so todos os pares de clusters candidatos a merge com o representante.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35

p u b l i c s t a t i c c l a s s MergeReducer e x t e n d s MapReduceBase implements Reducer < Text , Text , Text , Text >{ p r i v a t e s t a t i c double eps ; private s t a t i c int minPoints ; p u b l i c void c o n f i g u r e ( JobConf job ) { e p s = Double . p a r s e D o u b l e ( j o b . g e t ( " e p s " ) ) ; minPoints = I n t e g e r . p a r s e I n t ( job . get ( " minPoints " ) ) ; super . c o n f i g u r e ( job ) ; } p u b l i c v o i d r e d u c e ( T e x t key , I t e r a t o r < Text > v a l u e , O u t p u t C o l l e c t o r < Text , Text > a r g 2 , R e p o r t e r a r g 3 ) throws I O E x c e p t i o n { String [] line ; String cluster ; A r r a y L i s t < S t r i n g > c l u s t e r s T o M e r g e = new A r r a y L i s t < S t r i n g > ( ) ; while ( value . hasNext ( ) ) { c l u s t e r s T o M e r g e . add ( v a l u e . n e x t ( ) . t o S t r i n g ( ) ) ; } f o r ( i n t i = 0 ; i < c l u s t e r s T o M e r g e . s i z e ( ) ; i ++) { line = clustersToMerge . get ( i ) . s p l i t ( " " ) ; i f ( d b s c a n . mergeDBScan ( l i n e [ 0 ] , l i n e [ 1 ] , eps , m i n P o i n t s ) ) { f o r ( i n t j = i + 1 ; j < c l u s t e r s T o M e r g e . s i z e ( ) ; j ++) { i f ( clustersToMerge . get ( j ) . startsWith ( l i n e [1]+ " " ) ) { c l u s t e r = clustersToMerge . get ( j ) ; c l u s t e r = c l u s t e r . replaceAll ( l i n e [1]+ " " , l i n e [0]+ " " ) ; clustersToMerge . set ( j , c l u s t e r ) ; } e l s e i f ( clustersToMe rge . g e t ( j ) . endsWith ( " "+ l i n e [ 1 ] ) ) { c l u s t e r = clustersToMerge . get ( j ) ; c l u s t e r = c l u s t e r . r e p l a c e A l l ( " "+ l i n e [ 1 ] , " "+ l i n e [ 0 ] ) ; clustersToMerge . set ( j , c l u s t e r ) ; } } } } } }

Algoritmo 1.4. Segundo MapReduce-Vericao de Merge dos clusters candidatos

17

Simpsio Brasileiro de Banco de Dados - SBBD 2013 Minicursos

A segunda fase de MapReduce tem a funo Map como identidade, porm a funo Reduce apresentada no Algoritmo 1.4 paralelizada de acordo com o nmero de representantes distintos de canditados a merge recebidos como chave. Tal algoritmo invoca o Algoritmo 1 para pares de clusters candidatos a merge e verica se realmente ocorre merge. A atualizao dos identicadores de clusters onde ocorre merge tambm feita na lista de candidatos a merge do Algoritmo 1.4. Algoritmo 1: MergeDBScan
Entrada: Ci , C j , eps,minPoints Sada: ocorreMerge ad j[][] f also; enquanto k Ci .tamanho faa pi Ci [k]; enquanto w C j .tamanho faa p j C j [w]; se distancia( pi , p j ) eps ento pi .vizinhanca pi .vizinhanca + 1; p j .vizinhanca p j .vizinhanca + 1; ad j[i][ j] true; m se w w + 1; m enqto se pi .vizinhanca minPoints pi .ehCore ento pi .ehCore true; m se k k + 1; m enqto enquanto w C j .tamanho faa p j C j [w]; se p j .vizinhanca minPoints p j .ehCore ento p j .ehCore verdadeiro; m se w w + 1; m enqto enquanto k Ci .tamanho faa pi Ci [k]; enquanto w C j .tamanho faa p j C j [w]; se p j .ehCore pi .ehCore ad j[i][ j] ento ocorreMerge verdadeiro; m se updatePontosNoise(); w w + 1; m enqto k k + 1; m enqto renomeiaClusters(); retornaocorreMerge;

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38

Da mesma forma que apresentado no Algoritmo 1.3, o objeto JobConf construdo no mtodo principal para invocar as funes Map e Reduce presentes nessa segunda fase de MapReduce. Por ser semelhante, omitimos tal mtodo.

18

Simpsio Brasileiro de Banco de Dados - SBBD 2013 Minicursos

tempo de processamento (ms)

Variao do eps 230000 220000 210000 200000 190000 100

150

200

250

300

350

400

eps

Figura 1.3. Variao do eps

Variao da quantidade de pontos

tempo de processamento(ms)

450000 400000 350000 300000 250000 200000 150000 100000 50000 0 200000 300000 400000 500000 600000

nmero de pontos

Figura 1.4. Variao da cardinalidade do conjunto de dados

Figura 1.5. Um dos conjuntos de dados utilizados nos experimentos com 246142 pontos plotados

19

Simpsio Brasileiro de Banco de Dados - SBBD 2013 Minicursos

Figura 1.6. Clusters encontrados depois da fase de merge para 246142 pontos (eps=100 e minPoints=50)

1.4.6. Resultados da anlise O primeiro teste variou o valor de eps e manteve a mesma quantidade de pontos em cada rua utilizada, isto , 246142 pontos. A variao de valores de eps foi 100,150,200,250,300 e 350, mantendo o valor de MinPoints como sendo 50. Como esperado, a Figura 1.3 mostra que com o aumento do eps, o tempo de processamento tambm aumenta, pois mais pontos na vizinhana de um core point podem ser expandidos. A Figura 1.4 ilustra a variao do nmero de pontos do conjunto de dados de entrada versus o tempo de processamento. A quantidade de pontos usada durante os experimentos foram 246.142, 324.778, 431.698 e 510.952 pontos. Como esperado, quando a quantidade de pontos a serem processados pelo DBScan aumenta, o tempo de processamento tambm aumenta, mostrando que a nossa soluo escalvel. As Figuras 1.5 e 1.6 apresentam os 246.142 pontos plotados que pertencem ao conjunto de dados de entrada e os clusters encontrados aps a aplicao do nosso mtodo para eps=100 e minPoints=50, respectivamente. Na Figura 1.6, os clusters que sofreram o processo de merge esto com cor diferente de verde, note que o merge s ocorreu para os clusters ou ruas que se cruzam.

1.5. Desaos para Big Data


A utilizao de Big Data apresenta diversas vantagens, mas tambm possui uma srie de desaos que devem ser superados para sua ampla utilizao. Diante do estudo realizado, alguns desaos para Big Data foram identicados. Estes desaos so oportunidades para trabalhos a serem desenvolvidos nesse contexto [Bertino et al. 2011] [QU et al. 2012]. Gartner armou que o principal desao em Big Data est no volume dos dados gerados, seguido pelo desempenho do sistema e a escalabilidade necessria, alm de lidar com o congestionamento na rede. Em [QU et al. 2012], so citados 3 aspectos desaadores para o processamento em Big Data. Em primeiro lugar, Gerenciamento e Armazenamento para Big Data: as tecnologias atuais no so adequadas para satisfazer as necessidades de Big Data, um dos fatores que a capacidade de armazenamento dos dis-

20

Simpsio Brasileiro de Banco de Dados - SBBD 2013 Minicursos

positivos cresce mais lentamente que o crescimento da quantidade de dados. Alm disso, os algoritmos de gerenciamento no so ecazes para trabalhar com heterogeneidade de dados. Os processos de anlise tradicionais esperam, em geral, dados homogneos. Dessa forma, os dados devem ser estruturados como primeiro passo da anlise. O processo de representao, acesso e anlise eciente de dados semiestruturados, que fazem parte do contexto de Big Data, tornam este processo mais complexo. necessrio lidar com erros e incompletude nos dados [Bertino et al. 2011]. Em segundo lugar, Computao e Anlise para Big Data: no processamento de consultas em Big Data, a velocidade fator signicante, visto que no possvel percorrer todos os dados de uma base de dados Big Data em pequeno intervalo de tempo. Por exemplo, para descobrir fraude em uma transao de um carto de crdito, necessrio detect-la antes que a transao seja completada. Adicionalmente, a utilizao de ndices no uma escolha apropriada para contornar o problema, j que estes so mais adequados para dados de tipo simples, ao passo que, em geral, Big Data apresenta estruturas de dados complexas. Assim sendo, a estratgia de paralelizar o processamento com o objetivo de diminuir o tempo de processamento uma soluo vivel tratar este problema em Big Data. Se a aplicao paralelizada, possvel aproveitar a infraestrutura dos provedores de nuvem composta por milhares de computares utilizados sob demanda e com baixo custo. O terceiro desao destacado em [QU et al. 2012] a Segurana em Big Data: o volume dos dados cresce exponencialmente e acarretam grandes desaos no monitoramento e na segurana destes dados. Os mtodos de segurana tradicionais devem ser repensados, pois deve ser possvel realizar o processo de minerao dos dados para Big Data sem expor informaes condenciais de usurios. As tecnologias atuais para proteo da privacidade so baseadas principalmente no conjunto de dados estticos, enquanto os dados em Big Data so alterados dinamicamente, incluindo padro de dados, variao do atributo e adio de novos dados. Muitos dos servios online atualmente requerem compartilhamento de informaes privadas (como em aplicaes como facebook), porm importante estar atento a quem controla essa informao compartilhada e como ela pode ser usada para o casamento com outras informaes. Assim, um desao alcanar de maneira ecaz a proteo da privacidade dos usurios neste contexto. Um desao citado por [Bertino et al. 2011] a questo da escalabilidade. No passado, o objetivo era ter processadores cada vez mais rpidos, e prover os recursos necessrios para lidar com o crescimento do volume de dados. Contudo, atualmente o volume de dados est aumentando em uma velocidade maior do que os recursos computacionais. Outra questo a colaborao humana, alcanada atualmente por meio de crowd-sourcing, sendo a Wikipdia o melhor exemplo disso. necessrio, nesse contexto, lidar tambm com informaes erradas por terem sido postadas por usurios mal intencionados. Em [Fan et al. 2013], so citados os desaos apenas para anlise em Big Data. Eles so decorrentes da alta dimensionalidade dos dados e pelo seu volume. O fato de haver vrias dimenses pode ocasionar problemas, tais como o acmulo de outliers e correlaes incorretas dos dados. Alta dimensionalidade combinada com o grande volume de dados ocasiona outros problemas como, por exemplo, alto custo computacional e al-

21

Simpsio Brasileiro de Banco de Dados - SBBD 2013 Minicursos

goritmos complexos. O grande volume de dados obtido a partir de mltiplas fontes, em diferentes pontos de tempo, utilizando diferentes tecnologias. Dessa forma, os problemas de heterogeneidade, de variaes experimentais e estatsticas, nos obrigam a desenvolver procedimentos robustos e mais adaptveis. Em relao ao gerenciamento de grandes infraestruturas para armazenar e processar os dados em nuvem, faz-se necessrio utilizar solues ecientes para a gesto destas infraestruturas. Apesar da abordagem Hadoop apresentar bons resultados, a sua utilizao complexa e no existe uma relao entre as tarefas realizadas e o nvel gerencial, por exemplo, garantir que o processamento seja realizado dentro de determinado intervalo. Assim sendo, um desao construir sistemas que facilitem a gesto de grandes infraestruturas e que permitam utilizar informaes gerenciais. Nesta direo, a verso do Hadoop YARN aumenta o poder dos clusters Hadoop, melhorando a escalabilidade e a utilizao de recursos baseados em SLAs [Hortonworks 2013].

1.6. Concluso
A cada dia, um grande volume de dados gerado por diferentes sistemas e dispositivos. Estes dados, chamados de Big Data, precisam ser armazenados e processados e podem ser analisados para obter tendncias, por exemplo. Contudo, realizar estas tarefas no simples, principalmente devido ao volume, velocidade e variedade. No tocante a anlise para Big Data, os sistemas de gerenciamento de dados tradicionais no so adequados para lidar com uma escala to grande. Algumas propostas exploram o paralelismo por meio de um grande nmero de mquinas para explorar o poder de armazenamento e computao. Neste contexto, a computao em nuvem fornece um ambiente escalvel, elstico e com pagamento baseado no uso, o que permite construir solues mais adequadas gesto e anlise de grandes volumes de dados. Este trabalho apresentou os principais aspectos de Big Data, destacando a anlise de dados. Foi apresentada a infraestrutura para anlise em Big Data, com foco no Hadoop. Tambm foram apresentados algoritmos de minerao adaptados para Big Data e boas prticas para a concepo de novos algoritmos, assim como um estudo de caso em ambientes de computao em nuvem. Por m, foram discutidos alguns desaos importantes para Big Data, tais como armazenamento, processamento, anlise, segurana, gerenciamento de grandes infraestruturas. Apesar de algumas solues atenuarem estes desaos, ainda existe muito a fazer, principalmente porque o volume de dados e a velocidade com que estes dados so gerados cresce de forma exponencial. Estes desaos geram oportunidades de pesquisa, de forma que a anlise para Big Data possa ser utilizada pelas empresas, melhorando seus produtos, servios e a qualidade de vida de todos.

Referncias
[Agrawal et al. 2011] Agrawal, D., Das, S., and El Abbadi, A. (2011). Big data and cloud computing: current state and future opportunities. In Proceedings of the 14th International Conference on Extending Database Technology, EDBT/ICDT 11, pages 530533, New York, NY, USA. ACM. [Agrawal et al. 1994] Agrawal, R., Srikant, R., et al. (1994). Fast algorithms for mining asso-

22

Simpsio Brasileiro de Banco de Dados - SBBD 2013 Minicursos

ciation rules. In Proc. 20th Int. Conf. Very Large Data Bases, VLDB, volume 1215, pages 487499. [Arthur and Vassilvitskii 2007] Arthur, D. and Vassilvitskii, S. (2007). k-means++: The advantages of careful seeding. Proceedings of the eighteenth annual ACM-SIAM symposium on Discrete algorithms. Society for Industrial and Applied Mathematics, pages 10271035. [Bahmani et al. 2012] Bahmani, B., Moseley, B., Vattani, A., Kumar, R., and Vassilvitskii, S. (2012). Scalable k-means++. Proceedings of the VLDB Endowment, 5(7):622633. [Begoli and Horey 2012] Begoli, E. and Horey, J. (2012). Design principles for effective knowledge discovery from big data. In Software Architecture (WICSA) and European Conference on Software Architecture (ECSA), 2012 Joint Working IEEE/IFIP Conference on, pages 215 218. IEEE. [Bentley 1975] Bentley, J. L. (1975). Multidimensional binary search trees used for associative searching. In Communications of the ACM, volume 18, pages 509517. ACM. [Bertino et al. 2011] Bertino, E., Bernstein, P., Agrawal, D., Davidson, S., Dayal, U., Franklin, M., Gehrke, J., Haas, L., Halevy, A., Han, J., et al. (2011). Challenges and opportunities with big data. [Coelho da Silva 2013] Coelho da Silva, T. L. (2013). Processamento elstico e no-intrusivo de consultas em ambientes de nuvem considerando o sla. Dissertao de Mestrado - Universidade Federal do Cear, page 55. [Cohen et al. 2009] Cohen, J., Dolan, B., Dunlap, M., Hellerstein, J. M., and Welton, C. (2009). Mad skills: new analysis practices for big data. Proceedings of the VLDB Endowment, 2(2):14811492. [Cover and Hart 1967] Cover, T. and Hart, P. (1967). Nearest neighbor pattern classication. Information Theory, IEEE Transactions on, 13(1):2127. [Cryans et al. 2010] Cryans, J.-D., Ratte, S., and Champagne, R. (2010). Adaptation of apriori to mapreduce to build a warehouse of relations between named entities across the web. In Advances in Databases Knowledge and Data Applications (DBKDA), 2010 Second International Conference on, pages 185189. IEEE. [Dai and Lin 2012] Dai, B.-R. and Lin, I.-C. (2012). Efcient map/reduce-based dbscan algorithm with optimized data partition. In Cloud Computing (CLOUD), 2012 IEEE 5th International Conference on, pages 5966. IEEE. [Dean and Ghemawat 2008] Dean, J. and Ghemawat, S. (2008). Mapreduce: simplied data processing on large clusters. Communications of the ACM, 51(1):107113. [Ester et al. 1996] Ester, M., Kriegel, H.-P., Sander, J., and Xu, X. (1996). A density-based algorithm for discovering clusters in large spatial databases with noise. In KDD, volume 96, pages 226231. [Fan et al. 2013] Fan, J., Han, F., and Liu, H. (2013). Challenges of big data analysis. arXiv preprint arXiv:1308.1479.

23

Simpsio Brasileiro de Banco de Dados - SBBD 2013 Minicursos

[Ghoting et al. 2011] Ghoting, A., Kambadur, P., Pednault, E., and Kannan, R. (2011). Nimble: a toolkit for the implementation of parallel data mining and machine learning algorithms on mapreduce. In Proceedings of the 17th ACM SIGKDD international conference on Knowledge discovery and data mining, pages 334342. ACM. [Hammoud 2011] Hammoud, S. (2011). Mapreduce network enabled algorithms for classication based on association rules. [He et al. 2010] He, Q., Zhuang, F., Li, J., and Shi, Z. (2010). Parallel implementation of classication algorithms based on mapreduce. In Rough Set and Knowledge Technology, pages 655662. Springer. [He et al. 2011] He, Y., Tan, H., Luo, W., Mao, H., Ma, D., Feng, S., and Fan, J. (2011). Mrdbscan: An efcient parallel density-based clustering algorithm using mapreduce. In Parallel and Distributed Systems (ICPADS), 2011 IEEE 17th International Conference on, pages 473 480. IEEE. [Herodotou et al. 2011] Herodotou, H., Lim, H., Luo, G., Borisov, N., Dong, L., Cetin, F. B., and Babu, S. (2011). Starsh: A self-tuning system for big data analytics. In CIDR, volume 11, pages 261272. [Hortonworks 2013] Hortonworks (2013). hadoop/yarn/. Hadoop Yarn. http://hortonworks.com/

[Ji et al. 2012] Ji, C., Li, Y., Qiu, W., Jin, Y., Xu, Y., Awada, U., Li, K., and Qu, W. (2012). Big data processing: Big challenges and opportunities. Journal of Interconnection Networks, 13(03n04). [Kim and Shim 2012] Kim, Y. and Shim, K. (2012). Parallel top-k similarity join algorithms using mapreduce. In Data Engineering (ICDE), 2012 IEEE 28th International Conference on, pages 510521. IEEE. [Li et al. 2008] Li, H., Wang, Y., Zhang, D., Zhang, M., and Chang, E. Y. (2008). Pfp: parallel fp-growth for query recommendation. In Proceedings of the 2008 ACM conference on Recommender systems, pages 107114. ACM. [Li and Zhang 2011] Li, L. and Zhang, M. (2011). The strategy of mining association rule based on cloud computing. In Business Computing and Global Informatization (BCGIN), 2011 International Conference on, pages 475478. IEEE. [Lin and Dyer 2010] Lin, J. and Dyer, C. (2010). Data-intensive text processing with mapreduce. Synthesis Lectures on Human Language Technologies, 3(1):1177. [Lu et al. 2012] Lu, W., Shen, Y., Chen, S., and Ooi, B. C. (2012). Efcient processing of k nearest neighbor joins using mapreduce. Proceedings of the VLDB Endowment, 5(10):1016 1027. [Mell and Grance 2009] Mell, P. and Grance, T. (2009). The nist denition of cloud computing. NIST, page 50. [Michie et al. 1994] Michie, D., Spiegelhalter, D. J., and Taylor, C. C. (1994). Machine learning, neural and statistical classication.

24

Simpsio Brasileiro de Banco de Dados - SBBD 2013 Minicursos

[Panda et al. 2009] Panda, B., Herbach, J. S., Basu, S., and Bayardo, R. J. (2009). Planet: massively parallel learning of tree ensembles with mapreduce. Proceedings of the VLDB Endowment, 2(2):14261437. [Pavlo et al. 2009] Pavlo, A., Paulson, E., Rasin, A., Abadi, D. J., DeWitt, D. J., Madden, S., and Stonebraker, M. (2009). A comparison of approaches to large-scale data analysis. In Proceedings of the 2009 ACM SIGMOD International Conference on Management of data, SIGMOD 09, pages 165178, New York, NY, USA. ACM. [QU et al. 2012] QU, W., LI, K., XU, Y., AWADA, U., JIN, Y., QIU, W., LI, Y., and JI, C. (2012). Big data processing: Big challenges and opportunities. Journal of Interconnection Networks, 13(03n04):1250009. [Quinlan 1986] Quinlan, J. R. (1986). Induction of decision trees. Machine learning, 1(1):81 106. [Rajaraman and Ullman 2012] Rajaraman, A. and Ullman, J. D. (2012). Mining of massive datasets. Cambridge University Press. [Ribeiro Jr et al. 2012] Ribeiro Jr, S. S., Renn, D., Gonalves, T. S., Davis Jr, C. A., Meira Jr, W., and Pappa, G. L. (2012). Observatrio do trnsito: sistema para deteco e localizao de eventos de trnsito no twitter. SBBD, pages 8188. [Riondato et al. 2012] Riondato, M., DeBrabant, J. A., Fonseca, R., and Upfal, E. (2012). Parma: a parallel randomized algorithm for approximate association rules mining in mapreduce. In Proceedings of the 21st ACM international conference on Information and knowledge management, pages 8594. ACM. [Schadt et al. 2010] Schadt, E. E., Linderman, M. D., Sorenson, J., Lee, L., and Nolan, G. P. (2010). Computational solutions to large-scale data management and analysis. Nature reviews. Genetics, 11(9):647657. [Silva 2004] Silva, M. (2004). Minerao de dados-conceitos, aplicaes e experimentos com weka. Livro da Escola Regional de Informtica Rio de Janeiro-Esprito Santo. Rio Janeiro: SBC. [Sousa et al. 2010] Sousa, F. R. C., Moreira, L. O., Macdo, J. A. F., and Machado, J. C. (2010). Gerenciamento de dados em nuvem: Conceitos, sistemas e desaos. In SBBD, pages 101130. [Suciu 2013] Suciu, D. (2013). Big data begets big database theory. In BNCOD, pages 15. [White 2012] White, T. (2012). Hadoop: the denitive guide. OReilly. [Wu et al. 2008] Wu, X., Kumar, V., Quinlan, J. R., Ghosh, J., Yang, Q., Motoda, H., McLachlan, G. J., Ng, A., Liu, B., Philip, S. Y., et al. (2008). Top 10 algorithms in data mining. Knowledge and Information Systems, 14(1):137. [Wu et al. 2013] Wu, X., Zhu, X., Wu, G.-Q., and Ding, W. (2013). Data mining with big data. IEEE Transactions on Knowledge and Data Engineering, 99(PrePrints):1. [Yang et al. 2010] Yang, X. Y., Liu, Z., and Fu, Y. (2010). Mapreduce as a programming model for association rules algorithm on hadoop. In Information Sciences and Interaction Sciences (ICIS), 2010 3rd International Conference on, pages 99102. IEEE.

25

Simpsio Brasileiro de Banco de Dados - SBBD 2013 Minicursos

[Zhou et al. 2012] Zhou, L., Wang, H., and Wang, W. (2012). Parallel implementation of classication algorithms based on cloud computing environment. TELKOMNIKA Indonesian Journal of Electrical Engineering, 10(5):10871092.

26

Você também pode gostar