Grundlegende Konzepte und einfache Verwendung von Hadoop

1. Konzept

1.1 、 Hadoop 1.0 和 Hadoop 2.0

Was ist Hadoo 1.0?

Hadoop1.0 ist die erste Generation von Hadoop, die sich auf die Hadoop-Version der Apache Hadoop 0.20.x-, 1.x- oder CDH3-Serie bezieht. Der Kernel besteht hauptsächlich HDFS和MapReduce两个系统aus.
Wobei die Offline - MapReduce Verarbeitung ist ein Framework 由编程模式(新旧API), 运行时环境(JobTracker和TaskTracker)und die 数据处理引擎(MapTask和ReduceTask)drei Teile.

Was ist Hadoo 2.0?

Hadoop2.0 ist die zweite Generation von Hadoop, die sich auf die Hadoop-Version der Apache Hadoop 0.23.x-, 2.x- oder CDH4-Serie bezieht. Der Kern besteht hauptsächlich aus HDFS、MapReduce和YARN三个系统组成YARN, einem Ressourcenverwaltungssystem, das für die Verwaltung und Planung von Clusterressourcen verantwortlich ist, und MapReduce Es handelt sich um ein Offline-Verarbeitungsframework, das auf YARN ausgeführt wird. Es entspricht MapReduce in Hadoop 1.0 hinsichtlich des Programmiermodells (neue und alte API) und der Datenverarbeitungs-Engine (MapTask und ReduceTask).

Der Unterschied zwischen den beiden

Hadoop Gesamtrahmenunterschied

Hadoop 1.0 besteht aus einem verteilten Speichersystem HDFS und einem verteilten Computerframework MapReduce. HDFS besteht aus einem NameNode und mehreren DateNodes, und MapReduce besteht aus einem JobTracker und mehreren TaskTrackern.

Hadoop2.0 hat die folgenden Verbesserungen vorgenommen, um die Mängel von Hadoop1.0 zu beheben:

  1. Mit dem Ziel, dass Hadoop1.0 single NameNode die Skalierbarkeit von HDFS einschränkt, wird die HDFS-Föderation vorgeschlagen, die es mehreren NameNodes ermöglicht, verschiedene Verzeichnisse zu verwalten, um eine Zugriffsisolation und horizontale Erweiterung zu erreichen und gleichzeitig das Single Point of Failure-Problem von NameNode vollständig zu lösen.
  2. Angesichts der Mängel von MapReduce in Hadoop 1.0 in Bezug auf Skalierbarkeit und Multi-Frame-Unterstützung werden Ressourcenmanagement und Jobsteuerung in JobTracker getrennt, die sich aus ResourceManager (verantwortlich für die Ressourcenzuweisung aller Anwendungen) und ApplicationMaster (verantwortlich für die Verwaltung einer Anwendung) zusammensetzen. Programm), dh das Ressourcenmanagement-Framework Yarn wird eingeführt.
  3. Als Ressourcenverwaltungssystem in Hadoop2.0 ist Yarn ein allgemeines Ressourcenverwaltungsmodul, das Ressourcen für verschiedene Anwendungen verwalten und planen kann. Es ist nicht auf ein Framework von MapReduce beschränkt, sondern kann auch von anderen Frameworks wie Tez und Spark verwendet werden. , Sturm usw.

Unterschiede im MapReduce Computing Framework

Das MapReduce1.0-Computerframework besteht hauptsächlich aus drei Teilen: Programmiermodell, Datenverarbeitungsmodul und Laufzeitumgebung. Das grundlegende Programmiermodell besteht darin, das Problem in zwei Stufen zu abstrahieren, Map und Reduce, wobei die Map-Stufe die Eingabedaten in Schlüssel / Wert analysiert, die Funktion map () iterativ zur Verarbeitung aufruft und sie dann in Form von Schlüssel / Wert an das lokale Verzeichnis ausgibt Die Reduce-Stufe verarbeitet den gleichen Wert mit dem Schlüssel und schreibt das Endergebnis in HDFS. Die Datenverarbeitungs-Engine besteht aus MapTask und ReduceTask, die für die Logikverarbeitung der Map-Stufe bzw. der Logik der Reduce-Stufe verantwortlich sind. Die Laufzeitumgebung wird durch bestimmt Ein JobTracker und mehrere TaskTracker-Dienste bestehen aus zwei Arten von Diensten: Der JobTracker ist für die Ressourcenverwaltung und die Steuerung aller Jobs verantwortlich, und der TaskTracker ist dafür verantwortlich, Befehle vom JobTracker zu empfangen und auszuführen.
MapReducer2.0 verfügt über dasselbe Programmiermodell und dieselbe Datenverarbeitungs-Engine wie MRv1. Der einzige Unterschied besteht in der Laufzeitumgebung. MRv2 ist ein Computerframework MapReduce, das nach der Verarbeitung auf der Basis von MRv1 auf dem Ressourcenverwaltungsframework Yarn ausgeführt wird. Die Laufzeitumgebung besteht nicht mehr aus Diensten wie JobTracker und TaskTracker, sondern wird zum allgemeinen Ressourcenmanagementsystem Yarn und zum Jobsteuerungsprozess ApplicationMaster, wobei Yarn für die Planung des Ressourcenmanagements und ApplicationMaster für das Jobmanagement verantwortlich ist.

