HBase-Shell-Befehle mit Beispielen

โšก Intelligente Zusammenfassung

Mit den HBase-Shell-Befehlen kรถnnen Sie Tabellen und Daten direkt รผber eine interaktive Eingabeaufforderung verwalten. Die Befehle sind in allgemeine Befehle, Tabellenverwaltungsbefehle wie create und drop, Datenmanipulationsbefehle wie put und get sowie Cluster-Replikationsbefehle unterteilt.

  • ๏ธ Allgemeine Befehle: status, version, table_help und whoami geben Clusterstatus und Benutzerinformationen aus.
  • ๐Ÿ—‚๏ธ Tischverwaltung: Tabellen erstellen, auflisten, beschreiben, deaktivieren, aktivieren, lรถschen und รคndern sowie Tabellen umformen.
  • ๏ธ Datenmanipulation: put, get, delete, deleteall, truncate, count und scan lesen und schreiben Zellwerte.
  • ๐Ÿ” Cluster Replikation: add_peer, remove_peer, start_replication und stop_replication verwalten die Datenreplikation.
  • โณ TTL-Attribut: Time To Live-Zeilen der Spaltenfamilie laufen nach einer festgelegten Anzahl von Sekunden automatisch ab.
  • ๐Ÿค– KI-Unterstรผtzung: KI-Assistenten generieren und erklรคren HBase-Shell-Befehle anhand von Eingabeaufforderungen in einfacher Sprache.

HBase-Shell-Befehle mit Beispielen fรผr Tabellen, Daten und Clusterreplikation

Wie man mit HBase รผber Shell-Befehle interagiert und Java API

Nach erfolgreicher Installation von HBase auf Hadoop steht uns eine interaktive Shell zur Verfรผgung, mit der wir verschiedene Befehle ausfรผhren und diverse Operationen durchfรผhren kรถnnen. Mithilfe dieser Befehle kรถnnen wir mehrere Operationen an Datentabellen vornehmen, was zu einer hรถheren Datenspeichereffizienz und einer flexibleren Interaktion fรผr den Client fรผhrt.

Wir kรถnnen auf zwei Arten mit HBase interagieren:

  • HBase interaktiver Shell-Modus und
  • Durch Java API.

In HBase wird der interaktive Shell-Modus fรผr die Interaktion mit HBase verwendet, um Tabellenoperationen durchzufรผhren, Tabellen zu verwalten und Daten zu modellieren. Java Mithilfe des API-Modells kรถnnen wir alle Arten von Tabellen- und Datenoperationen in HBase durchfรผhren. Die Interaktion mit HBase ist รผber beide Methoden mรถglich. Der einzige Unterschied zwischen den beiden Methoden besteht darin, dassโ€ฆ Java API-Nutzung Java Der Code dient zur Verbindung mit HBase, wรคhrend im Shell-Modus Shell-Befehle verwendet werden, um eine Verbindung zu HBase herzustellen.

Kurze Zusammenfassung von HBase, bevor wir fortfahren:

  • HBase verwendet Hadoop Dateien werden als Speichersystem zur Speicherung groรŸer Datenmengen verwendet. HBase besteht aus Master-Servern und Region-Servern.
  • Die in HBase gespeicherten Daten liegen in Form von Regionen vor. Diese Regionen werden wiederum aufgeteilt und auf mehreren Regionsservern gespeichert.
  • Mithilfe dieser Shell-Befehle kann der Programmierer Tabellenschemata und Datenoperationen รผber die vollstรคndige Shell-Interaktion definieren.
  • Welchen Befehl wir auch verwenden, er wird sich im HBase-Datenmodell widerspiegeln.
  • Wir verwenden HBase-Shell-Befehle in Betriebssystem-Skriptinterpretern wie der Bash-Shell.
  • Die Bash-Shell ist der Standard-Befehlsinterpreter fรผr die meisten Systeme. Linux und Unix-Betriebssystemdistributionen.
  • Erweiterte Versionen von HBase bieten Shell-Befehle mit objektorientierten Referenzen im JRuby-Stil fรผr Tabellen.
  • Tabellenreferenzvariablen kรถnnen verwendet werden, um Datenoperationen im HBase-Shell-Modus durchzufรผhren.

Beispielsweise:

  • In diesem Tutorial haben wir eine Tabelle erstellt, in der โ€žeducationโ€œ den Tabellennamen darstellt und dem Spaltennamen โ€žguru99โ€œ entspricht.
  • Bei einigen Befehlen steht โ€žguru99โ€œ selbst fรผr einen Tabellennamen.

Allgemeine Befehle

In HBase werden allgemeine Befehle in folgende Befehlskategorien unterteilt:

  • Status
  • Version
  • Table_help (Scannen, Lรถschen, Abrufen, Setzen, Deaktivieren usw.)
  • Wer bin ich

Um den HBase-Shell-Befehl aufzurufen, mรผssen wir zunรคchst den unten genannten Code ausfรผhren.

hbase Shell

