Concepts de base et utilisation simple de Hadoop

1. Concept

1.1, Hadoop 1.0, Hadoop 2.0

Qu'est-ce que Hadoo 1.0

Hadoop1.0 est la première génération de Hadoop, qui fait référence à la version Hadoop d'Apache Hadoop 0.20.x, 1.x ou de la série CDH3. Le noyau est principalement HDFS和MapReduce两个系统composé de.
Dans lequel le traitement hors ligne MapReduce est un cadre 由编程模式(新旧API), 运行时环境(JobTracker和TaskTracker)et les 数据处理引擎(MapTask和ReduceTask)trois parties.

Qu'est-ce que Hadoo 2.0

Hadoop2.0 est la deuxième génération d'Hadoop, qui fait référence à la version Hadoop de la série Apache Hadoop 0.23.x, 2.x ou CDH4. Le noyau est principalement composé HDFS、MapReduce和YARN三个系统组成de YARN, un système de gestion des ressources, responsable de la gestion et de la planification des ressources du cluster, et de MapReduce Il s'agit d'un framework de traitement hors ligne fonctionnant sur YARN, identique à MapReduce dans Hadoop 1.0 en termes de modèle de programmation (nouvelle et ancienne API) et de moteur de traitement de données (MapTask et ReduceTask).

La différence entre les deux

Différence globale du cadre Hadoop

Hadoop 1.0 est composé d'un système de stockage distribué HDFS et d'un cadre de calcul distribué MapReduce. HDFS est composé d'un NameNode et de plusieurs DateNodes, et MapReduce est composé d'un JobTracker et de plusieurs TaskTrackers.

Hadoop2.0 a apporté les améliorations suivantes pour surmonter les lacunes de Hadoop1.0:

  1. Visant le problème du seul NameNode Hadoop1.0 limitant l'évolutivité de HDFS, la fédération HDFS est proposée, qui permet à plusieurs NameNodes de gérer différents répertoires pour obtenir une isolation d'accès et une expansion horizontale, et en même temps résoudre complètement le problème de point de défaillance unique de NameNode;
  2. Compte tenu des lacunes de MapReduce dans Hadoop 1.0 en termes d'évolutivité et de prise en charge multi-trames, il sépare la gestion des ressources et le contrôle des travaux dans JobTracker, qui sont respectivement composés de ResourceManager (responsable de l'allocation des ressources de toutes les applications) et d'ApplicationMaster (responsable de la gestion d'une application) Programme) mise en œuvre, c'est-à-dire l'introduction du cadre de gestion des ressources Yarn.
  3. En tant que système de gestion des ressources dans Hadoop2.0, Yarn est un module général de gestion des ressources qui peut gérer et planifier des ressources pour diverses applications. Il ne se limite pas à un cadre de MapReduce, mais peut également être utilisé par d'autres frameworks, tels que Tez et Spark. , Tempête, etc.

Différences dans le cadre de calcul MapReduce

Le cadre de calcul MapReduce1.0 est principalement composé de trois parties: le modèle de programmation, le moteur de traitement des données et l'environnement d'exécution. Son modèle de programmation de base consiste à résumer le problème en deux étapes, mapper et réduire, où l'étape de mappage analyse les données d'entrée en clé / valeur, appelle de manière itérative la fonction map () pour traitement, puis la sort dans le répertoire local sous la forme de clé / valeur , L'étape de réduction traitera la même valeur avec la clé et écrira le résultat final dans HDFS; son moteur de traitement de données est composé de MapTask et de ReduceTask, qui sont respectivement responsables du traitement logique de l'étape de carte et de la logique de l'étape de réduction; son environnement d'exécution est déterminé par Un JobTracker et plusieurs services TaskTracker sont composés de deux types de services. Le JobTracker est responsable de la gestion des ressources et du contrôle de tous les travaux, et le TaskTracker est responsable de la réception des commandes du JobTracker et de son exécution.
MapReducer2.0 a le même modèle de programmation et le même moteur de traitement de données que MRv1, la seule différence est l'environnement d'exécution. MRv2 est un framework de calcul MapReduce qui s'exécute sur le framework de gestion des ressources Yarn après traitement sur la base de MRv1. Son environnement d'exécution n'est plus composé de services tels que JobTracker et TaskTracker, mais devient le système général de gestion des ressources Yarn et le processus de contrôle des travaux ApplicationMaster, où Yarn est responsable de la planification de la gestion des ressources et ApplicationMaster est responsable de la gestion des travaux.