Der Unterschied zwischen Hadoop1 und Hadoop2 ist immer noch sehr groß, HDFS und MR sind unterschiedlich, zumindest die Konfigurationsdateien sind unterschiedlich. Für die Projektanwendung wird empfohlen, so weit wie möglich auf die höhere Version zu wechseln. Wenn Sie robuster sind, reicht eine stabile Version aus, die etwas niedriger als die höchste Version ist.

1.2, MapReduce und HDFS

Was ist MapReduce?

MapReduce ist ein Programmiermodell für parallele Operationen an großen Datensätzen (größer als 1 TB). Die Konzepte "Map" und "Reduce" und ihre Hauptideen stammen aus funktionalen Programmiersprachen sowie aus Vektorprogrammiersprachen. Es erleichtert Programmierern das Ausführen ihrer Programme auf verteilten Systemen ohne verteilte parallele Programmierung erheblich. Die aktuelle Softwareimplementierung besteht darin, eine Zuordnungsfunktion (Zuordnungsfunktion) anzugeben, um einen Satz von Schlüsselwertpaaren einem Satz neuer Schlüsselwertpaare zuzuordnen, und eine gleichzeitige Reduzierungsfunktion anzugeben, um sicherzustellen, dass alle zugeordneten Schlüsselwertpaare vorhanden sind Jeder von ihnen teilt den gleichen Schlüsselsatz.
Wichtige Punkte:
1. MapReduce ist ein von Google vorgeschlagenes verteiltes Rechenmodell. Es wird hauptsächlich im Suchfeld verwendet, um das Berechnungsproblem massiver Daten zu lösen.
2. MR besteht aus zwei Phasen: Map und Reduce. Benutzer müssen nur zwei Funktionen implementieren, map () und redu (), um verteiltes Computing zu realisieren.

Was ist HDFS?

DFS ist ein verteiltes Dateisystem. Verteilte Dateien werden in einem Cluster gespeichert, der aus mehreren Computern besteht. Das zur Verwaltung des verteilten Dateispeichers verwendete System wird als verteiltes Dateisystem bezeichnet.

HDFS ist das verteilte Hadoop-Dateisystem. Es eignet sich gut zum Speichern großer Dateien, zum Lesen von Streams und zum Ausführen auf allgemeiner kommerzieller Hardware . HDFS eignet sich nicht zum Speichern einer großen Anzahl kleiner Dateien. Namenode speichert Metadaten im Speicher. Normalerweise belegt jede Datei, jedes Verzeichnis und jeder Block 150 Byte. Es eignet sich auch nicht für gleichzeitige Schreibszenarien, HDFS-Schreibdateivorgänge Dies ist der Append-Modus.

1.3, NameNode sum DataNode

Was ist Block?

In HDFS werden Dateien in verschiedene Blöcke unterteilt und in den Datenknoten des Clusters gespeichert, und die Metadaten des Dateisystems werden zentral vom Dateisystem verwaltet. Der Block des Dateisystems ist normalerweise 512 Byte groß, aber HDFS ist standardmäßig 128 MB groß. Wenn eine Datei im Vergleich zu normalen Dateisystemen nicht 128 MB erreicht, belegt sie nicht den gesamten Block. Die Standardblockgröße ist die Verkürzung der Adressierungszeit. 抽象出块的概念的好处在于一个文件的大小可以超过整个磁盘,简化存储管理,很适合复制机制来实现高可用.

Was ist NameNode?

NameNode ist eine Software, die normalerweise auf einem separaten Computer in einer HDFS-Instanz ausgeführt wird. Der NameNode verwaltet den Namespace des Dateisystems und verwaltet die Metadaten des Dateisystembaums sowie alle Dateien, Verzeichnisse und Blöcke. Es gibt zwei Arten von Metadaten: Namespace-Image und Bearbeitungsprotokoll.

Was ist DataNode?

