Qu'est-ce qu'Hadoop ?
J'ai consulté Google et Wikipedia, mais je ne sais pas exactement ce qu'est Hadoop et quel est son objectif.
Qu'est-ce qu'Hadoop ?
J'ai consulté Google et Wikipedia, mais je ne sais pas exactement ce qu'est Hadoop et quel est son objectif.
Je ne peux que supposer que vous ne demandez pas vraiment ce qu'est Hadoop, mais ce qu'est MapReduce, car c'est en fait ce qu'est Hadoop. Je vous suggère de regarder MapReduce : Traitement simplifié des données sur les grands clusters .
Les moteurs de recherche en sont une application évidente, mais il en existe d'autres. Le type d'algorithme que cela permet de résoudre est où :
Ou, pour le dire autrement, Hadoop est conçu comme un gestionnaire de travail distribué pour d'énormes quantités de données sur un grand nombre de systèmes. Mais Hadoop, c'est plus que cela, c'est aussi la surveillance, le basculement et l'ordonnancement.
Voici quelques exemples d'applications .
Google utilise souvent l'exemple de la création d'index. L'opération Map prend un ensemble de pages Web et crée des index de mots-clés. L'opération de réduction prend des cartes de mots-clés distribuées et les combine.
La définition de MapReduce est un peu difficile à appréhender pour certains, voici donc un exemple simple pour vous mettre dans le bon état d'esprit. Commençons par une question d'entretien standard de Google :
Supposons que vous ayez un fichier de 10 To de requêtes de recherche et 10 nœuds de calcul. Une requête de recherche est une ligne d'environ 50 caractères qui contient le mot ou la phrase que quelqu'un a entré pour la recherche.
Votre tâche consiste à trouver les 1000 premières phrases de recherche.
Limitations :
Solution :
En utilisant une fonction de hachage (dans ce domaine, également appelée fonction de hachage globale), distribuez le travail entre chacun des nœuds selon le processus suivant.
Ce processus tente de garantir (sur la base d'un Distribution de Poisson ) que chaque nœud recevra à peu près la même quantité de travail. Toute autre approche s'appuie sur des modèles ou des statistiques concernant les données de recherche pour répartir uniformément la charge de travail (ce qui n'est pas faisable quand on ne connaît pas les données).
Hadoop utilise un table de hachage distribuée (DHT) et d'autres trucs astucieux pour assurer, entre autres, l'équilibrage de la charge de travail, l'accès au stockage distribué, etc.
Divulgation : Je le fais. no avoir une quelconque exposition à Hadoop. Il se peut que certaines des descriptions ci-dessous ne soient pas "techniquement exactes", ce qui serait dû à la fois à ma propre ignorance et à ma tentative de présenter les choses en termes simples, dans l'esprit de la question initiale de Rachel et des diverses "redirections" qui ont suivi les réponses d'Andrew Hare.
N'hésitez pas à laisser des remarques et des annotations (ou même à modifier directement cette réponse) si vous pouvez améliorer l'exactitude du texte tout en gardant le matériel accessible aux non praticiens.
Hadoop permet d'exécuter des applications distribuées "dans le nuage". c'est-à-dire sur une collection dynamique d'hôtes matériels de base.
En termes très généraux, l'idée est d'exécuter une tâche en parallèle sans avoir à se soucier de l'emplacement des différentes parties de la tâche, ni de l'emplacement des fichiers de données associés à la tâche (en lecture ou en écriture).
Exemples, ce qui peut et ce qui ne peut pas être "Hadoopé".
Les moteurs de recherche sont un exemple typique de tâches qui se prêtent à être traitées par Hadoop ou des systèmes similaires, mais d'autres exemples incluent les gros travaux de tri, la catégorisation/le regroupement de documents, SVD et d'autres opérations d'algèbre linéaire (évidemment avec de "grosses" matrices), etc. A caractéristique requise des tâches à traiter avec Hadoop est cependant qu'elles peuvent être décrites en termes de deux fonctions a Fonction Map() qui est utilisé pour diviser la tâche en plusieurs morceaux structurellement identiques et une Fonction Reduce() qui prend des "morceaux" individuels et les traite en produisant des résultats fusionnables.
L'idée du modèle MapReduce est qu'il fournit une description générique et claire de tout ce qui peut être traité en parallèle. Cela aide à la fois les développeurs d'applications qui ne fournissent que la paire de fonctions MapReduce, sans avoir à se soucier des détails de synchronisation, etc., et le système Hadoop lui-même qui peut alors traiter chaque tâche de la même manière (même si l'implémentation des fonctions Map/Reduce peut varier énormément).
Un autre composant clé de Hadoop est le système de fichiers distribué qui permet de stocker de manière fiable d'énormes quantités de données (de la taille d'un pétaoctet). Hadoop comprend plusieurs sous-systèmes, fonctionnalités et paramètres de configuration supplémentaires qui, ensemble, permettent de produire des systèmes dynamiques et tolérants aux pannes.
Vocabulaire :
A nœud est un hôte informatique qui peut exécuter des tâches Map() ou Reduce() (ainsi qu'adhérer au protocole du système Hadoop, c'est-à-dire "obéir" au gestionnaire Hadoop qui orchestre toutes ces parties mobiles). Un système Hadoop peut compter plusieurs milliers de nœuds, c'est-à-dire de travailleurs potentiels auxquels il peut confier des tâches.
Pétaoctet \= 1 million de gigaoctets.
Cloud Computing Informatique basée sur des groupes dynamiquement évolutifs d'ordinateurs à usage général (physiques ou virtuels) disponibles sur un réseau (ou plus généralement sur l'internet). Les deux concepts clés sont les suivants : a) les applications utilisant le nuage n'ont aucune connaissance ni aucun contrôle direct sur l'ensemble des ressources qui répondent à leurs demandes à un moment donné ; b) aucun logiciel spécifique à une application donnée n'est installé "à l'avance" sur les nœuds (enfin... ils reçoivent, et éventuellement mettent en cache la logique de la fonction Map() ou Reduce(), et ils bénéficient de l'état actuel du système de fichiers avec divers ensembles de données appartenant à l'application, mais l'idée est qu'ils sont "de base". Ils peuvent aller et venir, et pourtant le travail sera fait).
Il y a un beau tutoriel donné à Réseau de développeurs Yahoo. Vous allez l'aimer. Il est destiné aux débutants qui découvrent Hadoop.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.