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?
la source
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?
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:
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.
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.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.
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
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:
Ils donnent également des exemples pour chaque classe.
la source
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.
la source