Sobald wir die HBase-Shell geรถffnet haben, kรถnnen wir alle unten aufgefรผhrten Shell-Befehle ausfรผhren. Mithilfe dieser Befehle kรถnnen wir alle Arten von Tabellenoperationen im HBase-Shell-Modus durchfรผhren. Die interaktive Shell-Eingabeaufforderung sieht wie folgt aus:

Die interaktive HBase-Shell-Eingabeaufforderung wurde mit dem Befehl hbase shell geรถffnet.

Schauen wir uns alle diese Befehle und ihre Verwendung einzeln anhand eines Beispiels an.

Status

Syntax:status

Dieser Befehl liefert Details zum Systemstatus, wie die Anzahl der Server im Cluster, die Anzahl der aktiven Server und die durchschnittliche Auslastung. Je nachdem, wie detailliert die Statusinformationen sein sollen, kรถnnen Sie weitere Parameter angeben. Die Parameter kรถnnen โ€žsummaryโ€œ, โ€žsimpleโ€œ oder โ€ždetailedโ€œ sein; standardmรครŸig wird โ€žsummaryโ€œ verwendet.

Im Folgenden zeigen wir, wie Sie verschiedene Parameter an den Statusbefehl รผbergeben kรถnnen. Der folgende Screenshot veranschaulicht dies.

hbase(main):001:0>status
hbase(main):002:0>status 'simple'
hbase(main):003:0>status 'summary'
hbase(main):004:0> status 'detailed'

Die Statusausgabe wird unten angezeigt:

Ausgabe des HBase-Shell-Befehls โ€žstatusโ€œ mit Anzeige von aktiven Servern, inaktiven Servern und durchschnittlicher Auslastung

Wenn wir diesen Statusbefehl ausfรผhren, erhalten wir Informationen รผber die Anzahl der verfรผgbaren und ausgefallenen Server sowie die durchschnittliche Serverlast. Der Screenshot zeigt beispielsweise 1 aktiven Server, 1 ausgefallenen Server und eine durchschnittliche Last von 7.0000.

Version

Syntax: version

Die Versionsausgabe wird unten angezeigt:

Der Befehl `hBase shell version` zeigt die installierte HBase-Version an.

  • Dieser Befehl zeigt die aktuell verwendete HBase-Version im Befehlsmodus an.
  • Wenn Sie den Befehl version ausfรผhren, erhalten Sie die oben gezeigte Ausgabe.

Tabellenhilfe

Syntax:table_help

Die Ausgabe von table_help wird unten angezeigt:

Die Ausgabe von `table_help` in der HBase-Shell listet die Verwendung der Befehle `create` und `get_table` auf.

Diese Befehlsanleitung lautet:

  • Was tabellenbezogene Befehle sind und wie man sie verwendet.
  • Es werden verschiedene Verwendungsmรถglichkeiten der HBase-Shell-Befehle und deren Syntaxen bereitgestellt.
  • Der obige Screenshot zeigt die Syntax der Befehle โ€žcreateโ€œ und โ€žget_tableโ€œ sowie deren Verwendung. Sobald die Tabelle in HBase erstellt wurde, kรถnnen wir sie mithilfe dieser Befehle bearbeiten.
  • Es liefert Befehle zur Tabellenmanipulation wie put, get und alle anderen Befehlsinformationen.

whoami

Syntax: Whoami

Die Ausgabe von whoami wird unten angezeigt:

Der HBase-Shell-Befehl `whoami` gibt den aktuellen HD-Benutzer und die Gruppen zurรผck.

Der Befehl โ€žwhoamiโ€œ dient dazu, die aktuellen HBase-Benutzerinformationen des HBase-Clusters abzurufen. Er liefert unter anderem folgende Informationen:

  • In HBase vorhandene Gruppen.
  • Die Benutzerinformationen; in diesem Fall steht beispielsweise โ€žhduserโ€œ fรผr den Benutzernamen, wie im Screenshot dargestellt.

TTL (Time To Live) โ€“ Attribut

In HBase kรถnnen Spaltenfamilien mithilfe von TTL (Time-to-Live) auf Zeitwerte in Sekunden gesetzt werden. HBase lรถscht Zeilen automatisch, sobald die Ablaufzeit erreicht ist. Dieses Attribut gilt fรผr alle Versionen einer Zeile, auch fรผr die aktuelle.

Die in HBase fรผr die Zeile kodierte TTL-Zeit wird in UTC angegeben. Dieses Attribut wird bei Tabellenverwaltungsbefehlen verwendet. Wichtige Unterschiede zwischen der TTL-Behandlung und den TTL-Werten fรผr Spaltenfamilien sind nachfolgend aufgefรผhrt:

  • Zellen-TTLs werden in Millisekunden statt in Sekunden ausgedrรผckt.
  • Die effektive Lebensdauer einer Zelle kann durch eine TTL-Einstellung auf Spaltenfamilienebene nicht verlรคngert werden.

Tabellenverwaltungsbefehle

Mithilfe dieser Befehle kรถnnen Programmierer Tabellen und Tabellenschemata mit Zeilen- und Spaltenfamilien erstellen. Im Folgenden sind die Befehle zur Tabellenverwaltung aufgefรผhrt:

  • Erschaffung
  • Liste
  • Beschreiben
  • Deaktivieren
  • Alle deaktivieren
  • Ermรถglichen
  • Alle aktivieren
  • Drop
  • Drop_all
  • Filter anzeigen
  • Alter
  • Alter_status

