Science des données et modèle de programmation MapReduce de Hadoop

8

Quelles sont les différentes classes de problèmes de science des données qui peuvent être résolus en utilisant le modèle de programmation mapreduce?

jithinjustin
la source

Réponses:

13

Commençons par le diviser en parties.

La science des données consiste à créer des connaissances à partir de données brutes. Il utilise l'apprentissage automatique, les statistiques et d'autres domaines pour simplifier (ou même automatiser) la prise de décision. Les techniques de science des données peuvent fonctionner avec n'importe quelle taille de données, mais plus de données signifie de meilleures prévisions et donc des décisions plus précises.

Hadoop est un nom commun pour un ensemble d'outils destinés à travailler avec de grandes quantités de données. HDFS et MapReduce sont les deux composants les plus importants de Hadoop.

HDFS , ou Hadoop Distributed File System, est un stockage distribué spécial capable de contenir de très grandes quantités de données. Les fichiers volumineux sur HDFS sont divisés en blocs et pour chaque bloc, l'API HDFS expose son emplacement .

MapReduce est un framework pour exécuter des calculs sur des nœuds avec des données. MapReduce utilise fortement la localité de données exposée par HDFS: lorsque cela est possible, les données ne sont pas transférées entre les nœuds, mais à la place, le code est copié sur les nœuds avec les données.

Donc, fondamentalement, tout problème (y compris les tâches de science des données) qui ne rompt pas le principe de localisation des données peut être efficacement implémenté à l'aide de MapReduce (et un certain nombre d'autres problèmes peuvent être résolus non pas efficacement, mais tout simplement assez).


Prenons quelques exemples. Très souvent, l'analyste n'a besoin que de statistiques simples sur ses données tabulaires. Dans ce cas, Hive , qui est essentiellement un moteur SQL sur MapReduce, fonctionne plutôt bien (il existe également Impala, Shark et d'autres, mais ils n'utilisent pas MapReduce de Hadoop, donc plus sur eux plus tard).

Dans d'autres cas, l'analyste (ou développeur) peut vouloir travailler avec des données non structurées auparavant. Pure MapReduce est assez bon pour transformer et standardiser les données.

Certaines personnes sont habituées aux statistiques exploratoires et à la visualisation à l'aide d'outils comme R. Il est possible d'appliquer cette approche aux volumes de Big Data à l'aide du package RHadoop .

Et en ce qui concerne l'apprentissage automatique basé sur MapReduce, Apache Mahout est le premier à le mentionner.


Il existe cependant un type d'algorithmes qui fonctionne assez lentement sur Hadoop même en présence de la localité des données, à savoir les algorithmes itératifs. Les algorithmes itératifs ont généralement plusieurs étapes Map et Reduce. Le framework MR de Hadoop lit et écrit des données sur le disque à chaque étape (et parfois entre les deux), ce qui rend les tâches itératives (ainsi que toutes les étapes multiples) terriblement lentes.

Heureusement, il existe des cadres alternatifs qui peuvent à la fois - utiliser la localisation des données et conserver les données en mémoire entre les étapes. Probablement, le plus notable d'entre eux est Apache Spark . Spark est un remplacement complet de MapReduce de Hadoop qui utilise son propre runtime et expose une API assez riche pour manipuler votre jeu de données distribué. Spark a plusieurs sous-projets, étroitement liés à la science des données:

  • Shark et Spark SQL fournissent des interfaces de type SQL alternatives aux données stockées sur HDFS
  • Spark Streaming facilite le travail avec des flux de données continus (par exemple, un flux Twitter)
  • MLlib implémente un certain nombre d'algorithmes d'apprentissage automatique avec une API assez simple et flexible
  • GraphX permet un traitement graphique à grande échelle

Il existe donc un ensemble assez important de problèmes de science des données que vous pouvez résoudre avec Hadoop et les projets associés.

ami
la source
Je ne suis pas sûr de ce que vous dites sur MapReduce, en particulier So basically any problem that doesn't break data locality principle may be efficiently implemented using MapReduce. D'après ma compréhension, vous ne pouvez résoudre que des problèmes qui peuvent être exprimés avec le modèle MapReduce.
merours
@fxm: le framework MapReduce peut être utilisé pour des tâches assez différentes. Par exemple, Oozie - planificateur de workflow pour différents composants Hadoop - a une action dite Java, qui crée simplement un mappeur et y exécute du code Java personnalisé. Avec cette approche, vous pouvez essentiellement exécuter n'importe quel code. Cependant, cela ne vous donnera aucun avantage MR par rapport à une simple application Java. La seule façon d'obtenir ces avantages est d'exécuter des calculs en parallèle (à l'aide de Map) sur des nœuds contenant des données , c'est-à-dire localement. Pour résumer: vous pouvez exécuter n'importe quel code avec MR, mais pour obtenir des performances, vous devez conserver la localité des données.
ffriend
Je suis d'accord, mais ce que je voulais dire, c'est qu'un développeur ne devrait pas se soucier de gérer la localité des données (qui est gérée par hadoop), mais plutôt d'exprimer les algorithmes souhaités avec le modèle MapReduce.
merours
@fxm: le développeur garantit la localité en utilisant le mappeur. En gros, "map (f, data)" signifie "transférer f () vers les nœuds de données et l'exécuter localement". Si le développeur ne tient pas compte de la localité (par exemple, met tous les calculs au réducteur), il perd tous les avantages de MR. Donc, exprimer algo comme un travail MR (efficace) implique de toute façon l'utilisation de la localité des données. Cela dit, je suggérerais toujours d'utiliser des outils plus flexibles que la RM pure comme Spark.
ffriend
9

La science des données a de nombreux sous-domaines différents, comme décrit dans mon article ). Presque pour chaque domaine, les scientifiques et les développeurs ont des contributions importantes. Pour en savoir plus sur ce qui peut être fait, veuillez consulter les sites Web suivants:

De plus, il y a du travail sur la combinaison MapReduce + Excel + Cloud mais je n'ai pas trouvé le lien.

Quelles sont les différentes classes de problèmes de Data Science ...

Chaque «classe» n'est pas un domaine de problème purement homogène, c'est-à-dire qu'un problème ne peut pas être résolu via la carte et réduire l'approche en raison de son coût de communication ou du comportement de l'algorithme. Ce que je veux dire par comportement, c'est qu'un problème veut contrôler tous les ensembles de données au lieu des blocs. Ainsi, je refuse d'énumérer le type de problème "classes".

N'oubliez pas que savoir ce que MapReduce peut faire ne suffit pas pour la science des données. Vous devez également savoir ce que MapReduce ne peut pas faire aussi.


la source
4

Il y a un document que vous devriez examiner:

MapReduce: calcul distribué pour l'apprentissage automatique

Ils distinguent 3 classes de problèmes d'apprentissage automatique qu'il est raisonnable de résoudre avec MapReduce:

  1. Algorithmes à passage unique
  2. Algorithmes itératifs
  3. Algorithmes basés sur les requêtes

Ils donnent également des exemples pour chaque classe.

AceRymond
la source
2

map / Reduce est le plus approprié pour les calculs hors ligne parallélisables. Pour être plus précis, cela fonctionne mieux lorsque le résultat peut être trouvé à partir du résultat d'une fonction d'une partition de l'entrée. La moyenne est un exemple trivial; vous pouvez le faire avec mapper / réduire en additionnant chaque partition, en retournant la somme et le nombre d'éléments dans la partition, puis en calculant la moyenne globale en utilisant ces résultats intermédiaires. Elle est moins appropriée lorsque les étapes intermédiaires dépendent de l'état des autres partitions.

Emre
la source