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.