Betrachten wir anhand eines Beispiels verschiedene Befehlsverwendungen in HBase.

Erschaffung

Syntax: create <tablename>, <columnfamilyname>

Beispiel:-

hbase(main):001:0> create 'education' ,'guru99'
0 rows(s) in 0.312 seconds
=>Hbase::Table โ€“ education

Das Ergebnis des Erstellungsbefehls wird unten angezeigt:

HBase-Shell-Befehl zum Erstellen der Tabelle โ€žeducationโ€œ mit der Spaltenfamilie โ€žguru99โ€œ.

Das obige Beispiel erklรคrt, wie man in HBase eine Tabelle mit dem angegebenen Namen gemรครŸ den Spezifikationen fรผr jede Spaltenfamilie erstellt. Zusรคtzlich kรถnnen auch Tabellenattribute รผbergeben werden. Um zu รผberprรผfen, ob die Tabelle โ€žeducationโ€œ erstellt wurde, verwenden wir den unten stehenden Befehl โ€žlistโ€œ. Siehe auch Erstellen von HBase-Tabellen mit Java und Shell.

Liste

Syntax:list

Die Ausgabeliste wird unten angezeigt:

Der Befehl `hbase shell list` zeigt acht vorhandene Tabellen in HBase an.

  • Der Befehl โ€žlistโ€œ zeigt alle Tabellen an, die in HBase vorhanden oder erstellt wurden.
  • Die im obigen Screenshot dargestellte Ausgabe zeigt aktuell die in HBase vorhandenen Tabellen an.
  • Hier, in diesem Screenshot, ist zu sehen, dass in HBase insgesamt 8 Tabellen vorhanden sind.
  • Wir kรถnnen Ausgabewerte aus Tabellen filtern, indem wir optionale regulรคre Ausdrucksparameter รผbergeben.

Beschreiben

Syntax:describe <table name>
hbase(main):010:0>describe 'education'

Die Ausgabe von describe wird unten angezeigt:

Ausgabe des HBase-Shell-Befehls `describe` mit Details zu den Spaltenfamilien der Tabelle `education`

Dieser Befehl beschreibt die benannte Tabelle.

  • Es liefert weitere Informationen รผber die in der genannten Tabelle enthaltenen Spaltenfamilien.
  • In unserem Fall liefert es die Beschreibung der Tabelle โ€žBildungโ€œ.
  • Es liefert Informationen รผber den Tabellennamen mit Spaltenfamilien, zugehรถrigen Filtern, Versionen und weiteren Details.

deaktivieren

Syntax: disable <tablename>
hbase(main):011:0>disable 'education'

Die deaktivierte Ausgabe wird unten angezeigt:

Der Befehl `HBase shell disable` deaktiviert die Tabelle `education`.

  • Dieser Befehl deaktiviert die angegebene Tabelle.
  • Wenn eine Tabelle gelรถscht oder entfernt werden soll, muss sie vorher deaktiviert werden.

Hier, im obigen Screenshot, deaktivieren wir die Tabelle โ€žBildungโ€œ.

Alle deaktivieren

 Syntax: disable_all<"matching regex"
  • Dieser Befehl deaktiviert alle Tabellen, die der angegebenen Regex entsprechen.
  • Die Implementierung ist die gleiche wie beim Befehl โ€ždropโ€œ (mit Ausnahme des Hinzufรผgens eines regulรคren Ausdrucks fรผr die รœbereinstimmung).
  • Sobald die Tabelle deaktiviert ist, kann der Benutzer die Tabelle aus HBase lรถschen.
  • Vor dem Lรถschen oder Ablegenping Eine Tabelle, die zuerst deaktiviert werden sollte.

Ermรถglichen

Syntax: enable <tablename>
hbase(main):012:0>enable 'education'

Die Ausgabe der Aktivierungsfunktion wird unten angezeigt:

Der HBase-Shell-Befehl โ€ženableโ€œ reaktiviert die deaktivierte Bildungstabelle.

  • Mit diesem Befehl wird die angegebene Tabelle aktiviert.
  • Um die deaktivierte Tabelle wieder in ihren vorherigen Zustand zu versetzen, verwenden wir diesen Befehl.
  • Wenn eine Tabelle zunรคchst deaktiviert und nicht gelรถscht oder entfernt wurde und wir die deaktivierte Tabelle wiederverwenden mรถchten, mรผssen wir sie mit diesem Befehl aktivieren.
  • Hier, im obigen Screenshot, aktivieren wir die Tabelle โ€žBildungโ€œ.

Filter anzeigen

Syntax: show_filters

Die Ausgabe von show_filters wird unten angezeigt:

Die Ausgabe des Befehls `show_filters` der HBase-Shell listet die verfรผgbaren HBase-Filter auf.

Dieser Befehl zeigt alle in HBase vorhandenen Filter an, wie z. B. ColumnPrefixFilter, TimestampsFilter, PageFilter, FamilyFilter usw.

