Processamento de Dados Massivos/Projeto e implementação de aplicações Big Data/Classificação associativa incremental (LAC): diferenças entre revisões
[edição não verificada] | [edição não verificada] |
Conteúdo apagado Conteúdo adicionado
Sem resumo de edição |
Sem resumo de edição |
||
Linha 60:
Portanto o Distributed LAC necessita antes de classificar os dados agrupá-los. Um esquema, simplificado, pode ser visto na Figura 1, em que os itens de cores parecidas são agrupados e processados pela mesma CPU. Este é o primeiro passo do algoritmo.
[[Ficheiro:Esquema 1.svg|center|commoldura|Primeira fase do Distributed LAC.]]
Linha 71:
== Implementação em Hadoop ==
=== Map ===
=== Reduce ===
=== Decisões de Implementação ===
Linha 78 ⟶ 83:
Por padrão o Hadoop divide cada arquivo de entrada em vários chunks que são processador por diferentes mappers, este processo é feito para aumentar o grau de paralelismo.
[[Ficheiro:Hadoop-chunking1.png|commoldura|centro|Divisão de um arquivo de
Contudo, este processo não é o adequado para nossa aplicação, visto que queremos processar cada arquivo em um único mapper desta forma a cache do LAC será aproveitada adequadamente. Para garantir que cada arquivo seja processado por apenas um mapper foi extendida a classe de input desejada, no nosso caso '''KeyValueTextInputFormat''', e sobrecarregamos o método '''isSplitable()''' de forma que retornase '''false'''.
Linha 87 ⟶ 92:
Para que cada mapper possa processar o arquivo com as instâncias de teste é necessário que cada mapper possua um classificador treinado, uma solução seria antes de realizar o processamento em cada mapper obter o classificador previamente serializado por meio do HDFS, porém isto pode acarretar em um overhead considerável. Uma alternativa para este problema é copiar o classificador serilizado para cada maquina e assim o mapper acessa o arquivo localmente. O Hadoop fornece a classe '''DistributedCache''' para este tipo de situação, contudo durante nossos experimentos tivemos vários problemas com esta funcionalidade, desta forma replicamos a funcionalidade desta classe por meio de scripts em bash.
== Avaliação Experimental ==
=== Métodos de Particionamento ===
==== Particionamento Aleatório ====
==== Particionamento por Clustering ====
==== Particionamento por Clustering com cortes ====
== Conclusão ==
|