Direkt zum Inhalt

Die Hadoop-Architektur erklärt: Kernkomponenten und ihre Funktionsweise

In diesem Beitrag wird die komplexe Architektur von Hadoop in überschaubare Komponenten zerlegt - ideal für Datenexperten, die verstehen wollen, wie Hadoop eine skalierbare, fehlertolerante Big Data-Verarbeitung ermöglicht.
Aktualisierte 5. Juni 2025  · 10 Min. Lesezeit

Apache Hadoop, oft auch nur Hadoopgenannt , ist ein leistungsfähiges Open-Source-Framework, das für die Verarbeitung und Speicherung riesiger Datensätze entwickelt wurde, indem es diese über Cluster aus erschwinglicher Standardhardware verteilt. Seine Stärke liegt in der Skalierbarkeit und Flexibilität, so dass es sowohl mit strukturierten als auch mit unstrukturierten Daten arbeiten kann.

In diesem Beitrag gehe ich auf die wichtigsten Komponenten von Hadoop ein - wie es Daten in großem Umfang speichert, verarbeitet und verwaltet. Am Ende wirst du ein klares Bild davon haben, wie diese grundlegende Technologie in Big-Data-Ökosysteme passt.

Überblick über das Hadoop-Ökosystem

Hadoop ist kein einzelnes Tool. Es ist ein Ökosystem, das mehrere Module umfasst, die zusammenarbeiten, um die Datenspeicherung, die Verarbeitung und die Koordination der Ressourcen zu verwalten.

Kernmodule von Hadoop

Hadoop besteht aus vier grundlegenden Modulen:

  • HDFS (Hadoop Distributed File System): Ein verteiltes Speichersystem, das Dateien in Blöcke aufteilt und diese über einen Cluster verteilt.
  • MapReduce: Ein Programmiermodell für die parallele Verarbeitung von Daten auf verschiedenen Knotenpunkten.
  • YARN (Yet Another Resource Negotiator): Verwaltet die Ressourcen und plant die Aufträge im Cluster.
  • Hadoop Common: Eine Reihe von gemeinsamen Bibliotheken und Dienstprogrammen, die andere Module unterstützen.

Apache Hadoop Module und ihre Funktionen

Diese Module arbeiten zusammen, um eine verteilte Datenverarbeitungsumgebung zu schaffen, die Petabytes an Daten verarbeiten kann.

Um herauszufinden, wie die verteilte Datenverarbeitung auf verschiedenen Plattformen funktioniert, bietet der Kurs Big Data Fundamentals with PySpark eine praktische Einführung, die dein Verständnis von Hadoop ergänzt.

Die Rolle von Hadoop bei Big Data

Die Hauptrolle von Hadoop liegt in seiner Fähigkeit, eine zentrale Herausforderungbei derVerarbeitung großer Datenmengen zu bewältigen, nämlich die Skalierbarkeit.

Herkömmliche Systeme haben oft mit Datenmengen zu kämpfen, die die Kapazität einer einzelnen Maschine übersteigen, sowohl was die Speicherung als auch was die Rechenleistung angeht. Hadoop löst dieses Problem, indem es die Daten auf viele Knotenpunkte verteilt und die Berechnungen parallel ausführt. 

Hadoop kann also Terabytes oder sogar Petabytes an Daten effizient verarbeiten. Neben seiner Skalierbarkeit verfügt Hadoop durch die Datenreplikation auch über eine hohe Fehlertoleranz und ermöglicht es Unternehmen, eine kostengünstige Dateninfrastruktur mit Standardhardware aufzubauen.

Die wichtigsten Merkmale von Hadoop

Wir haben die Rolle und die Struktur von Hadoop besprochen, jetzt wollen wir uns einige der wertvollsten Eigenschaften von Hadoop ansehen. Dazu gehören:

  • Die verteilte Speicherung und Verarbeitung ermöglicht es, extrem große Datenmengen zu speichern und abzufragen.
  • Horizontale Skalierbarkeit, ohne High-End-Maschinen zu benötigen.
  • Optimierung der Datenlokalität: Verlagerung der Berechnungen dorthin, wo sich die Daten befinden.
  • Ausfallsicherheit durch Replikation und erneute Ausführung von Aufgaben.