La différence entre Hadoop1 et Hadoop2 est toujours très grande, HDFS et MR sont différents, au moins les fichiers de configuration sont différents. Pour l'application de projet, il est recommandé de passer autant que possible à la version supérieure. Si vous êtes plus robuste, une version stable légèrement inférieure à la version la plus élevée suffit.

1.2, MapReduce et HDFS

Qu'est-ce que MapReduce

MapReduce est un modèle de programmation pour les opérations parallèles sur des ensembles de données à grande échelle (supérieurs à 1 To). Les concepts "Map" et "Reduce" et leurs idées principales sont empruntés à des langages de programmation fonctionnels, ainsi qu'à des fonctionnalités empruntées à des langages de programmation vectorielle. Cela facilite grandement les programmeurs d'exécuter leurs programmes sur des systèmes distribués sans programmation parallèle distribuée. L'implémentation logicielle actuelle consiste à spécifier une fonction de mappage (mappage) pour mapper un ensemble de paires clé-valeur en un ensemble de nouvelles paires clé-valeur, et à spécifier une fonction de réduction simultanée pour garantir que toutes les paires clé-valeur mappées Chacun d'eux partage le même jeu de clés.
Points clés:
1. MapReduce est un modèle de calcul distribué proposé par Google, principalement utilisé dans le champ de recherche pour résoudre le problème de calcul de données massives.
2. MR se compose de deux étapes: mapper et réduire.Les utilisateurs doivent seulement implémenter deux fonctions, mapper () et réduire (), pour réaliser le calcul distribué.

Qu'est-ce que HDFS

DFS est un système de fichiers distribué. Les fichiers distribués sont stockés dans un cluster composé de plusieurs ordinateurs. Le système utilisé pour gérer le stockage de fichiers distribué est appelé un système de fichiers distribué.

HDFS est le système de fichiers distribué Hadoop. Il est efficace pour stocker des fichiers volumineux, lire des flux et fonctionner sur du matériel commercial général . HDFS ne convient pas pour stocker un grand nombre de petits fichiers. Namenode stockera les métadonnées dans la mémoire. Normalement, chaque fichier, répertoire et bloc occupera 150 octets; il ne convient pas non plus à tout scénario d'écriture simultanée, opération d'écriture de fichier HDFS C'est le mode d'ajout.

1.3, somme de NameNode DataNode

Qu'est-ce que Block

Dans HDFS, les fichiers sont divisés en différents blocs et stockés dans les nœuds de données du cluster, et les métadonnées du système de fichiers sont gérées de manière centralisée par le système de fichiers. Le bloc du système de fichiers est généralement de 512 octets, mais HDFS est par défaut de 128 Mo, mais comparé aux systèmes de fichiers ordinaires, si un fichier n'atteint pas 128 Mo, il n'occupera pas tout le bloc. La taille de bloc par défaut est de réduire le temps d'adressage. 抽象出块的概念的好处在于一个文件的大小可以超过整个磁盘,简化存储管理,很适合复制机制来实现高可用.

Qu'est-ce que NameNode

NameNode est un logiciel qui s'exécute généralement sur une machine distincte dans une instance HDFS. Le NameNode gère l'espace de noms du système de fichiers et conserve les métadonnées de l'arborescence du système de fichiers, tous les fichiers, répertoires et blocs. Il existe deux types de métadonnées: l'image de l'espace de noms et le journal d'édition.

Qu'est-ce que DataNode

DataNode est également un logiciel qui s'exécute généralement sur une machine distincte dans une instance HDFS. NameNode a une relation de mappage entre Block et DataNode, mais il ne conserve pas ces informations. La source de ces informations dépend du rapport envoyé au NameNode lorsque le DataNode démarre.DataNode维护着最终的Block,并定期向NameNode发送该DataNode包含的Block列表。

1.4 、 JobTracker 和 TaskTracker

Qu'est-ce que JobTracker