fallen lassen

Syntax:drop <table name>
hbase(main):017:0>drop 'education'

Die Tropfenausgabe wird unten angezeigt:

HBase-Shell-Befehl zum Lรถschen der deaktivierten Bildungstabelle

Fรผr den Drop-Befehl sind folgende Punkte zu beachten:

  • Um die in HBase vorhandene Tabelle zu lรถschen, mรผssen wir sie zuerst deaktivieren.
  • Um die in HBase vorhandene Tabelle zu lรถschen, mรผssen wir sie zuerst deaktivieren.
  • Um eine Tabelle zu lรถschen oder zu entfernen, muss die Tabelle zuerst mit dem Befehl disable deaktiviert werden.
  • Hier, im obigen Screenshot, lassen wir etwas fallen.ping die Tabelle โ€žBildungโ€œ.
  • Vor der Ausfรผhrung dieses Befehls muss die Tabelle โ€žeducationโ€œ deaktiviert werden.

drop_all

Syntax: drop_all<"regex">
  • Dieser Befehl lรถscht alle Tabellen, die dem angegebenen regulรคren Ausdruck entsprechen.
  • Vor der Ausfรผhrung dieses Befehls mรผssen die Tabellen mit disable_all deaktiviert werden.
  • Tabellen mit regulรคren Ausdrรผcken werden aus HBase entfernt.

aktiviert

Syntax: is_enabled 'education'

Dieser Befehl รผberprรผft, ob die angegebene Tabelle aktiviert ist oder nicht. Normalerweise herrscht etwas Verwirrung zwischen den Befehlen โ€ženableโ€œ und โ€žis_enabledโ€œ, die wir hier aufklรคren:

  • Angenommen, eine Tabelle ist deaktiviert; um diese Tabelle zu verwenden, mรผssen wir sie mit dem Befehl enable aktivieren.
  • Der Befehl is_enabled prรผft, ob die Tabelle aktiviert ist oder nicht.

รคndern

Syntax: alter <tablename>, NAME=><column familyname>, VERSIONS=>5

Dieser Befehl รคndert das Spaltenfamilienschema. Um zu verstehen, was es genau macht, haben wir es hier anhand eines Beispiels erklรคrt.

Beispiele: In diesen Beispielen fรผhren wir ALTER-Befehlsoperationen auf Tabellen und deren Spalten durch. Wir fรผhren Operationen wie die folgenden durch:

  • ร„ndern von Spaltenfamiliennamen (einzeln und mehrspaltig).
  • Lรถschen von Spaltenfamiliennamen aus einer Tabelle.
  • Mehrere weitere Operationen, die Bereichsattribute mit einer Tabelle verwenden.

Um die Spaltenfamilie โ€žguru99_1โ€œ in der Tabelle โ€žeducationโ€œ zu รคndern oder hinzuzufรผgen, sodass maximal 5 Zellversionen erhalten bleiben. Hierbei ist โ€žeducationโ€œ der Tabellenname, der zuvor mit dem Spaltennamen โ€žguru99โ€œ erstellt wurde. Mithilfe eines ALTER-Befehls versuchen wir, das Schema der Spaltenfamilie von โ€žguru99โ€œ auf โ€žguru99_1โ€œ zu รคndern, wie unten dargestellt:

HBase-Shell-Befehl: ร„ndern der Spaltenfamilie der Tabelle โ€žeducationโ€œ in โ€žguru99_1โ€œ

hbase> alter 'education', NAME='guru99_1', VERSIONS=>5

Sie kรถnnen den Befehl ALTER auch auf mehrere Spaltenfamilien anwenden. Beispielsweise definieren wir zwei neue Spalten fรผr unsere bestehende Tabelle โ€žeducationโ€œ, wie unten dargestellt:

HBase-Shell-Befehl zum Hinzufรผgen zweier neuer Spaltenfamilien guru99_2 und guru99_3

 hbase> alter 'edu', 'guru99_1', {NAME => 'guru99_2', IN_MEMORY => true}, {NAME => 'guru99_3', VERSIONS => 5}
  • Mit diesem Befehl kรถnnen wir mehrere Spaltenschemata gleichzeitig รคndern.
  • Wie im obigen Screenshot zu sehen, sind guru99_2 und guru99_3 die beiden neuen Spaltennamen, die wir fรผr die Tabelle education definiert haben.
  • Im vorherigen Screenshot kรถnnen wir sehen, wie dieser Befehl verwendet wird.

In diesem Schritt erfahren Sie, wie Sie eine Spaltenfamilie aus der Tabelle lรถschen. Um die Spaltenfamilie โ€žf1โ€œ in der Tabelle โ€žeducationโ€œ zu lรถschen, verwenden Sie einen der folgenden Befehle. Das Ergebnis sehen Sie im folgenden Screenshot:

HBase-Shell-Befehl zum Lรถschen einer Spaltenfamilie aus der Tabelle โ€žeducationโ€œ.

hbase> alter 'education', NAME => 'f1', METHOD => 'delete'
hbase> alter 'education', 'delete' =>' guru99_1'