Dank dieser Funktionen eignet sich Hadoop besonders gut für die Batch-Datenverarbeitung, die Log-Analyse und ETL-Pipelines. Hadoop ist ein klassischesBeispiel für verteiltes Rechnen, bei dem die Berechnungen auf mehreren Knotenpunkten stattfinden, um die Effizienz und Skalierbarkeit zu erhöhen.

Schauen wir uns nun jedes der Kernmodule von Hadoop im Detail an.

Du willst deine Hadoop-Kenntnisse auffrischen oder dich auf eine Rolle im Datenbereich vorbereiten? Hier sind 24 Hadoop-Interviewfragen und -Antworten für 2025, die dir den Einstieg erleichtern.

Verteiltes Dateisystem Hadoop (HDFS)

Von den vier Hauptkomponenten ist HDFS das primäre Speichersystem von Hadoop. Es wurde entwickelt, um die riesigen Datenmengen in einem Cluster von Rechnern zuverlässig zu speichern, über die wir bereits gesprochen haben. Seine Architektur ist für diese Art des Zugriffs auf große Datenmengen ausgelegt und für Fehlertoleranz, Skalierbarkeit und Datenlokalisierung optimiert.

Architektur und Komponenten

Die HDFS-Architektur basiert auf einem Master-Slave-Modell. Ganz oben sitzt der NameNode, der die Metadaten verwaltet - im Wesentlichen den Verzeichnisbaum des Dateisystems und Informationen über den Speicherort der einzelnen Dateien. Sie speichert nicht die eigentlichen Daten.

Die DataNodes sind die Arbeitstiere. Sie verwalten den an die Knotenpunkte angeschlossenen Speicher und bedienen die Lese- und Schreibanfragen der Kunden. Jeder DataNode meldet sich regelmäßig mit einem Heartbeat und Blockreports beim NameNode zurück, um eine konsistente Statusverfolgung zu gewährleisten.

Schließlich gibt es in HDFS einen Secondary NameNode, nicht zu verwechseln mit einem Failover Node. Stattdessen werden die Metadaten des NameNode in regelmäßigen Abständen überprüft, um die Startzeit und den Speicherbedarf zu reduzieren.

Das Bild zeigt die HDFS-Architektur

Die HDFS-Architektur. Bildquellee: Apache Hadoop Dokumentation

Wie die Daten im HDFS gespeichert werden

Wenn eine Datei in das HDFS geschrieben wird, wird sie in Blöckemit einer festen Größe von 64 MB unterteilt. Jeder Block wird dann auf verschiedene DataNodes verteilt. Diese Verteilungsstrategie unterstützt die Parallelität beim Datenzugriff und erhöht die Fehlertoleranz.

Die Daten im HDFS werden nicht nur einmal gespeichert. Jeder Block wird repliziert (die Standardeinstellung sind drei Kopien) und über den Cluster verteilt. Bei einem Lesevorgang zieht das System die Daten von der nächstgelegenen verfügbaren Replik ab, um den Durchsatz zu maximieren und die Latenzzeit zu minimieren. Schreibvorgänge gehen zuerst an eine Replik und werden dann an die anderen weitergegeben, um die Haltbarkeit ohne unmittelbare Engpässe zu gewährleisten.

Durch dieses Block-Level-Design kann HDFS auch horizontal skaliert werden. Neue Knoten können dem Cluster hinzugefügt werden, und das System gleicht die Daten neu ab, um die zusätzliche Kapazität zu nutzen.

Zum Vergleich mit anderen Big-Data-Formaten erfährst du, wie Apache Parquetdie kolumnare Speicherung für analytische Workloads optimiert.

Fehlertoleranz im HDFS

HDFS ist auf Fehler ausgelegt. In großen verteilten Systemen sind Ausfälle von Knotenpunkten keine Ausnahme, sondern zu erwarten. HDFS stellt die Datenverfügbarkeit durch seinen Replikationsmechanismus sicher. Wenn ein DataNode ausfällt, erkennt der NameNode den Ausfall über fehlende Heartbeats und plant die Replikation der verlorenen Blöcke auf gesunde Knoten.

Außerdem überwacht das System ständig den Zustand der Blöcke und leitet bei Bedarf eine Replikation ein. Die redundante Speicherstrategie in Kombination mit proaktiver Überwachung stellt sicher, dass kein einzelner Ausfallpunkt die Datenintegrität oder den Zugriff gefährden kann.