JobTracker est un processus de service en arrière-plan. Après son démarrage, il surveillera et recevra toujours les informations de pulsation envoyées par chaque TaskTracker, y compris des informations telles que l'utilisation des ressources et l'état d'exécution des tâches.
Les principales fonctions de JobTracker:

  1. Contrôle des travaux: dans hadoop, chaque application est représentée comme un travail et chaque travail est divisé en plusieurs tâches Le module de contrôle des travaux de JobTracker est responsable de la décomposition des travaux et de la surveillance de l'état.
    La chose la plus importante est la surveillance de l'état: elle inclut principalement la surveillance de l'état de TaskTracker, la surveillance de l'état des travaux et la surveillance de l'état des tâches. Rôle principal: tolérance aux pannes et fournir une base décisionnelle pour la planification des tâches.
  2. La gestion des ressources.

Qu'est-ce que TaskTracker

TaskTracker est JobTracker和Task之间的桥梁: D'une part, il reçoit et exécute diverses commandes de JobTracker: exécuter des tâches, soumettre des tâches, tuer des tâches, etc.; d'autre part,
il signale périodiquement l'état de chaque tâche sur le nœud local à JobTracker via heartbeat. Le protocole RPC est utilisé pour la communication entre TaskTracker et JobTracker et Task.
Les principales fonctions de TaskTracker:

  1. 汇报心跳: Tracker rapporte périodiquement diverses informations sur tous les nœuds à JobTracker via le mécanisme de pulsation. Ces informations comprennent deux parties:
    des informations au niveau de la machine : santé du nœud, utilisation des ressources, etc.
    Informations au niveau de la tâche: progression de l'exécution de la tâche, statut d'exécution de la tâche, etc.
  2. 执行命令: JobTracker émettra diverses commandes à TaskTracker, notamment: lancer la tâche (LaunchTaskAction), soumettre la tâche (CommitTaskAction), tuer la tâche (KillTaskAction),
    tuer le travail (KillJobAction) et réinitialiser (TaskTrackerReinitAction).

1.5 、 ResourceManager 和 NodeManager

ResourceManager est basé sur les besoins en ressources des applications; chaque application nécessite différents types de ressources et nécessite donc différents conteneurs. ResourceManager 是一个中心的服务, Ce qu'il fait, c'est planifier, démarrer l'ApplicationMaster auquel chaque Job appartient et surveiller l'existence d'ApplicationMaster.

NodeManager est l'agent de chaque framework de machine, c'est le conteneur qui exécute l'application, surveille l'utilisation des ressources de l'application (CPU, mémoire, disque dur, réseau) et rend compte au planificateur (ResourceManager).
Les responsabilités d'ApplicationMaster comprennent: la demande de conteneurs de ressources appropriés auprès du planificateur, l'exécution des tâches, le suivi de l'état des applications et la surveillance de leur progression, et la gestion des causes des échecs de tâches.

2. Utilisation simple de Hadoop

Pour la construction du cluster Hadoop, reportez-vous à "Construire un cluster Hadoop sous CentOS7"

2.1 Créer un dossier

Créer un dossier / test / entrée sur HDFS

[root@hadoop-master bin]# hadoop fs -mkdir -p /test/input

2.2 Afficher le dossier créé

[root@hadoop-master bin]# hadoop fs -ls /
Found 1 items
drwxr-xr-x   - root supergroup          0 2020-08-19 12:19 /test
[root@hadoop-master bin]# hadoop fs -ls /test
Found 1 items
drwxr-xr-x   - root supergroup          0 2020-08-19 12:19 /test/input

2.3 Télécharger des fichiers

Préparer les fichiers de test

[root@hadoop-master test]# vi hw_hadoop.txt 
[root@hadoop-master test]# cat hw_hadoop.txt 
hello world leo825
hello world hadoop
hello that girl
hello that boy

Téléchargez le fichier dans le dossier / test / input de HDFS

[root@hadoop-master test]# hadoop fs -put ./hw_hadoop.txt /test/input

Vérifier les résultats du téléchargement

[root@hadoop-master test]#  hadoop fs -ls /test/input
Found 1 items
-rw-r--r--   2 root supergroup         69 2020-08-19 12:26 /test/input/hw_hadoop.txt

2.4 Télécharger des fichiers

[root@hadoop-master local]# hadoop fs -get /test/input/hw_hadoop.txt ./
[root@hadoop-master local]# ll
总用量 12
drwxr-xr-x.  2 root  root     6 4月  11 2018 bin
drwxr-xr-x.  2 root  root     6 4月  11 2018 etc
drwxr-xr-x.  2 root  root     6 4月  11 2018 games
drwxr-xr-x.  4 root  root    30 8月   8 10:59 hadoop
-rw-r--r--.  1 root  root    69 8月  19 16:52 hw_hadoop.txt

