2012-12-06 8 views
14

Aus meinem Verständnis Zeilen werden in HBase-Tabellen eingefügt und werden als Regionen in verschiedenen Region Server gespeichert. Der Regionsserver speichert also die Daten.Rolle von Datanode, Regionserver in Hbase-Hadoop-Integration

Ähnlich wie in Hadoop werden Daten in den Datenknoten gespeichert, die im Hadoop-Cluster vorhanden sind.

Sagen wir, dass ich HBase konfiguriert 0.90.6 1.1.1 auf der Oberseite des Hadoop als

2 Knoten folgt - Master- und Slave-

  1. Master-Knoten fungiert als,
    • Hadoop - Nameode, Secondary Nameode, Job Tracker, Datenknoten, Task Tracker
    • HBase - Master, RegionServer und Tierpfleger.
  2. Slave-Knoten fungiert als,
    • Hadoop DataNode und Aufgabe Tracker
    • HBase Region Server

Basierend auf meine Anweisung, wenn Tabellendaten in den Bereich Server gespeichert ist; Was ist dann die Rolle der Datenknoten und Regionsserver?

Antwort

35

Datenknoten speichern Daten. Regionsserver puffern im Wesentlichen E/A-Operationen; Daten werden permanent auf HDFS gespeichert (dh Datenknoten). Ich denke nicht, dass es eine gute Idee ist, den Region-Server auf Ihren "Master" -Knoten zu setzen. Hier

ist ein vereinfachtes Bild davon, wie Regionen verwaltet werden:

Sie haben einen Cluster ausgeführt HDFS (NameNode + Datanodes) mit Replikationsfaktor von 3 (jeweils HDFS Block in 3 verschiedenen Datanodes kopiert wird).

Sie führen RegionServers auf denselben Servern wie DataNodes aus. Wenn die Schreibanforderung zu RegionServer kommt, schreibt sie zuerst Änderungen in den Speicher und das Festschreibungsprotokoll; Dann entscheidet es irgendwann, dass es an der Zeit ist, Änderungen in den permanenten Speicher auf HDFS zu schreiben. Hier kommt die Datenlokalität ins Spiel: Da Sie RegionServer und DataNode auf demselben Server ausführen, wird das erste HDFS-Blockreplikat der Datei auf denselben Server geschrieben. Zwei weitere Replikate werden in andere DataNodes geschrieben. Daher wird RegionServer, der die Region bedient, fast immer Zugriff auf die lokale Kopie der Daten haben.

Was passiert, wenn RegionServer abstürzt oder RegionMaster sich entscheidet, die Region einem anderen RegionServer zuzuweisen (um den Cluster ausgeglichen zu halten)? Neuer RegionServer wird gezwungenermaßen Remote-Lesevorgänge durchführen, sobald die Komprimierung durchgeführt wird (Zusammenführen des Änderungsprotokolls in die Daten) - neue Datei wird vom neuen RegionServer in HDFS geschrieben, und lokale Kopie wird auf dem RegionServer erstellt (da DataNode und RegionServer auf demselben Server ausgeführt werden).

Hinweis: Im Falle eines Absturzes von RegionServer werden zuvor zugewiesene Regionen mehreren RegionServern neu zugewiesen.

Gut liest:

  • Tom White, "Hadoop, The Definitive Guide" hat eine gute Erklärung für HDFS Architektur.Leider habe ich das Original-Google-GFS-Papier nicht gelesen, daher kann ich nicht sagen, ob es leicht zu befolgen ist.

  • Google BigTable Artikel. HBase ist eine Implementierung von Google BigTable, und ich fand, dass die Architekturbeschreibung in diesem Artikel am einfachsten zu folgen ist.

Hier Nomenklatur Unterschiede zwischen Google Bigtable und HBase Umsetzung (von Lars George "HBase, The Definitive Guide"):

  • HBase - Bigtable
  • Region - Tablet
  • RegionServer - Tablet-Server
  • Bündig - Nebenverdichtung
  • Geringfügige Verdichtung - Verschmelzung Verdichtung
  • Hauptverdichtung - Erhebliche Verdichtung
  • vor log schreiben -
  • HDFS Commit log - GVS
  • Hadoop MapReduce - MapReduce
  • MemStore - memTable
  • hFile - SSTable
  • Zookeeper - Chubby
+0

Ich konnte sogar die HBase-Tabellen auf den hdfs erstellt sehen und sieht aus wie Chunks gespeichert werden. Der Link http://hbase.apache.org/book/regionserver.arch.html besagt, dass "HRegionServer die RegionServer-Implementierung ist. Sie ist verantwortlich für das Bedienen und Verwalten von Regionen. In einem verteilten Cluster wird ein RegionServer auf einem Abschnitt 9.9 ausgeführt .2, "Datenknoten". " Aber immer noch habe ich Schwierigkeiten, die Rolle des Regionsservers zu verstehen. Welche Art von E/A-Operationen und warum separate Regionen-Server sind nur für diese IO erforderlich? – learninghuman

+6

Region ist Daten in einer Reihe von Zeilen. Angenommen, Sie möchten eine Zeile aus der HBase-Tabelle abrufen. Ihre Anfrage wird an den RegionServer weitergeleitet, der für die Region verantwortlich ist, die Ihre Zeile enthält. RegionServer enthält Ihre Zeile entweder bereits im Speicher (Caching) oder muss sie aus HDFS (dataNodes) lesen. Wenn Ihr RegionServer auf DataNode ausgeführt wird, das die entsprechende Region enthält, handelt es sich um ein lokales Dateisystem. Ansonsten ist dies eine Fernablesung, die langsam ist. Deshalb möchten Sie RegionServer auf DataNode - Prinzip der Datenlokalität - setzen. --- Für HDFS/DataNodes siehe Hadoop Bücher (sagen wir, hadoopbook.com) –

+0

Vielen Dank für die Erklärung ... aber Fragen noch Popup 1. Wie erfolgt die Zuordnung zwischen Regionsservern und den Datenknoten? d. h. ich habe 3 Regionsserver rs1 auf der gleichen Maschine wie dn1, rs2 auf dn2 und rs3 auf dn3. Was bestimmt die Reichweite von rs1 auf dn1? Mein Verständnis ist, dass die Region von rs1 auch zu dn2 gehen kann. Wie wird der Ort erreicht? 2. Sollte die Anzahl der Regionsserver und Datenknoten gleich sein? – learninghuman