[Big Data] MapReduce

MapReduce

Un cadre de programmation pour les programmes de calcul distribué est le cadre principal permettant aux utilisateurs de développer des "applications d'analyse de données basées sur Hadoop".

Fonctions de base de MapReduce

Avec le code de logique métier écrit par l' utilisateur et livré avec des composants par défaut pour intégrer un programme informatique distribué complet (code d'intégration, devenir adapté à une exécution sur un programme distribué) et s'exécuter sur un cluster Hadoop.

Avantages de MapReduce :

  • MapReduce est facile à programmer: il implémente simplement certaines interfaces pour compléter un programme distribué, qui peut être distribué à un grand nombre de machines PC bon marché pour fonctionner. En d'autres termes, l' écriture d'un programme distribué est exactement la même chose que l'écriture d'un simple programme série .
  • MapReduce a une bonne évolutivité: une fois que les ressources informatiques ne sont pas satisfaites, il peut étendre sa puissance de calcul en ajoutant simplement des machines et améliorer la fiabilité grâce au mécanisme de copie.
  • Tolérance aux pannes élevée: par exemple, si l'une des machines est suspendue, la tâche de calcul ci - dessus peut être transférée vers un autre nœud, de sorte que la tâche n'échoue pas, et ce processus est automatique .
  • Convient pour le traitement massif de données hors ligne au-dessus du niveau PB: pour réaliser des opérations simultanées sur des milliers de clusters.

Inconvénients de MapReduce :

  • MapReduce ne peut pas renvoyer de résultats en millisecondes ou en secondes comme mysql.
  • Pas bon pour le streaming informatique, le jeu de données entré par MapReduce est statique .
  • Pas bon pour le calcul du DAG

Les idées de programmation de base de MapReduce:

La tâche de mappage ——> consiste à diviser le fichier , à diviser chaque ligne d'entrée et de sortie, à saluer le mot, à le diviser sous la forme d'une valeur clé et à le remettre au processus ruduce pour un traitement ultérieur.

Réduire la tâche ——> consiste à compter les résultats de la carte.


L'entrée de la carte est également sous la forme de key1 et value1, key1 est le décalage et value1 est le contenu de chaque ligne.

Décalage:

hello word

hello nihao

0 1 2 3 4 5 6 7

map(0,“hello word”)

map(12,“hello nihao”)

//空格算一个,换行不计

La valeur de sortie2 de la carte est un élément et value3 est un itérateur de collection, qui est une collection de valeur2

reduce(hello,(1,1,1,1)) //map的输出作为reduce的输入,将相同key放在一起作为一个集合

Raisons de l'utilisation des types de données dans Hadoop:

student{
string name;
string age;
string set;
}              java封装后通过网络传输——————————>100kb
               hadoop类型已经实现了序列化传输——————————>10kb


Sérialisation

Il s'agit de convertir les objets en mémoire en séquences d'octets (ou autres protocoles de transfert de données) pour le stockage sur disque (persistance) et la transmission réseau, et la désérialisation et vice versa.

Caractéristiques de la sérialisation hsdoop:

  • Utilisation compacte et efficace de l'espace de stockage. Dans l'exemple ci-dessus, seul (nom, âge, sexe) est transmis
  • Rapide, peu de développement supplémentaire pour la lecture et l'écriture de données.
  • Évolutif, mise à niveau avec la mise à niveau du protocole de communication
  • Prise en charge de l'interaction multilingue, r, scala, c ++

 

MapReduce workflow détaillé:

 

Mécanisme de shuffer:

Après la méthode de la carte, le traitement des données avant la méthode de réduction est appelé shuffle

Tampon en anneau: il n'y a ni tête ni queue, débordement à 80%

Le processus de lecture aléatoire est juste de l'étape 7 à l'étape 16.

  1. maptask collecte les paires kv produites par notre méthode map () et les place dans la mémoire tampon.
  2. Le fichier de disque local déborde en permanence de la mémoire tampon et plusieurs fichiers peuvent être débordés.
  3. Plusieurs fichiers de débordement seront fusionnés dans un gros fichier de débordement
  4. Pendant le processus de débordement et le processus de fusion, le partitionneur doit être appelé pour partitionner et trier les clés.
  5. Selon son propre numéro de partition, reducetask va à chaque machine maptask pour récupérer les données de partition de résultat correspondantes.
  6. reducetask récupérera les fichiers de résultats à partir de différentes tâches de mappage dans la même partition. reducetask fusionnera ces fichiers (fusion et tri).
  7. Après la fusion dans un fichier volumineux, le processus de lecture aléatoire est terminé, puis le processus d'opération logique de reducetask est entré (retirez un groupe de paires clé-valeur du fichier et appelez la méthode de réduction définie par l'utilisateur.

Résumé de la lecture aléatoire:

La taille de la mémoire tampon affectera l'efficacité d'exécution de mapreduce: en principe, plus la mémoire tampon est grande, moins il y a d'E / S disque, plus la vitesse d'exécution est rapide.

 

 

 

 

 

 

 

Je suppose que tu aimes

Origine blog.csdn.net/Qmilumilu/article/details/104650793
conseillé
Classement