2.5 Exécutez un programme de démonstration de mapreduce: wordcount

Exécutez le wordcount dans le programme examples-2.7.3.jar suivant

hadoop jar /usr/local/hadoop/apps/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar  wordcount /test/input /test/output

Résultats de la

[root@hadoop-master test]# hadoop jar /usr/local/hadoop/apps/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar  wordcount /test/input /test/output
20/08/19 17:25:55 INFO client.RMProxy: Connecting to ResourceManager at hadoop-master/192.168.223.131:8032
20/08/19 17:25:56 INFO input.FileInputFormat: Total input paths to process : 1
20/08/19 17:25:56 INFO mapreduce.JobSubmitter: number of splits:1
20/08/19 17:25:57 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1597810488836_0001
20/08/19 17:25:57 INFO impl.YarnClientImpl: Submitted application application_1597810488836_0001
20/08/19 17:25:57 INFO mapreduce.Job: The url to track the job: http://hadoop-master:8088/proxy/application_1597810488836_0001/
20/08/19 17:25:57 INFO mapreduce.Job: Running job: job_1597810488836_0001
20/08/19 17:26:08 INFO mapreduce.Job: Job job_1597810488836_0001 running in uber mode : false
20/08/19 17:26:08 INFO mapreduce.Job:  map 0% reduce 0%
20/08/19 17:26:18 INFO mapreduce.Job:  map 100% reduce 0%
20/08/19 17:26:25 INFO mapreduce.Job:  map 100% reduce 100%
20/08/19 17:26:26 INFO mapreduce.Job: Job job_1597810488836_0001 completed successfully
20/08/19 17:26:26 INFO mapreduce.Job: Counters: 49
	File System Counters
		FILE: Number of bytes read=88
		FILE: Number of bytes written=237555
		FILE: Number of read operations=0
		FILE: Number of large read operations=0
		FILE: Number of write operations=0
		HDFS: Number of bytes read=184
		HDFS: Number of bytes written=54
		HDFS: Number of read operations=6
		HDFS: Number of large read operations=0
		HDFS: Number of write operations=2
	Job Counters 
		Launched map tasks=1
		Launched reduce tasks=1
		Rack-local map tasks=1
		Total time spent by all maps in occupied slots (ms)=6450
		Total time spent by all reduces in occupied slots (ms)=4613
		Total time spent by all map tasks (ms)=6450
		Total time spent by all reduce tasks (ms)=4613
		Total vcore-milliseconds taken by all map tasks=6450
		Total vcore-milliseconds taken by all reduce tasks=4613
		Total megabyte-milliseconds taken by all map tasks=6604800
		Total megabyte-milliseconds taken by all reduce tasks=4723712
	Map-Reduce Framework
		Map input records=4
		Map output records=12
		Map output bytes=117
		Map output materialized bytes=88
		Input split bytes=115
		Combine input records=12
		Combine output records=7
		Reduce input groups=7
		Reduce shuffle bytes=88
		Reduce input records=7
		Reduce output records=7
		Spilled Records=14
		Shuffled Maps =1
		Failed Shuffles=0
		Merged Map outputs=1
		GC time elapsed (ms)=131
		CPU time spent (ms)=1490
		Physical memory (bytes) snapshot=290959360
		Virtual memory (bytes) snapshot=4160589824
		Total committed heap usage (bytes)=154607616
	Shuffle Errors
		BAD_ID=0
		CONNECTION=0
		IO_ERROR=0
		WRONG_LENGTH=0
		WRONG_MAP=0
		WRONG_REDUCE=0
	File Input Format Counters 
		Bytes Read=69
	File Output Format Counters 
		Bytes Written=54

Dans l'interface Web YARN: http://192.168.223.131:8088/cluster

compter
Afficher le résultat de sortie:

[root@hadoop-master test]# hadoop fs -ls /test/output
Found 2 items
-rw-r--r--   2 root supergroup          0 2020-08-19 17:26 /test/output/_SUCCESS
-rw-r--r--   2 root supergroup         54 2020-08-19 17:26 /test/output/part-r-00000
[root@hadoop-master test]# hadoop fs -cat /test/output/part-r-00000
boy	1
girl	1
hadoop	1
hello	4
leo825	1
that	2
world	2

Je suppose que tu aimes

Origine blog.csdn.net/u011047968/article/details/107913010
conseillé
Classement