Ciência de dados e modelo de programação MapReduce do Hadoop


8

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:


13

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 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:

  • Shark e Spark SQL fornecem interfaces alternativas do tipo SQL aos dados armazenados no HDFS
  • O Spark Streaming facilita o trabalho com fluxos de dados contínuos (por exemplo, feed do Twitter)
  • O MLlib implementa vários algoritmos de aprendizado de máquina com uma API bastante simples e flexível
  • O GraphX permite processamento gráfico em larga escala

Portanto, há um conjunto muito grande de problemas de ciência de dados que você pode resolver com o Hadoop e projetos relacionados.


Não tenho tanta certeza sobre o que você diz no MapReduce, especialmente 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.
31714

@fxm: a estrutura MapReduce pode ser usada para tarefas praticamente diferentes. Por exemplo, o Oozie - planejador de fluxo de trabalho para diferentes componentes do Hadoop - possui a chamada ação Java, que simplesmente cria um mapeador e executa nele o código Java personalizado. Com essa abordagem, você pode executar essencialmente qualquer código. Isso, no entanto, não oferece vantagens de MR em comparação com o aplicativo Java simples. A única maneira de obter essas vantagens é executar cálculos em paralelo (usando o Map) em nós com dados , ou seja, localmente. Para resumir: você pode executar qualquer código com o MR, mas para obter desempenho, é necessário manter a localidade dos dados.
ffriend

Concordo, mas o que eu quis dizer é que um desenvolvedor não deve se preocupar em gerenciar a localidade dos dados (que é gerenciada pelo hadoop), mas em expressar os algoritmos desejados com o padrão MapReduce.
merours

@fxm: developer garante a localidade usando o mapeador. Grosso modo, "mapa (f, dados)" significa "transferir f () para nós de dados e executá-lo localmente". Se o desenvolvedor não considerar a localidade (por exemplo, reduz todos os cálculos), ele perde todas as vantagens do MR. Portanto, expressar algo como um trabalho de MR (eficiente) implica a utilização da localidade dos dados de qualquer maneira. Dito isso, eu ainda sugeriria o uso de ferramentas mais flexíveis do que o MR puro, como o Spark.
ffriend

9

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 .



2

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.