Mit diesem Befehl versuchen wir, den Spaltenbereich โ€žguru99_1โ€œ zu lรถschen, den wir im ersten Schritt erstellt haben. Wie in den folgenden Screenshots dargestellt, werden zwei Schritte gezeigt: das ร„ndern und das Entfernen eines Tabellenbereichsattributs.

HBase-Shell-Befehl ALTER, der das Tabellenbereichsattribut MAX_FILESIZE setzt.

Syntax: alter <'tablename'>, MAX_FILESIZE=>'132545224'

Schritt 1) โ€‹โ€‹Sie kรถnnen Tabellenbereichsattribute wie MAX_FILESIZE, READONLY, MEMSTORE_FLUSHSIZE, DEFERRED_LOG_FLUSH usw. รคndern. Diese kรถnnen am Ende eingefรผgt werden; um beispielsweise die maximale GrรถรŸe einer Region auf 128 MB oder einen anderen Speicherwert zu รคndern, verwenden wir diesen Befehl.

Verwendung:

  • Wir kรถnnen MAX_FILESIZE mit der Tabelle als Bereichsattribut verwenden, wie oben beschrieben.
  • Die in MAX_FILESIZE dargestellte Zahl gibt den Speicherplatz in Bytes an.

HINWEIS: Der Tabellenbereich MAX_FILESIZE wird durch bestimmte Attribute in HBase bestimmt. MAX_FILESIZE gehรถrt ebenfalls zu den Tabellenbereichsattributen.

Schritt 2) Sie kรถnnen ein Tabellenattribut auch mithilfe der Methode table_att_unset entfernen. Siehe den folgenden Befehl:

alter 'education', METHOD => 'table_att_unset', NAME => 'MAX_FILESIZE'
  • Der obige Screenshot zeigt den geรคnderten Tabellennamen mit Bereichsattributen.
  • Die Methode table_att_unset wird verwendet, um in der Tabelle vorhandene Attribute zu entfernen.
  • Im zweiten Fall wird das Attribut MAX_FILESIZE deaktiviert.
  • Nach Ausfรผhrung des Befehls wird einfach das Attribut MAX_FILESIZE aus der Tabelle โ€žeducationโ€œ entfernt.

alter_status

 Syntax: alter_status 'education'

Die Ausgabe von alter_status wird unten angezeigt:

Der HBase-Shell-Befehl `alter_status` zeigt an, dass eine von einer Region aktualisiert wurde.

  • Mit diesem Befehl kรถnnen Sie den Status des ร„nderungsbefehls abrufen.
  • Es gibt die Anzahl der Tabellenbereiche an, die das aktualisierte Schema erhalten haben. Sie รผbergeben den Tabellennamen.
  • Im obigen Screenshot ist zu sehen, dass 1 von 1 Regionen aktualisiert wurde. Das bedeutet, dass eine Region aktualisiert wurde. AnschlieรŸend wird bei erfolgreicher Aktualisierung die Meldung โ€žFertigโ€œ angezeigt.

Befehle zur Datenmanipulation

Diese Befehle dienen der Datenmanipulation in Tabellen, z. B. dem Einfรผgen und Abrufen von Daten sowie dem Lรถschen von Schemaelementen. Zu diesen Befehlen gehรถren:

  • Zu Zรคhlen
  • setzen
  • Erhalten Sie
  • Lรถschen
  • Lรถsche alles
  • Kรผrzen
  • Scannen

Lassen Sie uns die Verwendung dieser Befehle anhand eines Beispiels betrachten. Siehe auch Lesen und Schreiben von HBase-Daten.

Zu Zรคhlen

Syntax: count <'tablename'>, CACHE =>1000
  • Der Befehl ermittelt die Anzahl der Zeilen in einer Tabelle. Der zurรผckgegebene Wert ist die Anzahl der Zeilen.
  • Die aktuelle Anzahl wird standardmรครŸig pro 1000 Zeilen angezeigt.
  • Das Zรคhlintervall kann optional angegeben werden.
  • Die Standard-CachegrรถรŸe betrรคgt 10 Zeilen.
  • Der Befehl โ€žcountโ€œ arbeitet schnell, wenn er mit dem richtigen Cache konfiguriert ist.

Ejemplo:

hbase> count 'guru99', CACHE=>1000

Die Zรคhlergebnisse werden unten angezeigt:

Der HBase-Shell-Befehl count gibt die Zeilenanzahl der Tabelle guru99 zurรผck.

Dieses Beispiel ruft jeweils 1000 Zeilen aus der Tabelle โ€žguru99โ€œ ab. Bei einer grรถรŸeren TabellengrรถรŸe kann der Cache-Wert reduziert werden. StandardmรครŸig wird jedoch jeweils nur eine Zeile abgerufen.

hbase>count 'guru99', INTERVAL => 100000
hbase> count 'guru99', INTERVAL =>10, CACHE=> 1000

Angenommen, die Tabelle โ€žguru99โ€œ enthรคlt eine Tabellenreferenz, beispielsweise g. Wir kรถnnen den Befehl โ€žcountโ€œ auch auf die Tabellenreferenz anwenden, wie unten gezeigt:

hbase>g.count INTERVAL=>100000
hbase>g.count INTERVAL=>10, CACHE=>1000

setzen

Syntax:  put <'tablename'>,<'rowname'>,<'columnvalue'>,<'value'>

Dieser Befehl wird fรผr folgende Zwecke verwendet:

  • Es wird einen Zellwert in eine definierte oder angegebene Tabelle, Zeile oder Spalte einfรผgen.
  • Optional wird ein Zeitstempel hinzugefรผgt.

Beispiel: Hier tragen wir Werte in die Tabelle โ€žguru99โ€œ in Zeile r1 und Spalte c1 ein.

hbase> put 'guru99', 'r1', 'c1', 'value', 10

Wir haben in der Tabelle โ€žguru99โ€œ drei Werte, 10, 15 und 30, eingetragen, wie im folgenden Screenshot dargestellt.

Der HBase-Shell-Befehl โ€žputโ€œ fรผgt die Werte 10, 15 und 30 in die Tabelle โ€žguru99โ€œ ein.

Angenommen, die Tabelle โ€žguru99โ€œ enthรคlt eine Tabellenreferenz, beispielsweise g. Wir kรถnnen den Befehl auch auf die Tabellenreferenz anwenden, etwa so:

hbase> g.put 'guru99', 'r1', 'c1', 'value', 10

Die Ausgabe sieht nach dem Einfรผgen von Werten in โ€žguru99โ€œ wie im obigen Screenshot aus. Um zu รผberprรผfen, ob der Eingabewert korrekt in die Tabelle eingefรผgt wurde, verwenden wir den Befehl โ€žscanโ€œ. Im folgenden Screenshot ist zu sehen, dass die Werte korrekt eingefรผgt wurden.

Ausgabe des HBase-Shell-Scans, die die in die Tabelle guru99 eingefรผgten Werte bestรคtigt.

Code Ausschnitt: Zum รœben

create 'guru99', {NAME=>'Edu', VERSIONS=>213423443}
put 'guru99', 'r1', 'Edu:c1', 'value', 10
put 'guru99', 'r1', 'Edu:c1', 'value', 15
put 'guru99', 'r1', 'Edu:c1', 'value', 30

Aus dem Codeausschnitt geht Folgendes hervor:

  • Hier erstellen wir eine Tabelle mit dem Namen โ€žguru99โ€œ und dem Spaltennamen โ€žEduโ€œ.
  • Mit dem Befehl โ€žputโ€œ fรผgen wir Werte in die Zeile r1 in der Spalte โ€žEduโ€œ der Tabelle โ€žguru99โ€œ ein.

Erhalten Sie

Syntax: get <'tablename'>, <'rowname'>, {< Additional parameters>}

Hier, Mit diesem Befehl erhalten Sie den Inhalt einer Zeile oder Zelle in der Tabelle. Zusรคtzlich kรถnnen Sie weitere Parameter wie TIMESTAMP, TIMERANGE, VERSIONS, FILTERS usw. hinzufรผgen, um den Inhalt einer bestimmten Zeile oder Zelle zu ermitteln.

Die folgende Ausgabe liefert die Werte fรผr Zeile r1 und Spalte c1:

Der HBase-Shell-Befehl โ€žgetโ€œ gibt die Zeile r1 und die Spalte c1 aus der Tabelle โ€žguru99โ€œ zurรผck.

Beispiele:-

hbase> get 'guru99', 'r1', {COLUMN => 'c1'}

Fรผr die Tabelle โ€žguru99โ€œ werden mit diesem Befehl die Werte der Zeile r1 und Spalte c1 angezeigt, wie im obigen Screenshot dargestellt.

hbase> get 'guru99', 'r1'

Mit diesem Befehl werden die Werte der Zeile r1 der Tabelle โ€žguru99โ€œ angezeigt.

hbase> get 'guru99', 'r1', {TIMERANGE => [ts1, ts2]}

Mit diesem Befehl werden fรผr die Tabelle โ€žguru99โ€œ die Werte der Zeile r1 im Zeitbereich ts1 bis ts2 angezeigt.

hbase> get 'guru99', 'r1', {COLUMN => ['c1', 'c2', 'c3']}

Mit diesem Befehl werden fรผr die Tabelle โ€žguru99โ€œ die Werte der Zeile r1 und der Spaltenfamilien c1, c2 und c3 angezeigt.

Lรถschen

Syntax:delete <'tablename'>,<'row name'>,<'column name'>
  • Dieser Befehl lรถscht den Zellenwert in einer definierten Tabellenzeile oder -spalte.
  • Die Lรถschmarkierung muss und sollte exakt mit den Koordinaten der zu lรถschenden Zelle รผbereinstimmen.
  • Beim Scannen werden durch das Lรถschen einer Zelle รคltere Versionen von Werten unterdrรผckt.

Beispiel: Der folgende Befehl โ€ždeleteโ€œ entfernt die Zelle r1, c1 aus der Tabelle guru99:

HBase-Shell-Befehl zum Lรถschen der Zelle r1 c1 aus der Tabelle guru99