MapReduce Framework

Als Nächstes kommt die Verarbeitungsmaschine von Hadoop, MapReduce. Sie ermöglicht verteilte Berechnungen über große Datenmengen, indem sie Aufgaben in kleinere, unabhängige Operationen aufteilt, die parallel ausgeführt werden können. 

Das Modell vereinfacht komplexe Datentransformationen und ist besonders für die Stapelverarbeitung in einer verteilten Umgebung geeignet.

Überblick über MapReduce

MapReduce folgt einem zweiphasigen Programmiermodell: Die Map und Reduzieren Phasen.

In der Map-Phase wird der Eingabedatensatz in kleinere Chunks unterteilt, und jeder Chunk wird verarbeitet, um Schlüssel-Wert-Paare zu erzeugen. Diese Zwischenergebnisse werden dann gemischt und sortiert, bevor sie an die Reduce-Phase weitergeleitet werden, wo sie aggregiert oder in endgültige Ergebnisse umgewandelt werden.

Dieses Modell ist sehr effektiv für Aufgaben wie das Zählen von Worthäufigkeiten, das Filtern von Protokollen oder das Zusammenführen von Datensätzen in großem Umfang. 

Entwickler implementieren benutzerdefinierte Logik über map() und reduce() Funktionen, die das Framework im gesamten Cluster orchestriert.

Ausführungsablauf eines MapReduce-Jobs

Wenn ein MapReduce-Job eingereicht wird, werden die Eingabedaten zunächst in Blöcke aufgeteilt. Ein JobTracker (oder ResourceManager in YARN-fähigen Versionen) koordiniert dann die Verteilung dieser Blöcke auf die verfügbaren TaskTracker oder NodeManager.

Die Map-Aufgaben werden parallel über die Knoten hinweg ausgeführt, wobei sie Eingabesplits lesen und Schlüssel-Wert-Paare ausgeben. Diese Paare werden dann automatisch gemischt und sortiert. Sobald diese Phase abgeschlossen ist, beginnen die Reduce-Aufgaben, bei denen gruppierte Daten herangezogen werden und eine Aggregationslogik angewendet wird, um die endgültige Ausgabe zu erzeugen.

Das Verfahren garantiert die Lokalisierung der Daten, indem es Aufgaben in der Nähe der Daten zuweist, wodurch die Überlastung des Netzwerks minimiert und der Durchsatz verbessert wird. Ausfälle von Aufgaben werden automatisch erkannt und neu zugewiesen und tragen so zur Ausfallsicherheit des Systems bei.

Ablauf der MapReduce-Job-Ausführung

Vorteile und Grenzen von MapReduce

MapReduce bietet mehrere klare Vorteile:

  • Hervorragende Parallelität für die Stapelverarbeitung in großem Maßstab
  • Skalierbarkeit über Tausende von Knotenpunkten
  • Hohe Fehlertoleranz durch erneute Ausführung von Aufgaben und Checkpointing

Aber es bringt auch Nachteile mit sich:

  • Das Modell ist latenzlastig und daher für die Echtzeitverarbeitung weniger geeignet
  • Das Schreiben von benutzerdefinierten MapReduce-Jobs kann ein großer Aufwand sein und ist schwierig zu debuggen
  • Ihm fehlt die Interaktivität und Flexibilität neuerer Tools wie Apache Spark.

Die Entscheidung zwischen Hadoop und Spark? Lies unseren Leitfaden darüber, welches Big-Data-Framework das richtige für dich ist.

YARN: Ein weiterer Verhandlungsführer für Ressourcen

YARN dient als Hadoops Ressourcenmanagementschicht. Es trennt die Auftragsplanung und Ressourcenzuweisung vom Verarbeitungsmodell und hilft Hadoop dabei, mehrere Datenverarbeitungs-Engines über MapReduce hinaus zu unterstützen.

Rolle in der Hadoop-Architektur

YARN fungiert als zentrale Plattform für die Verwaltung der Rechenressourcen im gesamten Cluster. Er teilt die verfügbaren Systemressourcen mehreren Anwendungen zu und koordiniert die Ausführung. Diese Trennung hilft Hadoop bei der effizienten Skalierung und öffnet die Tür zur Unterstützung anderer Frameworks wie Apache Spark, Hive und Tez.