DataNode ist auch eine Software, die normalerweise auf einem separaten Computer in einer HDFS-Instanz ausgeführt wird. NameNode hat eine Zuordnungsbeziehung zwischen Block und DataNode, behält diese Informationen jedoch nicht bei. Die Quelle dieser Informationen hängt von dem Bericht ab, der beim Start des DataNode an den NameNode gesendet wird.DataNode维护着最终的Block,并定期向NameNode发送该DataNode包含的Block列表。

1.4 、 JobTracker 和 TaskTracker

Was ist JobTracker?

JobTracker ist ein Hintergrunddienstprozess. Nach dem Start überwacht und empfängt er immer Heartbeat-Informationen, die von jedem TaskTracker gesendet werden, einschließlich Informationen wie Ressourcennutzung und Status der Taskausführung.
Die Hauptfunktionen von JobTracker:

  1. Jobsteuerung: In hadoop wird jede Anwendung als Job dargestellt und jeder Job ist in mehrere Aufgaben unterteilt. Das Jobsteuerungsmodul von JobTracker ist für die Jobzerlegung und Statusüberwachung verantwortlich.
    Das Wichtigste ist die Statusüberwachung: Sie umfasst hauptsächlich die TaskTracker-Statusüberwachung, die Jobstatusüberwachung und die Taskstatusüberwachung. Hauptaufgabe: Fehlertoleranz und Entscheidungsgrundlage für die Aufgabenplanung.
  2. Resourcenmanagement.

Was ist TaskTracker?

TaskTracker ist JobTracker和Task之间的桥梁: Zum einen empfängt und führt er verschiedene Befehle von JobTracker aus: Ausführen von Aufgaben, Senden von Aufgaben, Beenden von Aufgaben usw .; Zum anderen
meldet er JobTracker regelmäßig den Status jeder Aufgabe auf dem lokalen Knoten per Heartbeat. Das RPC-Protokoll wird für die Kommunikation zwischen TaskTracker und JobTracker und Task verwendet.
Die Hauptfunktionen von TaskTracker:

  1. 汇报心跳: Tracker meldet JobTracker regelmäßig verschiedene Informationen zu allen Knoten über den Heartbeat-Mechanismus. Diese Informationen bestehen aus zwei Teilen:
    Informationen auf Maschinenebene : Knotenzustand, Ressourcennutzung usw.
    Informationen auf Aufgabenebene: Fortschritt der Aufgabenausführung, Status der Aufgabenausführung usw.
  2. 执行命令: JobTracker gibt verschiedene Befehle an TaskTracker aus, darunter: Aufgabe starten (LaunchTaskAction), Aufgabe senden (CommitTaskAction), Aufgabe beenden (KillTaskAction),
    Job beenden (KillJobAction) und neu initialisieren (TaskTrackerReinitAction).

1.5 、 ResourceManager 和 NodeManager

ResourceManager basiert auf den Ressourcenanforderungen von Anwendungen. Jede Anwendung erfordert unterschiedliche Ressourcentypen und daher unterschiedliche Container. ResourceManager 是一个中心的服务Es wird geplant, der ApplicationMaster, zu dem jeder Job gehört, geplant und die Existenz des ApplicationMaster überwacht.

NodeManager ist der Agent jedes Maschinenframeworks. Es ist der Container, der die Anwendung ausführt, die Ressourcennutzung der Anwendung (CPU, Speicher, Festplatte, Netzwerk) überwacht und an den Scheduler (ResourceManager) berichtet.
Zu den Aufgaben von ApplicationMaster gehören: Anfordern geeigneter Ressourcencontainer vom Scheduler, Ausführen von Aufgaben, Verfolgen des Status von Anwendungen und Überwachen ihres Fortschritts sowie Behandeln der Ursachen für Aufgabenfehler.

2. Einfache Verwendung von Hadoop

Informationen zum Aufbau eines Hadoop-Clusters finden Sie unter "Erstellen eines Hadoop-Clusters unter CentOS7".

2.1 Erstellen Sie einen Ordner

Ordner / Test / Eingabe in HDFS erstellen

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

2.2 Zeigen Sie den erstellten Ordner an

[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 Dateien hochladen

Bereiten Sie Testdateien vor

[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

Laden Sie die Datei in den Ordner / test / input von HDFS hoch

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

Überprüfen Sie die Upload-Ergebnisse

[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 Dateien herunterladen

[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 Führen Sie ein Demo-Programm von mapreduce: wordcount aus

Führen Sie die Wortanzahl in den folgenden Beispielen aus: 2.7.3.jar

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

Ergebnisse der

[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

In der YARN-Weboberfläche: http://192.168.223.131:8088/cluster

Anzahl
Ausgabeergebnis anzeigen:

[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

Ich denke du magst

Origin blog.csdn.net/u011047968/article/details/107913010
Empfohlen
Rangfolge