Quais são as diferentes classes de problemas de ciência de dados que podem ser resolvidos usando o modelo de programação mapreduce?
Quais são as diferentes classes de problemas de ciência de dados que podem ser resolvidos usando o modelo de programação mapreduce?
Respostas:
Vamos primeiro dividi-lo em partes.
A ciência de dados trata de tornar o conhecimento a partir de dados brutos. Ele usa aprendizado de máquina, estatísticas e outros campos para simplificar (ou até automatizar) a tomada de decisão. As técnicas de ciência de dados podem funcionar com qualquer tamanho de dado, mas mais dados significam melhores previsões e, portanto, decisões mais precisas.
Hadoop é um nome comum para um conjunto de ferramentas destinadas a trabalhar com grandes quantidades de dados. Dois componentes mais importantes no Hadoop são o HDFS e o MapReduce.
O HDFS , ou Hadoop Distributed File System, é um armazenamento distribuído especial capaz de armazenar grandes quantidades de dados. Arquivos grandes no HDFS são divididos em blocos e, para cada bloco, a API do HDFS expõe sua localização .
MapReduce é uma estrutura para executar cálculos em nós com dados. O MapReduce usa muito a localidade de dados exposta pelo HDFS: quando possível, os dados não são transferidos entre os nós, mas, em vez disso, o código é copiado para os nós com os dados.
Portanto, basicamente, qualquer problema (incluindo tarefas de ciência de dados) que não quebre o princípio da localidade dos dados pode ser implementado com eficiência usando o MapReduce (e vários outros problemas podem ser resolvidos não tão eficientemente, mas simplesmente o suficiente).
Vamos dar alguns exemplos. Muitas vezes, o analista precisa apenas de algumas estatísticas simples sobre seus dados tabulares. Nesse caso , o Hive , que é basicamente o mecanismo SQL sobre o MapReduce, funciona muito bem (também existem Impala, Shark e outros, mas eles não usam o MapReduce do Hadoop, mais sobre eles posteriormente).
Em outros casos, o analista (ou desenvolvedor) pode querer trabalhar com dados não estruturados anteriormente. O Pure MapReduce é muito bom para transformar e padronizar dados.
Algumas pessoas estão acostumadas a estatísticas e visualizações exploratórias usando ferramentas como R. É possível aplicar essa abordagem a grandes quantidades de dados usando o pacote RHadoop .
E quando se trata de aprendizado de máquina baseado no MapReduce, o Apache Mahout é o primeiro a mencionar.
No entanto, há um tipo de algoritmo que funciona muito lentamente no Hadoop, mesmo na presença de localidade dos dados, a saber, algoritmos iterativos. Os algoritmos iterativos tendem a ter vários estágios Map e Reduce. A estrutura de MR do Hadoop lê e grava dados no disco em cada estágio (e às vezes no meio), o que torna as tarefas iterativas (bem como qualquer estágio múltiplo) terrivelmente lentas.
Felizmente, existem estruturas alternativas que podem usar a localidade dos dados e manter os dados na memória entre os estágios. Provavelmente, o mais notável deles é o Apache Spark . O Spark substitui completamente o MapReduce do Hadoop, que usa seu próprio tempo de execução e expõe uma API bastante rica para manipular seu conjunto de dados distribuído. O Spark possui vários subprojetos, intimamente relacionados à ciência de dados:
Portanto, há um conjunto muito grande de problemas de ciência de dados que você pode resolver com o Hadoop e projetos relacionados.
A Data Science possui muitas subáreas diferentes, conforme descrito no meu post ). Quase para cada área, cientistas e desenvolvedores têm contribuições significativas. Para saber mais sobre o que pode ser feito, consulte os seguintes sites:
Além disso, existem alguns trabalhos sobre a combinação MapReduce + Excel + Cloud, mas não encontrei o link.
Quais são as diferentes classes de problemas de ciência de dados ...
Cada "classe" não é um domínio de problema puramente homogêneo, ou seja, algum problema não pode ser resolvido via mapa e reduzir a abordagem devido ao seu custo de comunicação ou comportamento do algoritmo. O que quero dizer com comportamento é que algum problema quer ter controle sobre todos os conjuntos de dados em vez de partes. Assim, recuso-me a listar o tipo de problema "classes".
Não esqueça que saber o que o MapReduce pode fazer não é suficiente para a Ciência de Dados. Você também deve saber o que o MapReduce também não pode fazer .
Há um artigo que você deve analisar:
MapReduce: Computação Distribuída para Aprendizado de Máquina
Eles distinguem três classes de problemas de aprendizado de máquina que são razoáveis para resolver com o MapReduce:
Eles também dão exemplos para cada classe.
mapear / reduzir é mais apropriado para cálculos offline paralelizáveis. Para ser mais preciso, funciona melhor quando o resultado pode ser encontrado a partir do resultado de alguma função de uma partição da entrada. A média é um exemplo trivial; você pode fazer isso com mapear / reduzir somando cada partição, retornando a soma e o número de elementos na partição e calculando a média geral usando esses resultados intermediários. É menos apropriado quando as etapas intermediárias dependem do estado das outras partições.
So basically any problem that doesn't break data locality principle may be efficiently implemented using MapReduce
. Pelo meu entendimento, você só pode resolver problemas que podem ser expressos com o padrão MapReduce.