YARN Schlüsselkomponenten

YARN führt drei Komponenten ein:

  1. ResourceManager: Der Master-Daemon (Hintergrundprogramm), der alle Ressourcen verwaltet und die Anwendungen plant.
  2. NodeManager: Ein Agent pro Knoten, der die Ressourcennutzung überwacht und dem ResourceManager Bericht erstattet.
  3. ApplicationMaster: Ein auftragsspezifischer Vorgang, der Ressourcen aus dem ResourceManager nutzt und die Ausführung mit den NodeManagern koordiniert.

Jede Anwendung (wie ein MapReduce-Job) hat ihren eigenen ApplicationMaster, was eine bessere Fehlerisolierung und Jobverfolgung ermöglicht.

Prozess der YARN-Ressourcenverwaltung

Der Fluss beginnt, wenn ein Nutzer einen Auftrag einreicht. Der ResourceManager nimmt den Auftrag an und weist einen Container zu, um den ApplicationMaster zu starten. Von dort aus fordert der ApplicationMaster je nach aktueller Arbeitslast und Verfügbarkeit weitere Container zur Ausführung von Aufgaben an.

NodeManager starten und verwalten diese Container, die einzelne Aufgaben ausführen. Während des gesamten Lebenszyklus eines Auftrags kümmern sich der ResourceManager und der ApplicationMaster um die Überwachung, die Wiederherstellung von Fehlern und die Berichterstattung über den Abschluss. Es handelt sich also um einen fünfstufigen Prozess. 

  1. Jobvorlage: Ein Benutzer sendet einen Auftrag an den Cluster.
  2. Ursprüngliche Containerzuweisung: Der ResourceManager nimmt den Auftrag an und weist einen Container zu, um den ApplicationMaster zu starten.
  3. Aufgabenanfrage: Der ApplicationMaster fordert zusätzliche Container an, um bestimmte Aufgaben auszuführen, je nach Arbeitsbelastung und verfügbaren Ressourcen.
  4. Aufgabenausführung: NodeManager starten und verwalten diese Container, die dann die Aufgaben ausführen.
  5. Lebenszyklus-Management: Der ResourceManager und der ApplicationMaster arbeiten zusammen, um den Auftragsfortschritt zu überwachen, Fehler zu beheben und den Abschluss der Aufgabe zu bestätigen. Während des gesamten Auftragslebenszyklus kümmern sich der ResourceManager und der ApplicationMaster um die Überwachung, die Fehlerbehebung und die Berichterstattung über den Abschluss.

Der Prozess der YARN-Ressourcenverwaltung

Hadoop Common und Utilities

Der Klebstoff, der alle Komponenten von Hadoop zusammenhält, ist Hadoop Common. Es ist eine Sammlung von Bibliotheken, Konfigurationsdateien und Dienstprogrammen, die von allen Modulen benötigt werden.

Was ist Hadoop Common

Hadoop Common stellt den grundlegenden Code und die Werkzeuge bereit, mit denen HDFS, YARN und MapReduce kommunizieren und sich koordinieren können. Dazu gehören Java-Bibliotheken, Dateisystem-Clients und APIs, die im gesamten Ökosystem verwendet werden.

Außerdem sorgt es für Konsistenz und Kompatibilität zwischen den Modulen und ermöglicht es Entwicklern, auf einem gemeinsamen Satz von Primitiven aufzubauen.

Die Bedeutung von Konfiguration und Tools

Die korrekte Konfiguration von Hadoop ist entscheidend. Hadoop Common beherbergt Konfigurationsdateien wie core-site.xml, die Standardverhaltensweisen wie Dateisystem-URIs und E/A-Einstellungen festlegen.

Die in Hadoop Common enthaltenen Befehlszeilentools und Skripte unterstützen Aufgaben wie das Starten von Diensten, die Überprüfung des Zustands von Knoten und die Verwaltung von Jobs. Die meisten dieser Tools werden von Systemadministratoren und Entwicklern für den alltäglichen Clusterbetrieb genutzt.

Praktische Anwendungen von Hadoop

Wenn es um große Datenmengen, verteilte Verarbeitung oder Batch-Analysen geht, wird wahrscheinlich Hadoop verwendet. Hadoop wird in verschiedenen Branchen eingesetzt, um große Mengen an strukturierten und unstrukturierten Daten zu verarbeiten. Sein verteiltes Design und seine Open-Source-Flexibilität machen es vielseitig für datenintensive Aufgaben einsetzbar.

Branchen, die Hadoop nutzen

Unternehmen aus den Bereichen Finanzen, Gesundheitswesen, Telekommunikation, E-Commerce und soziale Medien nutzen Hadoop routinemäßig. Sie hilft Banken, Betrug in Echtzeit aufzudecken, unterstützt die Genomforschung im Gesundheitswesen und ermöglicht Empfehlungsmaschinen im Online-Handel.

Beispielhafte Anwendungsfälle

  • Log-Verarbeitung: Aggregieren und Analysieren von Logdaten von Servern und Anwendungen.
  • Empfehlungssysteme: Modelle bauen, die Inhalte oder Produkte vorschlagen.
  • Betrugsaufdeckung: Erkennung verdächtiger Verhaltensmuster bei Transaktionen.

Diese Szenarien profitieren von der Fähigkeit von Hadoop, große Datenmengen mit Fehlertoleranz und Parallelität zu verarbeiten.

Wenn du eine moderne, Cloud-native Alternative zu Hadoop suchst, solltest du den Kurs Introduction to Databricks besuchen, der Spark und andere skalierbare Tools unterstützt.

Integration mit anderen Tools

Hadoop arbeitet selten isoliert und kann mit Hunderten von Zusatzprogrammen integriert werden. Je nach deinen Vorlieben und deiner Programmierumgebung kannst du Hadoop mit anderen Programmen kombinieren:

  • Bienenstock: Für SQL-ähnliche Abfragen
  • Apache Pig: Für das Skripting komplexer Datenflüsse
  • Spark: Für In-Memory-Analysen in Echtzeit
  • HBase: Für schnellen, zufälligen Lese-/Schreibzugriff auf große Datenmengen

Das Bild zeigt, wie das Hadoop-Ökosystem mit anderen Tools wie HBase, Hive, Spark und Apache Pig integriert ist.

Fazit

Auch wenn Hadoop nicht mehr das Schlagwort ist, das es einmal war, bleibt es eine grundlegende Technologie in der Big-Data-Landschaft. Ein Verständnis von Hadoop ist nach wie vor unglaublich wertvoll für jeden Datenexperten, der mit großen Systemen arbeitet. Seine Kernkomponenten - HDFS für die Speicherung, MapReduce für die Verarbeitung, YARN für die Ressourcenverwaltung und Hadoop Common für wichtige Hilfsprogramme - prägen nach wie vor die Art und Weise, wie Daten-Workflows entworfen und skaliert werden.

Bevor du mit der Implementierung oder Optimierung beginnst, solltest du dir die Zeit nehmen, um zu verstehen, wie die Daten in einem Hadoop-Cluster verteilt und konfiguriert werden. Dieses Wissen vereinfacht die Fehlerbehebung und Leistungsoptimierung und ebnet den Weg für die Integration leistungsstarker Tools wie Apache Spark und Hive für anspruchsvollere Analysen.

Mehrüber die Verarbeitung von Big Data erfährst du hier:

Verbessere deine PySpark-Kenntnisse

Verbessere deine Datenkenntnisse durch die Beherrschung von Apache Spark.
Kostenloses Lernen beginnen

FAQs

Ist Hadoop eine Datenbank?

Nein, Hadoop ist keine Datenbank, sondern ein Software-Framework, das zum Speichern und Verarbeiten großer Datenmengen auf mehreren Computern (Clustern) verwendet wird.

Was sind die vier Hauptkomponenten von Hadoop?

Die Hauptarchitektur von Hadoop besteht aus dem Hadoop Distributed File System (HDFS), Yet Another Resource Negotiator (YARN), Hadoop Common und MapReduce.

Welche Programmiersprache wird in Hadoop verwendet?

Hadoop verwendet hauptsächlich Java als Programmiersprache.

Kann Hadoop mit anderen Big-Data-Tools integriert werden?

Ja, Hadoop kann mit mehreren Big-Data-Tools wie Hive, Spark und HBase integriert werden, um Daten besser abfragen und verarbeiten zu können.

Benutzt noch jemand Hadoop?

Ja, Hadoop wird immer noch verwendet und ist für die Verarbeitung und Analyse von Big Data geeignet. Aufgrund seiner Komplexität werden jedoch zunehmend andere Frameworks bevorzugt, wie z.B. Apache Spark.

Was ist der Unterschied zwischen Hadoop und Spark?

Hadoop verwendet eine stapelorientierte MapReduce-Verarbeitung, während Spark eine In-Memory-Verarbeitung für schnellere, iterative Aufgaben bietet. Spark eignet sich im Allgemeinen besser für Echtzeit-Analysen und maschinelle Lernabläufe.

Kann Hadoop mit Cloud-Plattformen wie AWS oder Azure zusammenarbeiten?

Ja, Hadoop ist Cloud-kompatibel. AWS EMR und Azure HDInsight bieten verwaltete Hadoop-Dienste, die die Bereitstellung und Skalierung in Cloud-Umgebungen vereinfachen.

Welche Sprachen werden für das Schreiben von Hadoop MapReduce-Jobs unterstützt?

Java ist die Hauptsprache, aber es gibt auch APIs für Python, Ruby und C++. Mit Tools wie Hadoop Streaming können Entwickler jede Sprache verwenden, die von stdin liest und nach stdout schreibt.

Welche Rolle spielt Zookeeper im Hadoop-Ökosystem?

Apache ZooKeeper verwaltet die verteilte Konfiguration und Synchronisation. Es wird oft mit Hadoop-Tools wie HBase verwendet, um die Koordination zwischen den Knoten zu verwalten.


Ashlyn Brooks's photo
Author
Ashlyn Brooks

Themen

Lerne mehr über Data Engineering mit diesen Kursen!

Kurs

Grundlagen von Big Data mit PySpark

4 Std.
57.9K
Lerne die Grundlagen der Arbeit mit Big Data mit PySpark.
Siehe DetailsRight Arrow
Kurs starten
Mehr anzeigenRight Arrow
Verwandt

Der Blog

Lehrer/innen und Schüler/innen erhalten das Premium DataCamp kostenlos für ihre gesamte akademische Laufbahn

Keine Hacks, keine Tricks. Schüler/innen und Lehrer/innen, lest weiter, um zu erfahren, wie ihr die Datenerziehung, die euch zusteht, kostenlos bekommen könnt.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

4 Min.

Der Blog

Die 50 besten AWS-Interview-Fragen und Antworten für 2025

Ein kompletter Leitfaden zur Erkundung der grundlegenden, mittleren und fortgeschrittenen AWS-Interviewfragen, zusammen mit Fragen, die auf realen Situationen basieren.
Zoumana Keita 's photo

Zoumana Keita

15 Min.

Der Blog

Die 20 besten Snowflake-Interview-Fragen für alle Niveaus

Bist du gerade auf der Suche nach einem Job, der Snowflake nutzt? Bereite dich mit diesen 20 besten Snowflake-Interview-Fragen vor, damit du den Job bekommst!
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

15 Min.

Der Blog

Q2 2023 DataCamp Donates Digest

DataCamp Donates hat im zweiten Quartal 2023 über 20.000 Stipendien an unsere gemeinnützigen Partner vergeben. Erfahre, wie fleißige benachteiligte Lernende diese Chancen in lebensverändernde berufliche Erfolge verwandelt haben.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

Der Blog

Top 30 Generative KI Interview Fragen und Antworten für 2024

Dieser Blog bietet eine umfassende Sammlung von Fragen und Antworten zu generativen KI-Interviews, die von grundlegenden Konzepten bis hin zu fortgeschrittenen Themen reichen.
Hesam Sheikh Hassani's photo

Hesam Sheikh Hassani

15 Min.

Der Blog

2022-2023 DataCamp Classrooms Jahresbericht

Zu Beginn des neuen Schuljahres ist DataCamp Classrooms motivierter denn je, das Lernen mit Daten zu demokratisieren. In den letzten 12 Monaten sind über 7.650 neue Klassenzimmer hinzugekommen.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

8 Min.

Mehr anzeigenMehr anzeigen