hbase(main):)020:0> delete 'guru99', 'r1', 'c1''.
  • Die obige Ausfรผhrung lรถscht die Zeile r1 aus der Spaltenfamilie c1 in der Tabelle โ€žguru99โ€œ.
  • Angenommen, die Tabelle โ€žguru99โ€œ enthรคlt eine Tabellenreferenz, beispielsweise g.
  • Wir kรถnnen den Befehl auch auf die Tabellenreferenz anwenden, zum Beispiel hbase> g.delete 'guru99', 'r1', 'c1โ€ฒ".

alles lรถschen

Syntax: deleteall <'tablename'>, <'rowname'>
  • Dieser Befehl lรถscht alle Zellen in einer bestimmten Zeile.
  • Optional kรถnnen wir in der Syntax Spaltennamen und einen Zeitstempel definieren.

Beispiel: Der folgende Befehl deleteall entfernt alle Zellen in Zeile r1:

Der HBase-Shell-Befehl `deleteall` entfernt alle Zellen in Zeile r1 der Tabelle guru99.

hbase>deleteall 'guru99', 'r1', 'c1'

Dadurch werden alle Zeilen und Spalten der Tabelle gelรถscht. Optional kรถnnen dabei Spaltennamen angegeben werden.

Kรผrzen

Syntax:  truncate <tablename>

Der unten stehende Befehl zum Abschneiden leert die Tabelle, wรคhrend sie erhalten bleibt.ping sein Schema:

Deaktivierung und Lรถschung des HBase-Shell-Befehls โ€žtruncateโ€œ.pingund die Nachbildung der guru99-Tabelle

Nach dem Abschneiden einer HBase-Tabelle ist das Schema zwar noch vorhanden, die Datensรคtze jedoch nicht. Dieser Befehl fรผhrt drei Funktionen aus; diese sind im Folgenden aufgefรผhrt:

  • Deaktiviert die Tabelle, falls sie bereits existiert.
  • Lรถscht die Tabelle, falls sie bereits existiert.
  • Erstellt die erwรคhnte Tabelle neu.

Scannen

Syntax: scan <'tablename'>, {Optional parameters}

Dieser Befehl durchsucht die gesamte Tabelle und zeigt deren Inhalt an.

  • Wir kรถnnen diesem Scan-Befehl mehrere optionale Spezifikationen รผbergeben, um weitere Informationen รผber die im System vorhandenen Tabellen zu erhalten.
  • Die Scannerspezifikationen kรถnnen eines oder mehrere der folgenden Attribute umfassen.
  • Dies sind TIMERANGE, FILTER, TIMESTAMP, LIMIT, MAXLENGTH, COLUMNS, CACHE, STARTROW und STOPROW.
scan 'guru99'

Die Scan-Ausgabe wird unten angezeigt:

Der HBase-Shell-Scan-Befehl zeigt die Zeilen r1, r2 und r3 der Tabelle guru99 an.

Im obigen Screenshot:

  • Es zeigt die Tabelle โ€žguru99โ€œ mit Spaltennamen und Werten an.
  • Es besteht aus drei Zeilenwerten, r1, r2 und r3, fรผr den einzelnen Spaltenwert c1.
  • Es zeigt die den Zeilen zugeordneten Werte an.

Beispiele: - Die verschiedenen Verwendungsmรถglichkeiten des Scan-Befehls:

Befehl Anwendungsbereich
scanne '.META.', {COLUMNS => 'info:regioninfo'} Es zeigt alle Metadateninformationen zu den Spalten an, die in den Tabellen in HBase vorhanden sind.
scanne 'guru99', {COLUMNS => ['c1', 'c2'], LIMIT => 10, STARTROW => 'xyz'} Es zeigt den Inhalt der Tabelle guru99 mit ihren Spaltenfamilien c1 und c2 an, wobei die Werte auf 10 begrenzt sind.
scanne 'guru99', {COLUMNS => 'c1', TIMERANGE => [1303668804, 1303668904]} Es zeigt den Inhalt von guru99 mit dem Spaltennamen c1 an, wobei die Werte innerhalb des angegebenen Zeitbereichsattributs liegen.
scanne 'guru99', {RAW => true, VERSIONS =>10} Bei diesem Befehl bietet RAW=> true eine erweiterte Funktion, wie z. B. die Anzeige aller in der Tabelle vorhandenen Zellwerte guru99.

Code Beispiel: Erstellen Sie zunรคchst eine Tabelle und tragen Sie Werte in diese ein. Die Eingabe wird im folgenden Screenshot dargestellt:

HBase-Shell-Eingabe zum Erstellen der Tabelle guru99 und Einfรผgen versionierter Werte vor einem Rohscan

create 'guru99', {NAME=>'e', VERSIONS=>2147483647}
put 'guru99', 'r1', 'e:c1', 'value', 10
put 'guru99', 'r1', 'e:c1', 'value', 12
put 'guru99', 'r1', 'e:c1', 'value', 14
delete 'guru99', 'r1', 'e:c1', 11

Wenn wir den Scan-Befehl ausfรผhren:

Query: scan 'guru99', {RAW=>true, VERSIONS=>1000}

Es wird die unten dargestellte Ausgabe angezeigt:

Rohdaten des HBase-Shell-Scans, die mehrere Zellversionen einschlieรŸlich eines gelรถschten Werts anzeigen

Die im obigen Screenshot dargestellte Ausgabe liefert folgende Informationen:

  • Die Tabelle guru99 wird mit den Attributen RAW=>true und VERSIONS=>1000 durchsucht.
  • Zeilen mit Spaltenfamilien und Werten anzeigen.
  • In der dritten Zeile werden die in der Spalte vorhandenen gelรถschten Werte angezeigt.
  • Die Ausgabe ist zufรคllig; sie kann nicht in der gleichen Reihenfolge sein wie die Werte, die wir in die Tabelle eingefรผgt haben.

Cluster Replikationsbefehle

  • Diese Befehle funktionieren im Cluster-Setup-Modus von HBase.
  • Zum Hinzufรผgen und Entfernen von Peers zu einem Cluster sowie zum Starten und Stoppen der Replikation werden im Allgemeinen diese Befehle verwendet.
Befehl Funktionalitรคt
add_peer Fรผgt einem Cluster Peers zur Replikation hinzu.
hbase> add_peer '3', zk1,zk2,zk3:2182:/hbase-prod
Remove_Peer Stoppt den definierten Replikationsstream und lรถscht alle Metadateninformationen รผber den Peer.
hbase> remove_peer '1'
start_replication Startet alle Replikationsfunktionen neu.
hbase> start_replication
stop_replication Unterbindet sรคmtliche Replikationsfunktionen.
hbase>stop_replication

Hรคufig gestellte Fragen

Geben Sie โ€žexitโ€œ oder โ€žquitโ€œ ein und drรผcken Sie die Eingabetaste, um die interaktive HBase-Shell zu verlassen und zur Eingabeaufforderung des Betriebssystems zurรผckzukehren. Sie รถffnen die Shell mit dem Befehl โ€žhbase shellโ€œ. Weder โ€žexitโ€œ noch โ€žquitโ€œ beenden den HBase-Dienst; sie beenden lediglich die Shell-Sitzung.

Ja. Pipe-Befehle kรถnnen nicht-interaktiv รผbergeben werden, beispielsweise mit `echo "list" | hbase shell`, oder eine gespeicherte Datei mit `hbase shell script.txt` ausgefรผhrt werden. Da die Shell auf JRuby basiert, kรถnnen auch Ruby-Logik und Schleifen in .rb-Skriptdateien eingebettet werden.

Die Shell ist eine interaktive JRuby-Eingabeaufforderung fรผr schnelle manuelle Befehle und die Administration. Java Die API, die Connection, Admin und Table nutzt, dient Anwendungen, die Tabellen erstellen und Daten programmatisch lesen oder schreiben. Beide greifen auf denselben HBase-Cluster und dieselben Daten zu.

Der Fehler โ€žTabelle existiert bereitsโ€œ tritt auf, wenn beim Erstellen ein bereits vorhandener Name verwendet wird. Die Fehlermeldung โ€žTabelle nicht deaktiviertโ€œ erscheint, wenn Sie eine Tabelle lรถschen oder รคndern, ohne sie vorher zu deaktivieren. Fรผhren Sie vor dem Lรถschen oder ร„ndern den Befehl `disable 'table'` aus und verwenden Sie `exists 'table'`, um den Namen vor dem Erstellen zu รผberprรผfen.

Eine HBase-Spaltenfamilie speichert eine begrenzte Anzahl von zeitgestempelten Versionen pro Zelle, รผblicherweise drei und in neueren Versionen eine. Die Anzahl wird beim Erstellen oder ร„ndern mit VERSIONS festgelegt, รคltere Versionen kรถnnen mit {VERSIONS => n} bei einem GET- oder SCAN-Befehl angefordert werden.

Eine Tabellenreferenzvariable ist ein Shell-Objekt, das von `g = get_table 'guru99'` zurรผckgegeben wird. AnschlieรŸend rufen Sie Methoden wie `g.put`, `g.get` oder `g.count` auf dieser Variable auf, anstatt den Tabellennamen erneut anzugeben. Es handelt sich um eine praktische JRuby-รคhnliche Abkรผrzung in der HBase-Shell.

KI-gestรผtzte Programmierassistenten und groรŸe Sprachmodelle generieren HBase-Shell-Befehle aus Anfragen in Klartext, erklรคren unbekannte Optionen wie Scanfilter oder TTL und helfen bei der Fehlersuche. Maschinelles Lernen analysiert zudem Clustermetriken, um die Replikation und die Regionsoptimierung zu steuern. Dennoch sollte jeder Befehl von einem Entwickler รผberprรผft werden.

Ja. GitHub-Copilot Schlรคgt anhand eines kurzen Kommentars HBase-Shell-Befehle und JRuby-Skripte vor, einschlieรŸlich Beispielen fรผr create, put, scan und alter. Revรœberprรผfen Sie die Ausgabe auf den korrekten Tabellennamen, die Spaltenfamilien und die Syntax, z. B. VERSIONS, bevor Sie das Programm auf einem realen Cluster ausfรผhren.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: