HBase - Kurzanleitung

Seit 1970 ist RDBMS die Lösung für Probleme bei der Datenspeicherung und -wartung. Nach dem Aufkommen von Big Data erkannten Unternehmen den Vorteil der Verarbeitung von Big Data und entschieden sich für Lösungen wie Hadoop.

Hadoop verwendet ein verteiltes Dateisystem zum Speichern von Big Data und MapReduce zum Verarbeiten. Hadoop zeichnet sich durch die Speicherung und Verarbeitung großer Datenmengen in verschiedenen Formaten aus, z. B. beliebig, halb- oder sogar unstrukturiert.

Einschränkungen von Hadoop

Hadoop kann nur Stapelverarbeitung durchführen, und auf Daten wird nur nacheinander zugegriffen. Das heißt, man muss den gesamten Datensatz auch nach den einfachsten Jobs durchsuchen.

Ein großer Datensatz führt bei der Verarbeitung zu einem weiteren großen Datensatz, der ebenfalls nacheinander verarbeitet werden sollte. Zu diesem Zeitpunkt ist eine neue Lösung erforderlich, um auf jeden Datenpunkt in einer einzigen Zeiteinheit zuzugreifen (Direktzugriff).

Hadoop-Direktzugriffsdatenbanken

Anwendungen wie HBase, Cassandra, couchDB, Dynamo und MongoDB sind einige der Datenbanken, die große Datenmengen speichern und auf zufällige Weise auf die Daten zugreifen.

Was ist HBase?

HBase ist eine verteilte spaltenorientierte Datenbank, die auf dem Hadoop-Dateisystem basiert. Es ist ein Open-Source-Projekt und horizontal skalierbar.

HBase ist ein Datenmodell, das der großen Tabelle von Google ähnelt und einen schnellen Direktzugriff auf große Mengen strukturierter Daten ermöglicht. Es nutzt die Fehlertoleranz des Hadoop File System (HDFS).

Es ist Teil des Hadoop-Ökosystems, das zufälligen Lese- / Schreibzugriff in Echtzeit auf Daten im Hadoop-Dateisystem bietet.

Man kann die Daten entweder direkt oder über HBase in HDFS speichern. Der Datenkonsument liest / greift mit HBase zufällig auf die Daten in HDFS zu. HBase befindet sich auf dem Hadoop-Dateisystem und bietet Lese- und Schreibzugriff.

HBase und HDFS

HDFS HBase
HDFS ist ein verteiltes Dateisystem, das zum Speichern großer Dateien geeignet ist. HBase ist eine Datenbank, die auf dem HDFS basiert.
HDFS unterstützt keine schnelle Suche nach einzelnen Datensätzen. HBase bietet schnelle Suchvorgänge für größere Tabellen.
Es bietet eine Stapelverarbeitung mit hoher Latenz; Kein Konzept der Stapelverarbeitung. Es bietet Zugriff auf einzelne Zeilen mit geringer Latenz aus Milliarden von Datensätzen (Direktzugriff).
Es bietet nur sequentiellen Zugriff auf Daten. HBase verwendet intern Hash-Tabellen und bietet Direktzugriff. Die Daten werden in indizierten HDFS-Dateien gespeichert, um eine schnellere Suche zu ermöglichen.

Speichermechanismus in HBase

HBase ist a column-oriented databaseund die darin enthaltenen Tabellen sind nach Zeilen sortiert. Das Tabellenschema definiert nur Spaltenfamilien, bei denen es sich um die Schlüsselwertpaare handelt. Eine Tabelle hat mehrere Spaltenfamilien und jede Spaltenfamilie kann eine beliebige Anzahl von Spalten haben. Nachfolgende Spaltenwerte werden zusammenhängend auf der Festplatte gespeichert. Jeder Zellenwert der Tabelle hat einen Zeitstempel. Kurz gesagt, in einer HBase:

  • Tabelle ist eine Sammlung von Zeilen.
  • Zeile ist eine Sammlung von Spaltenfamilien.
  • Die Spaltenfamilie ist eine Sammlung von Spalten.
  • Die Spalte ist eine Sammlung von Schlüsselwertpaaren.

Im Folgenden finden Sie ein Beispielschema für eine Tabelle in HBase.

Rowid Spaltenfamilie Spaltenfamilie Spaltenfamilie Spaltenfamilie
col1 col2 col3 col1 col2 col3 col1 col2 col3 col1 col2 col3
1
2
3

Spaltenorientiert und zeilenorientiert

Spaltenorientierte Datenbanken sind solche, in denen Datentabellen als Abschnitte von Datenspalten und nicht als Datenzeilen gespeichert werden. In Kürze werden sie Spaltenfamilien haben.

Zeilenorientierte Datenbank Spaltenorientierte Datenbank
Es ist für den Online-Transaktionsprozess (OLTP) geeignet. Es ist für die Online Analytical Processing (OLAP) geeignet.
Solche Datenbanken sind für eine kleine Anzahl von Zeilen und Spalten ausgelegt. Spaltenorientierte Datenbanken sind für große Tabellen konzipiert.

Das folgende Bild zeigt Spaltenfamilien in einer spaltenorientierten Datenbank:

HBase und RDBMS

HBase RDBMS
HBase ist schemalos und hat nicht das Konzept eines festen Spaltenschemas. definiert nur Spaltenfamilien. Ein RDBMS wird von seinem Schema gesteuert, das die gesamte Struktur von Tabellen beschreibt.
Es ist für breite Tische gebaut. HBase ist horizontal skalierbar. Es ist dünn und für kleine Tische gebaut. Schwer zu skalieren.
In HBase sind keine Transaktionen vorhanden. RDBMS ist eine Transaktion.
Es hat de-normalisierte Daten. Es werden normalisierte Daten vorliegen.
Es ist sowohl für halbstrukturierte als auch für strukturierte Daten geeignet. Es ist gut für strukturierte Daten.

Eigenschaften von HBase

  • HBase ist linear skalierbar.
  • Es verfügt über eine automatische Fehlerunterstützung.
  • Es bietet konsistentes Lesen und Schreiben.
  • Es lässt sich sowohl als Quelle als auch als Ziel in Hadoop integrieren.
  • Es hat einfache Java-API für Client.
  • Es bietet Datenreplikation über Cluster hinweg.

Verwendung von HBase

  • Apache HBase wird verwendet, um zufälligen Lese- / Schreibzugriff in Echtzeit auf Big Data zu haben.

  • Es hostet sehr große Tabellen auf Clustern von Standardhardware.

  • Apache HBase ist eine nicht relationale Datenbank, die dem Bigtable von Google nachempfunden ist. Bigtable funktioniert im Google File System, ebenso wie Apache HBase auf Hadoop und HDFS.

Anwendungen von HBase

  • Es wird immer dann verwendet, wenn schwere Anwendungen geschrieben werden müssen.
  • HBase wird immer dann verwendet, wenn ein schneller Direktzugriff auf verfügbare Daten erforderlich ist.
  • Unternehmen wie Facebook, Twitter, Yahoo und Adobe verwenden HBase intern.

HBase-Geschichte

Jahr Veranstaltung
November 2006 Google hat das Papier auf BigTable veröffentlicht.
Februar 2007 Der erste HBase-Prototyp wurde als Hadoop-Beitrag erstellt.
Okt 2007 Die erste verwendbare HBase zusammen mit Hadoop 0.15.0 wurde veröffentlicht.
Jan 2008 HBase wurde das Teilprojekt von Hadoop.
Okt 2008 HBase 0.18.1 wurde freigesetzt.
Jan 2009 HBase 0.19.0 wurde veröffentlicht.
September 2009 HBase 0.20.0 wurde veröffentlicht.
Mai 2010 HBase wurde zum Apache-Top-Level-Projekt.

In HBase werden Tabellen in Regionen aufgeteilt und von den Regionsservern bereitgestellt. Regionen werden vertikal durch Spaltenfamilien in "Stores" unterteilt. Speicher werden als Dateien in HDFS gespeichert. Unten ist die Architektur von HBase dargestellt.

Note: Der Begriff "Speicher" wird für Regionen verwendet, um die Speicherstruktur zu erklären.

HBase besteht aus drei Hauptkomponenten: der Clientbibliothek, einem Master-Server und Regionsservern. Regionsserver können je nach Anforderung hinzugefügt oder entfernt werden.

MasterServer

Der Master-Server -

  • Weist den Regionsservern Regionen zu und verwendet für diese Aufgabe die Hilfe von Apache ZooKeeper.

  • Behandelt den Lastausgleich der Regionen über Regionsserver hinweg. Es entlädt die ausgelasteten Server und verschiebt die Regionen auf weniger belegte Server.

  • Behält den Status des Clusters bei, indem der Lastausgleich ausgehandelt wird.

  • Ist verantwortlich für Schemaänderungen und andere Metadatenoperationen wie das Erstellen von Tabellen und Spaltenfamilien.

Regionen

Regionen sind nichts anderes als Tabellen, die auf die Regionsserver verteilt sind.

Regionsserver

Die Regionsserver haben Regionen, die -

  • Kommunizieren Sie mit dem Client und erledigen Sie datenbezogene Vorgänge.
  • Verarbeiten Sie Lese- und Schreibanforderungen für alle Regionen darunter.
  • Bestimmen Sie die Größe der Region, indem Sie die Schwellenwerte für die Regionsgröße befolgen.

Wenn wir uns den Regionsserver genauer ansehen, enthält er Regionen und Speicher wie folgt:

Der Speicher enthält Speicher und HFiles. Memstore ist wie ein Cache-Speicher. Alles, was in die HBase eingegeben wird, wird hier zunächst gespeichert. Später werden die Daten übertragen und als Blöcke in Hfiles gespeichert und der Memstore wird geleert.

Tierpfleger

  • Zookeeper ist ein Open-Source-Projekt, das Dienste wie das Verwalten von Konfigurationsinformationen, das Benennen, das Bereitstellen einer verteilten Synchronisierung usw. bereitstellt.

  • Zookeeper verfügt über kurzlebige Knoten, die verschiedene Regionsserver darstellen. Master-Server verwenden diese Knoten, um verfügbare Server zu ermitteln.

  • Zusätzlich zur Verfügbarkeit werden die Knoten auch zum Verfolgen von Serverfehlern oder Netzwerkpartitionen verwendet.

  • Clients kommunizieren über Zookeeper mit Regionsservern.

  • Im Pseudo- und Standalone-Modus kümmert sich HBase selbst um den Tierpfleger.

In diesem Kapitel wird erläutert, wie HBase installiert und zunächst konfiguriert wird. Java und Hadoop sind erforderlich, um mit HBase fortzufahren. Daher müssen Sie Java und Hadoop herunterladen und auf Ihrem System installieren.

Setup vor der Installation

Bevor wir Hadoop in einer Linux-Umgebung installieren, müssen wir Linux mit einrichten ssh(Sichere Shell). Führen Sie die folgenden Schritte aus, um die Linux-Umgebung einzurichten.

Benutzer erstellen

Zunächst wird empfohlen, einen separaten Benutzer für Hadoop zu erstellen, um das Hadoop-Dateisystem vom Unix-Dateisystem zu isolieren. Führen Sie die folgenden Schritte aus, um einen Benutzer zu erstellen.

  • Öffnen Sie den Stamm mit dem Befehl "su".
  • Erstellen Sie einen Benutzer aus dem Root-Konto mit dem Befehl "useradd username".
  • Jetzt können Sie mit dem Befehl "su username" ein bestehendes Benutzerkonto eröffnen.

Öffnen Sie das Linux-Terminal und geben Sie die folgenden Befehle ein, um einen Benutzer zu erstellen.

$ su
password:
# useradd hadoop
# passwd hadoop
New passwd:
Retype new passwd

SSH-Setup und Schlüsselgenerierung

Das SSH-Setup ist erforderlich, um verschiedene Vorgänge im Cluster auszuführen, z. B. Start-, Stopp- und verteilte Daemon-Shell-Vorgänge. Um verschiedene Benutzer von Hadoop zu authentifizieren, muss ein öffentliches / privates Schlüsselpaar für einen Hadoop-Benutzer bereitgestellt und für verschiedene Benutzer freigegeben werden.

Die folgenden Befehle werden verwendet, um mit SSH ein Schlüsselwertpaar zu generieren. Kopieren Sie die öffentlichen Schlüssel aus id_rsa.pub in autorisierte Schlüssel und geben Sie Eigentümer-, Lese- und Schreibberechtigungen für die Datei "autorisierte Schlüssel" an.

$ ssh-keygen -t rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys $ chmod 0600 ~/.ssh/authorized_keys

Überprüfen Sie ssh

ssh localhost

Java installieren

Java ist die Hauptvoraussetzung für Hadoop und HBase. Zunächst sollten Sie die Existenz von Java in Ihrem System mithilfe von "Java-Version" überprüfen. Die Syntax des Java-Versionsbefehls ist unten angegeben.

$ java -version

Wenn alles gut funktioniert, erhalten Sie die folgende Ausgabe.

java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b13)
Java HotSpot(TM) Client VM (build 25.0-b02, mixed mode)

Wenn Java nicht auf Ihrem System installiert ist, führen Sie die folgenden Schritte aus, um Java zu installieren.

Schritt 1

Laden Sie Java (JDK <neueste Version> - X64.tar.gz) über den folgenden Link Oracle Java herunter .

Dann jdk-7u71-linux-x64.tar.gz wird in Ihr System heruntergeladen.

Schritt 2

Im Allgemeinen finden Sie die heruntergeladene Java-Datei im Ordner Downloads. Überprüfen Sie es und extrahieren Sie diejdk-7u71-linux-x64.gz Datei mit den folgenden Befehlen.

$ cd Downloads/
$ ls jdk-7u71-linux-x64.gz $ tar zxf jdk-7u71-linux-x64.gz
$ ls
jdk1.7.0_71 jdk-7u71-linux-x64.gz

Schritt 3

Um Java allen Benutzern zur Verfügung zu stellen, müssen Sie es an den Speicherort „/ usr / local /“ verschieben. Öffnen Sie root und geben Sie die folgenden Befehle ein.

$ su
password:
# mv jdk1.7.0_71 /usr/local/
# exit

Schritt 4

Zum Einrichten PATH und JAVA_HOME Variablen, fügen Sie die folgenden Befehle hinzu ~/.bashrc Datei.

export JAVA_HOME=/usr/local/jdk1.7.0_71
export PATH= $PATH:$JAVA_HOME/bin

Übernehmen Sie nun alle Änderungen in das aktuell laufende System.

$ source ~/.bashrc

Schritt 5

Verwenden Sie die folgenden Befehle, um Java-Alternativen zu konfigurieren:

# alternatives --install /usr/bin/java java usr/local/java/bin/java 2

# alternatives --install /usr/bin/javac javac usr/local/java/bin/javac 2

# alternatives --install /usr/bin/jar jar usr/local/java/bin/jar 2


# alternatives --set java usr/local/java/bin/java

# alternatives --set javac usr/local/java/bin/javac

# alternatives --set jar usr/local/java/bin/jar

Überprüfen Sie nun die java -version Befehl vom Terminal wie oben erläutert.

Hadoop herunterladen

Nach der Installation von Java müssen Sie Hadoop installieren. Überprüfen Sie zunächst die Existenz von Hadoop mit dem Befehl „Hadoop-Version“ (siehe unten).

hadoop version

Wenn alles gut funktioniert, erhalten Sie die folgende Ausgabe.

Hadoop 2.6.0
Compiled by jenkins on 2014-11-13T21:10Z
Compiled with protoc 2.5.0
From source with checksum 18e43357c8f927c0695f1e9522859d6a
This command was run using
/home/hadoop/hadoop/share/hadoop/common/hadoop-common-2.6.0.jar

Wenn Ihr System Hadoop nicht finden kann, laden Sie Hadoop in Ihr System herunter. Befolgen Sie dazu die unten angegebenen Befehle.

Laden Sie hadoop-2.6.0 mit den folgenden Befehlen von Apache Software Foundation herunter und extrahieren Sie es .

$ su
password:
# cd /usr/local
# wget http://mirrors.advancedhosters.com/apache/hadoop/common/hadoop-
2.6.0/hadoop-2.6.0-src.tar.gz
# tar xzf hadoop-2.6.0-src.tar.gz
# mv hadoop-2.6.0/* hadoop/
# exit

Hadoop installieren

Installieren Sie Hadoop in einem der erforderlichen Modi. Hier demonstrieren wir HBase-Funktionen im pseudoverteilten Modus. Installieren Sie daher Hadoop im pseudoverteilten Modus.

Die folgenden Schritte werden zur Installation verwendet Hadoop 2.4.1.

Schritt 1 - Hadoop einrichten

Sie können Hadoop-Umgebungsvariablen festlegen, indem Sie die folgenden Befehle an anhängen ~/.bashrc Datei.

export HADOOP_HOME=/usr/local/hadoop
export HADOOP_MAPRED_HOME=$HADOOP_HOME export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_INSTALL=$HADOOP_HOME

Übernehmen Sie nun alle Änderungen in das aktuell laufende System.

$ source ~/.bashrc

Schritt 2 - Hadoop-Konfiguration

Sie finden alle Hadoop-Konfigurationsdateien unter dem Speicherort "$ HADOOP_HOME / etc / hadoop". Sie müssen Änderungen an diesen Konfigurationsdateien entsprechend Ihrer Hadoop-Infrastruktur vornehmen.

$ cd $HADOOP_HOME/etc/hadoop

Um Hadoop-Programme in Java zu entwickeln, müssen Sie die Java-Umgebungsvariable in zurücksetzen hadoop-env.sh Datei durch Ersetzen JAVA_HOME Wert mit dem Speicherort von Java in Ihrem System.

export JAVA_HOME=/usr/local/jdk1.7.0_71

Sie müssen die folgenden Dateien bearbeiten, um Hadoop zu konfigurieren.

core-site.xml

Das core-site.xml Die Datei enthält Informationen wie die für die Hadoop-Instanz verwendete Portnummer, den für das Dateisystem zugewiesenen Speicher, das Speicherlimit zum Speichern von Daten und die Größe der Lese- / Schreibpuffer.

Öffnen Sie core-site.xml und fügen Sie die folgenden Eigenschaften zwischen den Tags <configuration> und </ configuration> hinzu.

<configuration>
   <property>
      <name>fs.default.name</name>
      <value>hdfs://localhost:9000</value>
   </property>
</configuration>

hdfs-site.xml

Das hdfs-site.xml Die Datei enthält Informationen wie den Wert der Replikationsdaten, den Namensknotenpfad und den Datenknotenpfad Ihrer lokalen Dateisysteme, in denen Sie die Hadoop-Infrastruktur speichern möchten.

Nehmen wir die folgenden Daten an.

dfs.replication (data replication value) = 1
(In the below given path /hadoop/ is the user name.
hadoopinfra/hdfs/namenode is the directory created by hdfs file system.)

namenode path = //home/hadoop/hadoopinfra/hdfs/namenode
(hadoopinfra/hdfs/datanode is the directory created by hdfs file system.)

datanode path = //home/hadoop/hadoopinfra/hdfs/datanode

Öffnen Sie diese Datei und fügen Sie die folgenden Eigenschaften zwischen den Tags <configuration>, </ configuration> hinzu.

<configuration>
   <property>
      <name>dfs.replication</name >
      <value>1</value>
   </property>
	
   <property>
      <name>dfs.name.dir</name>
      <value>file:///home/hadoop/hadoopinfra/hdfs/namenode</value>
   </property>
	
   <property>
      <name>dfs.data.dir</name>
      <value>file:///home/hadoop/hadoopinfra/hdfs/datanode</value>
   </property>
</configuration>

Note: In der obigen Datei sind alle Eigenschaftswerte benutzerdefiniert und Sie können Änderungen entsprechend Ihrer Hadoop-Infrastruktur vornehmen.

yarn-site.xml

Diese Datei wird verwendet, um Garn in Hadoop zu konfigurieren. Öffnen Sie die Datei yarn-site.xml und fügen Sie die folgende Eigenschaft zwischen <configuration $ gt;, </ configuration $ gt; Tags in dieser Datei.

<configuration>
   <property>
      <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle</value>
   </property>
</configuration>

mapred-site.xml

Diese Datei wird verwendet, um anzugeben, welches MapReduce-Framework wir verwenden. Standardmäßig enthält Hadoop eine Vorlage von yarn-site.xml. Zunächst muss die Datei von kopiert werdenmapred-site.xml.template zu mapred-site.xml Datei mit dem folgenden Befehl.

$ cp mapred-site.xml.template mapred-site.xml

Öffnen mapred-site.xml Datei und fügen Sie die folgenden Eigenschaften zwischen den Tags <configuration> und </ configuration> hinzu.

<configuration>
   <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
   </property>
</configuration>

Überprüfen der Hadoop-Installation

Die folgenden Schritte werden verwendet, um die Hadoop-Installation zu überprüfen.

Schritt 1 - Einrichtung des Namensknotens

Richten Sie den Namensknoten mit dem Befehl "hdfs namenode -format" wie folgt ein.

$ cd ~ $ hdfs namenode -format

Das erwartete Ergebnis ist wie folgt.

10/24/14 21:30:55 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = localhost/192.168.1.11
STARTUP_MSG: args = [-format]
STARTUP_MSG: version = 2.4.1
...
...
10/24/14 21:30:56 INFO common.Storage: Storage directory
/home/hadoop/hadoopinfra/hdfs/namenode has been successfully formatted.
10/24/14 21:30:56 INFO namenode.NNStorageRetentionManager: Going to
retain 1 images with txid >= 0
10/24/14 21:30:56 INFO util.ExitUtil: Exiting with status 0
10/24/14 21:30:56 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at localhost/192.168.1.11
************************************************************/

Schritt 2 - Überprüfen von Hadoop dfs

Der folgende Befehl wird verwendet, um dfs zu starten. Durch Ausführen dieses Befehls wird Ihr Hadoop-Dateisystem gestartet.

$ start-dfs.sh

Die erwartete Ausgabe ist wie folgt.

10/24/14 21:37:56
Starting namenodes on [localhost]
localhost: starting namenode, logging to /home/hadoop/hadoop-
2.4.1/logs/hadoop-hadoop-namenode-localhost.out
localhost: starting datanode, logging to /home/hadoop/hadoop-
2.4.1/logs/hadoop-hadoop-datanode-localhost.out
Starting secondary namenodes [0.0.0.0]

Schritt 3 - Überprüfen des Garnskripts

Der folgende Befehl wird verwendet, um das Garnskript zu starten. Wenn Sie diesen Befehl ausführen, werden Ihre Garn-Dämonen gestartet.

$ start-yarn.sh

Die erwartete Ausgabe ist wie folgt.

starting yarn daemons
starting resourcemanager, logging to /home/hadoop/hadoop-
2.4.1/logs/yarn-hadoop-resourcemanager-localhost.out
localhost: starting nodemanager, logging to /home/hadoop/hadoop-
2.4.1/logs/yarn-hadoop-nodemanager-localhost.out

Schritt 4 - Zugriff auf Hadoop über den Browser

Die Standardportnummer für den Zugriff auf Hadoop ist 50070. Verwenden Sie die folgende URL, um Hadoop-Dienste in Ihrem Browser abzurufen.

http://localhost:50070

Schritt 5 - Überprüfen Sie alle Anwendungen des Clusters

Die Standardportnummer für den Zugriff auf alle Clusteranwendungen lautet 8088. Verwenden Sie die folgende URL, um diesen Dienst aufzurufen.

http://localhost:8088/

HBase installieren

Wir können HBase in jedem der drei Modi installieren: Standalone-Modus, Pseudo Distributed-Modus und Fully Distributed-Modus.

HBase im Standalone-Modus installieren

Laden Sie die neueste stabile Version des HBase-Formulars herunter http://www.interior-dsgn.com/apache/hbase/stable/Verwenden Sie den Befehl „wget“ und extrahieren Sie ihn mit dem Befehl tar „zxvf“. Siehe den folgenden Befehl.

$cd usr/local/ $wget http://www.interior-dsgn.com/apache/hbase/stable/hbase-0.98.8-
hadoop2-bin.tar.gz
$tar -zxvf hbase-0.98.8-hadoop2-bin.tar.gz

Wechseln Sie in den Superuser-Modus und verschieben Sie den HBase-Ordner wie unten gezeigt nach / usr / local.

$su
$password: enter your password here
mv hbase-0.99.1/* Hbase/

HBase im Standalone-Modus konfigurieren

Bevor Sie mit HBase fortfahren können, müssen Sie die folgenden Dateien bearbeiten und HBase konfigurieren.

hbase-env.sh

Stellen Sie das Java-Home für HBase ein und öffnen Sie es hbase-env.shDatei aus dem Ordner conf. Bearbeiten Sie die Umgebungsvariable JAVA_HOME und ändern Sie den vorhandenen Pfad zu Ihrer aktuellen Variablen JAVA_HOME wie unten gezeigt.

cd /usr/local/Hbase/conf
gedit hbase-env.sh

Dadurch wird die Datei env.sh von HBase geöffnet. Ersetzen Sie nun die vorhandenenJAVA_HOME Wert mit Ihrem aktuellen Wert wie unten gezeigt.

export JAVA_HOME=/usr/lib/jvm/java-1.7.0

hbase-site.xml

Dies ist die Hauptkonfigurationsdatei von HBase. Stellen Sie das Datenverzeichnis auf einen geeigneten Speicherort ein, indem Sie den HBase-Basisordner in / usr / local / HBase öffnen. Im conf-Ordner finden Sie mehrere Dateien, öffnen Sie diehbase-site.xml Datei wie unten gezeigt.

#cd /usr/local/HBase/
#cd conf
# gedit hbase-site.xml

In der hbase-site.xmlDatei finden Sie die Tags <configuration> und </ configuration>. Legen Sie in ihnen das HBase-Verzeichnis unter dem Eigenschaftsschlüssel mit dem Namen "hbase.rootdir" fest, wie unten gezeigt.

<configuration>
   //Here you have to set the path where you want HBase to store its files.
   <property>
      <name>hbase.rootdir</name>
      <value>file:/home/hadoop/HBase/HFiles</value>
   </property>
	
   //Here you have to set the path where you want HBase to store its built in zookeeper  files.
   <property>
      <name>hbase.zookeeper.property.dataDir</name>
      <value>/home/hadoop/zookeeper</value>
   </property>
</configuration>

Damit ist der HBase-Installations- und Konfigurationsteil erfolgreich abgeschlossen. Wir können HBase mit verwendenstart-hbase.shSkript im Ordner bin von HBase. Öffnen Sie dazu den HBase-Home-Ordner und führen Sie das HBase-Startskript wie unten gezeigt aus.

$cd /usr/local/HBase/bin
$./start-hbase.sh

Wenn beim Versuch, das HBase-Startskript auszuführen, alles gut läuft, wird eine Meldung angezeigt, dass HBase gestartet wurde.

starting master, logging to /usr/local/HBase/bin/../logs/hbase-tpmaster-localhost.localdomain.out

Installieren von HBase im pseudoverteilten Modus

Lassen Sie uns nun überprüfen, wie HBase im pseudoverteilten Modus installiert ist.

HBase konfigurieren

Bevor Sie mit HBase fortfahren, konfigurieren Sie Hadoop und HDFS auf Ihrem lokalen System oder auf einem Remote-System und stellen Sie sicher, dass sie ausgeführt werden. Stoppen Sie HBase, wenn es ausgeführt wird.

hbase-site.xml

Bearbeiten Sie die Datei hbase-site.xml, um die folgenden Eigenschaften hinzuzufügen.

<property>
   <name>hbase.cluster.distributed</name>
   <value>true</value>
</property>

Es wird erwähnt, in welchem ​​Modus HBase ausgeführt werden soll. Ändern Sie in derselben Datei aus dem lokalen Dateisystem die Datei hbase.rootdir, Ihre HDFS-Instanzadresse, mithilfe der URI-Syntax hdfs: ////. Wir führen HDFS auf dem lokalen Host an Port 8030 aus.

<property>
   <name>hbase.rootdir</name>
   <value>hdfs://localhost:8030/hbase</value>
</property>

HBase starten

Navigieren Sie nach Abschluss der Konfiguration zum HBase-Ausgangsordner und starten Sie HBase mit dem folgenden Befehl.

$cd /usr/local/HBase
$bin/start-hbase.sh

Note: Stellen Sie vor dem Starten von HBase sicher, dass Hadoop ausgeführt wird.

Überprüfen des HBase-Verzeichnisses in HDFS

HBase erstellt sein Verzeichnis in HDFS. Navigieren Sie zum Anzeigen des erstellten Verzeichnisses zu Hadoop bin und geben Sie den folgenden Befehl ein.

$ ./bin/hadoop fs -ls /hbase

Wenn alles gut geht, erhalten Sie die folgende Ausgabe.

Found 7 items
drwxr-xr-x - hbase users 0 2014-06-25 18:58 /hbase/.tmp
drwxr-xr-x - hbase users 0 2014-06-25 21:49 /hbase/WALs
drwxr-xr-x - hbase users 0 2014-06-25 18:48 /hbase/corrupt
drwxr-xr-x - hbase users 0 2014-06-25 18:58 /hbase/data
-rw-r--r-- 3 hbase users 42 2014-06-25 18:41 /hbase/hbase.id
-rw-r--r-- 3 hbase users 7 2014-06-25 18:41 /hbase/hbase.version
drwxr-xr-x - hbase users 0 2014-06-25 21:49 /hbase/oldWALs

Starten und Stoppen eines Masters

Mit der Datei "local-master-backup.sh" können Sie bis zu 10 Server starten. Öffnen Sie den Home-Ordner von HBase, master und führen Sie den folgenden Befehl aus, um ihn zu starten.

$ ./bin/local-master-backup.sh 2 4

Um einen Sicherungsmaster zu beenden, benötigen Sie seine Prozess-ID, die in einer Datei mit dem Namen gespeichert wird “/tmp/hbase-USER-X-master.pid.” Sie können den Sicherungsmaster mit dem folgenden Befehl beenden.

$ cat /tmp/hbase-user-1-master.pid |xargs kill -9

RegionServer starten und stoppen

Mit dem folgenden Befehl können Sie mehrere Regionsserver von einem einzigen System aus ausführen.

$ .bin/local-regionservers.sh start 2 3

Verwenden Sie den folgenden Befehl, um einen Regionsserver zu stoppen.

$ .bin/local-regionservers.sh stop 3

 

Starten von HBaseShell

Nach erfolgreicher Installation von HBase können Sie HBase Shell starten. Nachfolgend finden Sie die Abfolge der Schritte, die zum Starten der HBase-Shell ausgeführt werden müssen. Öffnen Sie das Terminal und melden Sie sich als Superuser an.

Starten Sie das Hadoop-Dateisystem

Durchsuchen Sie den Hadoop-Home-Ordner sbin und starten Sie das Hadoop-Dateisystem wie unten gezeigt.

$cd $HADOOP_HOME/sbin
$start-all.sh

Starten Sie HBase

Durchsuchen Sie den Ordner bin im HBase-Stammverzeichnis und starten Sie HBase.

$cd /usr/local/HBase
$./bin/start-hbase.sh

Starten Sie HBase Master Server

Dies ist das gleiche Verzeichnis. Starten Sie es wie unten gezeigt.

$./bin/local-master-backup.sh start 2 (number signifies specific
server.)

Region starten

Starten Sie den Regionsserver wie unten gezeigt.

$./bin/./local-regionservers.sh start 3

Starten Sie die HBase-Shell

Sie können die HBase-Shell mit dem folgenden Befehl starten.

$cd bin
$./hbase shell

Dadurch erhalten Sie die unten gezeigte HBase Shell-Eingabeaufforderung.

2014-12-09 14:24:27,526 INFO [main] Configuration.deprecation:
hadoop.native.lib is deprecated. Instead, use io.native.lib.available
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.98.8-hadoop2, r6cfc8d064754251365e070a10a82eb169956d5fe, Fri
Nov 14 18:26:29 PST 2014

hbase(main):001:0>

HBase-Webschnittstelle

Geben Sie die folgende URL in den Browser ein, um auf die Weboberfläche von HBase zuzugreifen.

http://localhost:60010

Diese Schnittstelle listet Ihre aktuell ausgeführten Region-Server, Backup-Master und HBase-Tabellen auf.

HBase Region Server und Backup Master

HBase-Tabellen

Java-Umgebung einstellen

Wir können auch über Java-Bibliotheken mit HBase kommunizieren. Bevor Sie jedoch über die Java-API auf HBase zugreifen, müssen Sie den Klassenpfad für diese Bibliotheken festlegen.

Klassenpfad einstellen

Bevor Sie mit der Programmierung fortfahren, setzen Sie den Klassenpfad auf HBase-Bibliotheken in .bashrcDatei. Öffnen.bashrc in einem der Editoren wie unten gezeigt.

$ gedit ~/.bashrc

Legen Sie den Klassenpfad für HBase-Bibliotheken (lib-Ordner in HBase) wie unten gezeigt fest.

export CLASSPATH = $CLASSPATH://home/hadoop/hbase/lib/*

Dies soll verhindern, dass beim Zugriff auf die HBase über die Java-API die Ausnahme "Klasse nicht gefunden" auftritt.

In diesem Kapitel wird erläutert, wie Sie die mit HBase gelieferte interaktive HBase-Shell starten.

HBase Shell

HBase enthält eine Shell, mit der Sie mit HBase kommunizieren können. HBase verwendet das Hadoop-Dateisystem zum Speichern seiner Daten. Es wird einen Master-Server und Regionsserver haben. Die Datenspeicherung erfolgt in Form von Regionen (Tabellen). Diese Regionen werden aufgeteilt und auf Regionsservern gespeichert.

Der Master-Server verwaltet diese Regionsserver und alle diese Aufgaben werden in HDFS ausgeführt. Im Folgenden sind einige der von HBase Shell unterstützten Befehle aufgeführt.

Allgemeine Befehle

  • status - Gibt den Status von HBase an, z. B. die Anzahl der Server.

  • version - Stellt die verwendete Version von HBase bereit.

  • table_help - Bietet Hilfe für Tabellenreferenzbefehle.

  • whoami - Bietet Informationen über den Benutzer.

Datendefinitionssprache

Dies sind die Befehle, die für die Tabellen in HBase ausgeführt werden.

  • create - Erstellt eine Tabelle.

  • list - Listet alle Tabellen in HBase auf.

  • disable - Deaktiviert eine Tabelle.

  • is_disabled - Überprüft, ob eine Tabelle deaktiviert ist.

  • enable - Aktiviert eine Tabelle.

  • is_enabled - Überprüft, ob eine Tabelle aktiviert ist.

  • describe - Bietet die Beschreibung einer Tabelle.

  • alter - Ändert einen Tisch.

  • exists - Überprüft, ob eine Tabelle vorhanden ist.

  • drop - Löscht eine Tabelle aus HBase.

  • drop_all - Löscht die Tabellen, die dem im Befehl angegebenen 'regulären Ausdruck' entsprechen.

  • Java Admin API- Vor allen oben genannten Befehlen bietet Java eine Admin-API, um DDL-Funktionen durch Programmierung zu erreichen. Unterorg.apache.hadoop.hbase.client Paket, HBaseAdmin und HTableDescriptor sind die beiden wichtigen Klassen in diesem Paket, die DDL-Funktionen bereitstellen.

Datenmanipulierungssprache

  • put - Setzt einen Zellenwert an eine bestimmte Spalte in einer bestimmten Zeile in einer bestimmten Tabelle.

  • get - Ruft den Inhalt einer Zeile oder einer Zelle ab.

  • delete - Löscht einen Zellenwert in einer Tabelle.

  • deleteall - Löscht alle Zellen in einer bestimmten Zeile.

  • scan - Scannt die Tabellendaten und gibt sie zurück.

  • count - Zählt und gibt die Anzahl der Zeilen in einer Tabelle zurück.

  • truncate - Deaktiviert, löscht und erstellt eine angegebene Tabelle neu.

  • Java client API - Vor allen oben genannten Befehlen bietet Java eine Client-API zum Erreichen von DML-Funktionen. CRUD (Create Retrieve Update Delete) -Operationen und mehr durch Programmierung unter dem Paket org.apache.hadoop.hbase.client. HTable Put und Get sind die wichtigen Klassen in diesem Paket.

Starten der HBase Shell

Um auf die HBase-Shell zuzugreifen, müssen Sie zum HBase-Ausgangsordner navigieren.

cd /usr/localhost/
cd Hbase

Sie können die interaktive HBase-Shell mit starten “hbase shell” Befehl wie unten gezeigt.

./bin/hbase shell

Wenn Sie HBase erfolgreich in Ihrem System installiert haben, wird die unten gezeigte HBase-Shell-Eingabeaufforderung angezeigt.

HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.94.23, rf42302b28aceaab773b15f234aa8718fff7eea3c, Wed Aug 27
00:54:09 UTC 2014

hbase(main):001:0>

Um den interaktiven Shell-Befehl jederzeit zu beenden, geben Sie exit ein oder verwenden Sie <Strg + c>. Überprüfen Sie die Funktion der Shell, bevor Sie fortfahren. Verwenden Sie dielist Befehl zu diesem Zweck. Listist ein Befehl, mit dem die Liste aller Tabellen in HBase abgerufen wird. Überprüfen Sie zunächst die Installation und Konfiguration von HBase in Ihrem System mit diesem Befehl, wie unten gezeigt.

hbase(main):001:0> list

Wenn Sie diesen Befehl eingeben, erhalten Sie die folgende Ausgabe.

hbase(main):001:0> list
TABLE

Die allgemeinen Befehle in HBase sind status, version, table_help und whoami. In diesem Kapitel werden diese Befehle erläutert.

Status

Dieser Befehl gibt den Status des Systems einschließlich der Details der auf dem System ausgeführten Server zurück. Die Syntax lautet wie folgt:

hbase(main):009:0> status

Wenn Sie diesen Befehl ausführen, wird die folgende Ausgabe zurückgegeben.

hbase(main):009:0> status
3 servers, 0 dead, 1.3333 average load

Ausführung

Dieser Befehl gibt die in Ihrem System verwendete HBase-Version zurück. Die Syntax lautet wie folgt:

hbase(main):010:0> version

Wenn Sie diesen Befehl ausführen, wird die folgende Ausgabe zurückgegeben.

hbase(main):009:0> version
0.98.8-hadoop2, r6cfc8d064754251365e070a10a82eb169956d5fe, Fri Nov 14
18:26:29 PST 2014

table_help

Dieser Befehl zeigt Ihnen, was und wie tabellenbezogene Befehle verwendet werden. Im Folgenden wird die Syntax zur Verwendung dieses Befehls angegeben.

hbase(main):02:0> table_help

Wenn Sie diesen Befehl verwenden, werden Hilfethemen für tabellenbezogene Befehle angezeigt. Unten ist die Teilausgabe dieses Befehls angegeben.

hbase(main):002:0> table_help
Help for table-reference commands.
You can either create a table via 'create' and then manipulate the table
via commands like 'put', 'get', etc.
See the standard help information for how to use each of these commands.
However, as of 0.96, you can also get a reference to a table, on which
you can invoke commands.
For instance, you can get create a table and keep around a reference to
it via:
 hbase> t = create 't', 'cf'…...

Wer bin ich

Dieser Befehl gibt die Benutzerdetails von HBase zurück. Wenn Sie diesen Befehl ausführen, wird der aktuelle HBase-Benutzer wie unten gezeigt zurückgegeben.

hbase(main):008:0> whoami
hadoop (auth:SIMPLE)
groups: hadoop

HBase ist in Java geschrieben und bietet daher eine Java-API für die Kommunikation mit HBase. Die Java-API ist der schnellste Weg, um mit HBase zu kommunizieren. Im Folgenden wird die referenzierte Java-Admin-API angegeben, die die Aufgaben zum Verwalten von Tabellen abdeckt.

Klasse HBaseAdmin

HBaseAdminist eine Klasse, die den Administrator darstellt. Diese Klasse gehört zurorg.apache.hadoop.hbase.clientPaket. Mit dieser Klasse können Sie die Aufgaben eines Administrators ausführen. Sie können die Instanz von Admin mit abrufenConnection.getAdmin() Methode.

Methoden und Beschreibung

S.No. Methoden und Beschreibung
1

void createTable(HTableDescriptor desc)

Erstellt eine neue Tabelle.

2

void createTable(HTableDescriptor desc, byte[][] splitKeys)

Erstellt eine neue Tabelle mit einem anfänglichen Satz leerer Bereiche, die durch die angegebenen geteilten Schlüssel definiert sind.

3

void deleteColumn(byte[] tableName, String columnName)

Löscht eine Spalte aus einer Tabelle.

4

void deleteColumn(String tableName, String columnName)

Löschen Sie eine Spalte aus einer Tabelle.

5

void deleteTable(String tableName)

Löscht eine Tabelle.

Klassendeskriptor

Diese Klasse enthält die Details zu einer HBase-Tabelle wie:

  • die Deskriptoren aller Spaltenfamilien,
  • Wenn die Tabelle eine Katalogtabelle ist,
  • Wenn die Tabelle schreibgeschützt ist,
  • die maximale Größe des Mem-Speichers,
  • wenn die Regionsaufteilung erfolgen soll,
  • damit verbundene Co-Prozessoren usw.

Konstruktoren

S.No. Konstruktor und Zusammenfassung
1

HTableDescriptor(TableName name)

Erstellt einen Tabellendeskriptor, der ein TableName-Objekt angibt.

Methoden und Beschreibung

S.No. Methoden und Beschreibung
1

HTableDescriptor addFamily(HColumnDescriptor family)

Fügt dem angegebenen Deskriptor eine Spaltenfamilie hinzu

Erstellen einer Tabelle mit HBase Shell

Sie können eine Tabelle mit dem erstellen createBefehl, hier müssen Sie den Tabellennamen und den Namen der Spaltenfamilie angeben. Dassyntax Das Erstellen einer Tabelle in der HBase-Shell wird unten gezeigt.

create ‘<table name>’,’<column family>’

Beispiel

Im Folgenden finden Sie ein Beispielschema einer Tabelle mit dem Namen emp. Es gibt zwei Spaltenfamilien: "personenbezogene Daten" und "berufliche Daten".

Zeilenschlüssel persönliche Daten professionelle Daten

Sie können diese Tabelle in der HBase-Shell wie unten gezeigt erstellen.

hbase(main):002:0> create 'emp', 'personal data', 'professional data'

Und es gibt Ihnen die folgende Ausgabe.

0 row(s) in 1.1300 seconds
=> Hbase::Table - emp

Überprüfung

Sie können überprüfen, ob die Tabelle mit dem erstellt wurde listBefehl wie unten gezeigt. Hier können Sie die erstellte emp-Tabelle beobachten.

hbase(main):002:0> list
TABLE 
emp
2 row(s) in 0.0340 seconds

Erstellen einer Tabelle mit der Java-API

Sie können eine Tabelle in HBase mit dem erstellen createTable() Methode von HBaseAdminKlasse. Diese Klasse gehört zurorg.apache.hadoop.hbase.clientPaket. Im Folgenden werden die Schritte zum Erstellen einer Tabelle in HBase mithilfe der Java-API aufgeführt.

Schritt 1: HBaseAdmin instanziieren

Diese Klasse benötigt das Konfigurationsobjekt als Parameter. Instanziieren Sie daher zunächst die Konfigurationsklasse und übergeben Sie diese Instanz an HBaseAdmin.

Configuration conf = HBaseConfiguration.create();
HBaseAdmin admin = new HBaseAdmin(conf);

Schritt 2: Erstellen Sie TableDescriptor

HTableDescriptor ist eine Klasse, die zur gehört org.apache.hadoop.hbaseKlasse. Diese Klasse ist wie ein Container mit Tabellennamen und Spaltenfamilien.

//creating table descriptor
HTableDescriptor table = new HTableDescriptor(toBytes("Table name"));

//creating column family descriptor
HColumnDescriptor family = new HColumnDescriptor(toBytes("column family"));

//adding coloumn family to HTable
table.addFamily(family);

Schritt 3: Durch Admin ausführen

Verwendung der createTable() Methode von HBaseAdmin Klasse können Sie die erstellte Tabelle im Admin-Modus ausführen.

admin.createTable(table);

Im Folgenden finden Sie das vollständige Programm zum Erstellen einer Tabelle über den Administrator.

import java.io.IOException;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.TableName;

import org.apache.hadoop.conf.Configuration;

public class CreateTable {
      
   public static void main(String[] args) throws IOException {

      // Instantiating configuration class
      Configuration con = HBaseConfiguration.create();

      // Instantiating HbaseAdmin class
      HBaseAdmin admin = new HBaseAdmin(con);

      // Instantiating table descriptor class
      HTableDescriptor tableDescriptor = new
      HTableDescriptor(TableName.valueOf("emp"));

      // Adding column families to table descriptor
      tableDescriptor.addFamily(new HColumnDescriptor("personal"));
      tableDescriptor.addFamily(new HColumnDescriptor("professional"));

      // Execute the table through admin
      admin.createTable(tableDescriptor);
      System.out.println(" Table created ");
   }
}

Kompilieren Sie das obige Programm und führen Sie es wie unten gezeigt aus.

$javac CreateTable.java
$java CreateTable

Folgendes sollte die Ausgabe sein:

Table created

Auflisten einer Tabelle mit HBase Shell

list ist der Befehl, mit dem alle Tabellen in HBase aufgelistet werden. Unten ist die Syntax des Befehls list angegeben.

hbase(main):001:0 > list

Wenn Sie diesen Befehl eingeben und in der HBase-Eingabeaufforderung ausführen, wird die Liste aller Tabellen in HBase angezeigt (siehe unten).

hbase(main):001:0> list
TABLE
emp

Hier können Sie eine Tabelle mit dem Namen emp beobachten.

Auflisten von Tabellen mit der Java-API

Führen Sie die folgenden Schritte aus, um die Liste der Tabellen von HBase mithilfe der Java-API abzurufen.

Schritt 1

Sie haben eine Methode namens listTables() in der Klasse HBaseAdminum die Liste aller Tabellen in HBase zu erhalten. Diese Methode gibt ein Array von zurückHTableDescriptor Objekte.

//creating a configuration object
Configuration conf = HBaseConfiguration.create();

//Creating HBaseAdmin object
HBaseAdmin admin = new HBaseAdmin(conf);

//Getting all the list of tables using HBaseAdmin object
HTableDescriptor[] tableDescriptor = admin.listTables();

Schritt 2

Sie können die Länge der erhalten HTableDescriptor[] Array mit der Längenvariablen des HTableDescriptorKlasse. Rufen Sie den Namen der Tabellen von diesem Objekt mit abgetNameAsString()Methode. Führen Sie die 'for'-Schleife mit diesen aus und rufen Sie die Liste der Tabellen in HBase ab.

Im Folgenden finden Sie das Programm zum Auflisten aller Tabellen in HBase mithilfe der Java-API.

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.client.HBaseAdmin;

public class ListTables {

   public static void main(String args[])throws MasterNotRunningException, IOException{

      // Instantiating a configuration class
      Configuration conf = HBaseConfiguration.create();

      // Instantiating HBaseAdmin class
      HBaseAdmin admin = new HBaseAdmin(conf);

      // Getting all the list of tables using HBaseAdmin object
      HTableDescriptor[] tableDescriptor = admin.listTables();

      // printing all the table names.
      for (int i=0; i<tableDescriptor.length;i++ ){
         System.out.println(tableDescriptor[i].getNameAsString());
      }
   
   }
}

Kompilieren Sie das obige Programm und führen Sie es wie unten gezeigt aus.

$javac ListTables.java
$java ListTables

Folgendes sollte die Ausgabe sein:

User
emp

Deaktivieren einer Tabelle mit HBase Shell

Um eine Tabelle zu löschen oder ihre Einstellungen zu ändern, müssen Sie sie zuerst mit dem Befehl disable deaktivieren. Sie können es mit dem Befehl enable wieder aktivieren.

Im Folgenden wird die Syntax zum Deaktivieren einer Tabelle angegeben:

disable ‘emp’

Beispiel

Im Folgenden finden Sie ein Beispiel, das zeigt, wie eine Tabelle deaktiviert wird.

hbase(main):025:0> disable 'emp'
0 row(s) in 1.2760 seconds

Überprüfung

Nachdem Sie die Tabelle deaktiviert haben, können Sie ihre Existenz weiterhin erkennen list und existsBefehle. Sie können es nicht scannen. Es wird Ihnen der folgende Fehler angezeigt.

hbase(main):028:0> scan 'emp'
ROW         COLUMN + CELL
ERROR: emp is disabled.

ist behindert

Mit diesem Befehl wird ermittelt, ob eine Tabelle deaktiviert ist. Die Syntax lautet wie folgt.

hbase> is_disabled 'table name'

Das folgende Beispiel überprüft, ob die Tabelle mit dem Namen emp deaktiviert ist. Wenn es deaktiviert ist, wird true zurückgegeben, und wenn nicht, wird false zurückgegeben.

hbase(main):031:0> is_disabled 'emp'
true
0 row(s) in 0.0440 seconds

Alle deaktivieren

Dieser Befehl wird verwendet, um alle Tabellen zu deaktivieren, die dem angegebenen regulären Ausdruck entsprechen. Die Syntax fürdisable_all Befehl ist unten angegeben.

hbase> disable_all 'r.*'

Angenommen, es gibt 5 Tabellen in HBase, nämlich Raja, Rajani, Rajendra, Rajesh und Raju. Der folgende Code deaktiviert alle Tabellen, die mit beginnenraj.

hbase(main):002:07> disable_all 'raj.*'
raja
rajani
rajendra
rajesh
raju
Disable the above 5 tables (y/n)?
y
5 tables successfully disabled

Deaktivieren Sie eine Tabelle mithilfe der Java-API

Um zu überprüfen, ob eine Tabelle deaktiviert ist, isTableDisabled() Methode verwendet wird und um eine Tabelle zu deaktivieren, disableTable()Methode wird verwendet. Diese Methoden gehören zu denHBaseAdminKlasse. Führen Sie die folgenden Schritte aus, um eine Tabelle zu deaktivieren.

Schritt 1

Instanziieren HBaseAdmin Klasse wie unten gezeigt.

// Creating configuration object
Configuration conf = HBaseConfiguration.create();

// Creating HBaseAdmin object
HBaseAdmin admin = new HBaseAdmin(conf);

Schritt 2

Überprüfen Sie, ob die Tabelle mit deaktiviert ist isTableDisabled() Methode wie unten gezeigt.

Boolean b = admin.isTableDisabled("emp");

Schritt 3

Wenn die Tabelle nicht deaktiviert ist, deaktivieren Sie sie wie unten gezeigt.

if(!b){
   admin.disableTable("emp");
   System.out.println("Table disabled");
}

Im Folgenden finden Sie das vollständige Programm zum Überprüfen, ob die Tabelle deaktiviert ist. Wenn nicht, wie man es deaktiviert.

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.client.HBaseAdmin;

public class DisableTable{

   public static void main(String args[]) throws MasterNotRunningException, IOException{

      // Instantiating configuration class
      Configuration conf = HBaseConfiguration.create();
 
      // Instantiating HBaseAdmin class
      HBaseAdmin admin = new HBaseAdmin(conf);

      // Verifying weather the table is disabled
      Boolean bool = admin.isTableDisabled("emp");
      System.out.println(bool);

      // Disabling the table using HBaseAdmin object
      if(!bool){
         admin.disableTable("emp");
         System.out.println("Table disabled");
      }
   }
}

Kompilieren Sie das obige Programm und führen Sie es wie unten gezeigt aus.

$javac DisableTable.java
$java DsiableTable

Folgendes sollte die Ausgabe sein:

false
Table disabled

Aktivieren einer Tabelle mit HBase Shell

Syntax zum Aktivieren einer Tabelle:

enable ‘emp’

Beispiel

Im Folgenden finden Sie ein Beispiel zum Aktivieren einer Tabelle.

hbase(main):005:0> enable 'emp'
0 row(s) in 0.4580 seconds

Überprüfung

Nachdem Sie die Tabelle aktiviert haben, scannen Sie sie. Wenn Sie das Schema sehen können, wurde Ihre Tabelle erfolgreich aktiviert.

hbase(main):006:0> scan 'emp'

   ROW                        COLUMN + CELL

1 column = personal data:city, timestamp = 1417516501, value = hyderabad

1 column = personal data:name, timestamp = 1417525058, value = ramu

1 column = professional data:designation, timestamp = 1417532601, value = manager

1 column = professional data:salary, timestamp = 1417524244109, value = 50000

2 column = personal data:city, timestamp = 1417524574905, value = chennai

2 column = personal data:name, timestamp = 1417524556125, value = ravi

2 column = professional data:designation, timestamp = 14175292204, value = sr:engg

2 column = professional data:salary, timestamp = 1417524604221, value = 30000 

3 column = personal data:city, timestamp = 1417524681780, value = delhi

3 column = personal data:name, timestamp = 1417524672067, value = rajesh

3 column = professional data:designation, timestamp = 14175246987, value = jr:engg

3 column = professional data:salary, timestamp = 1417524702514, value = 25000

3 row(s) in 0.0400 seconds

aktiviert

Mit diesem Befehl wird ermittelt, ob eine Tabelle aktiviert ist. Die Syntax lautet wie folgt:

hbase> is_enabled 'table name'

Der folgende Code überprüft, ob die Tabelle benannt ist empaktiviert. Wenn es aktiviert ist, wird true zurückgegeben, und wenn nicht, wird false zurückgegeben.

hbase(main):031:0> is_enabled 'emp'
true
0 row(s) in 0.0440 seconds

Aktivieren Sie eine Tabelle mithilfe der Java-API

Um zu überprüfen, ob eine Tabelle aktiviert ist, isTableEnabled()Methode wird verwendet; und um eine Tabelle zu aktivieren,enableTable()Methode wird verwendet. Diese Methoden gehören zuHBaseAdminKlasse. Führen Sie die folgenden Schritte aus, um eine Tabelle zu aktivieren.

Schritt 1

Instanziieren HBaseAdmin Klasse wie unten gezeigt.

// Creating configuration object
Configuration conf = HBaseConfiguration.create();

// Creating HBaseAdmin object
HBaseAdmin admin = new HBaseAdmin(conf);

Schritt 2

Überprüfen Sie, ob die Tabelle mit aktiviert ist isTableEnabled() Methode wie unten gezeigt.

Boolean bool = admin.isTableEnabled("emp");

Schritt 3

Wenn die Tabelle nicht deaktiviert ist, deaktivieren Sie sie wie unten gezeigt.

if(!bool){
   admin.enableTable("emp");
   System.out.println("Table enabled");
}

Im Folgenden finden Sie das vollständige Programm, mit dem überprüft werden kann, ob die Tabelle aktiviert ist, und wenn dies nicht der Fall ist, wie sie aktiviert wird.

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.client.HBaseAdmin;

public class EnableTable{

   public static void main(String args[]) throws MasterNotRunningException, IOException{

      // Instantiating configuration class
      Configuration conf = HBaseConfiguration.create();

      // Instantiating HBaseAdmin class
      HBaseAdmin admin = new HBaseAdmin(conf);

      // Verifying whether the table is disabled
      Boolean bool = admin.isTableEnabled("emp");
      System.out.println(bool);

      // Enabling the table using HBaseAdmin object
      if(!bool){
         admin.enableTable("emp");
         System.out.println("Table Enabled");
      }
   }
}

Kompilieren Sie das obige Programm und führen Sie es wie unten gezeigt aus.

$javac EnableTable.java
$java EnableTable

Folgendes sollte die Ausgabe sein:

false
Table Enabled

beschreiben

Dieser Befehl gibt die Beschreibung der Tabelle zurück. Die Syntax lautet wie folgt:

hbase> describe 'table name'

Unten ist die Ausgabe des Befehls description auf dem emp Tabelle.

hbase(main):006:0> describe 'emp'
   DESCRIPTION
      ENABLED
      
'emp', {NAME ⇒ 'READONLY', DATA_BLOCK_ENCODING ⇒ 'NONE', BLOOMFILTER
⇒ 'ROW', REPLICATION_SCOPE ⇒ '0', COMPRESSION ⇒ 'NONE', VERSIONS ⇒
'1', TTL true

⇒ 'FOREVER', MIN_VERSIONS ⇒ '0', KEEP_DELETED_CELLS ⇒ 'false',
BLOCKSIZE ⇒ '65536', IN_MEMORY ⇒ 'false', BLOCKCACHE ⇒ 'true'}, {NAME
⇒ 'personal

data', DATA_BLOCK_ENCODING ⇒ 'NONE', BLOOMFILTER ⇒ 'ROW',
REPLICATION_SCOPE ⇒ '0', VERSIONS ⇒ '5', COMPRESSION ⇒ 'NONE',
MIN_VERSIONS ⇒ '0', TTL

⇒ 'FOREVER', KEEP_DELETED_CELLS ⇒ 'false', BLOCKSIZE ⇒ '65536',
IN_MEMORY ⇒ 'false', BLOCKCACHE ⇒ 'true'}, {NAME ⇒ 'professional
data', DATA_BLO

CK_ENCODING ⇒ 'NONE', BLOOMFILTER ⇒ 'ROW', REPLICATION_SCOPE ⇒ '0',
VERSIONS ⇒ '1', COMPRESSION ⇒ 'NONE', MIN_VERSIONS ⇒ '0', TTL ⇒
'FOREVER', K

EEP_DELETED_CELLS ⇒ 'false', BLOCKSIZE ⇒ '65536', IN_MEMORY ⇒
'false', BLOCKCACHE ⇒ 'true'}, {NAME ⇒ 'table_att_unset',
DATA_BLOCK_ENCODING ⇒ 'NO 

NE', BLOOMFILTER ⇒ 'ROW', REPLICATION_SCOPE ⇒ '0', COMPRESSION ⇒
'NONE', VERSIONS ⇒ '1', TTL ⇒ 'FOREVER', MIN_VERSIONS ⇒ '0',
KEEP_DELETED_CELLS

⇒ 'false', BLOCKSIZE ⇒ '6

ändern

Ändern ist der Befehl, mit dem Änderungen an einer vorhandenen Tabelle vorgenommen werden. Mit diesem Befehl können Sie die maximale Anzahl von Zellen einer Spaltenfamilie ändern, Tabellenbereichsoperatoren festlegen und löschen sowie eine Spaltenfamilie aus einer Tabelle löschen.

Ändern der maximalen Anzahl von Zellen einer Spaltenfamilie

Im Folgenden wird die Syntax zum Ändern der maximalen Anzahl von Zellen einer Spaltenfamilie angegeben.

hbase> alter 't1', NAME ⇒ 'f1', VERSIONS ⇒ 5

Im folgenden Beispiel wird die maximale Anzahl von Zellen auf 5 festgelegt.

hbase(main):003:0> alter 'emp', NAME ⇒ 'personal data', VERSIONS ⇒ 5
Updating all regions with the new schema...
0/1 regions updated.
1/1 regions updated.
Done.
0 row(s) in 2.3050 seconds

Tabellenbereichsoperatoren

Mit alter können Sie Tabellenbereichsoperatoren wie MAX_FILESIZE, READONLY, MEMSTORE_FLUSHSIZE, DEFERRED_LOG_FLUSH usw. festlegen und entfernen.

Schreibgeschützt einstellen

Nachstehend ist die Syntax angegeben, mit der eine Tabelle schreibgeschützt wird.

hbase>alter 't1', READONLY(option)

Im folgenden Beispiel haben wir die gemacht emp Tabelle schreibgeschützt.

hbase(main):006:0> alter 'emp', READONLY
Updating all regions with the new schema...
0/1 regions updated.
1/1 regions updated.
Done.
0 row(s) in 2.2140 seconds

Entfernen von Tabellenbereichsoperatoren

Wir können auch die Tabellenbereichsoperatoren entfernen. Im Folgenden wird die Syntax zum Entfernen von 'MAX_FILESIZE' aus der emp-Tabelle angegeben.

hbase> alter 't1', METHOD ⇒ 'table_att_unset', NAME ⇒ 'MAX_FILESIZE'

Löschen einer Spaltenfamilie

Mit alter können Sie auch eine Spaltenfamilie löschen. Im Folgenden wird die Syntax zum Löschen einer Spaltenfamilie mit alter angegeben.

hbase> alter ‘ table name ’, ‘delete’ ⇒ ‘ column family ’

Im Folgenden finden Sie ein Beispiel zum Löschen einer Spaltenfamilie aus der Tabelle 'emp'.

Angenommen, in HBase gibt es eine Tabelle mit dem Namen employee. Es enthält folgende Daten:

hbase(main):006:0> scan 'employee'

   ROW                   COLUMN+CELL

row1 column = personal:city, timestamp = 1418193767, value = hyderabad

row1 column = personal:name, timestamp = 1418193806767, value = raju

row1 column = professional:designation, timestamp = 1418193767, value = manager

row1 column = professional:salary, timestamp = 1418193806767, value = 50000

1 row(s) in 0.0160 seconds

Löschen wir nun die benannte Spaltenfamilie professional mit dem Befehl alter.

hbase(main):007:0> alter 'employee','delete'⇒'professional'
Updating all regions with the new schema...
0/1 regions updated.
1/1 regions updated.
Done.
0 row(s) in 2.2380 seconds

Überprüfen Sie nun die Daten in der Tabelle nach der Änderung. Beachten Sie, dass die Spaltenfamilie 'professional' nicht mehr ist, da wir sie gelöscht haben.

hbase(main):003:0> scan 'employee'
   ROW             COLUMN + CELL
row1 column = personal:city, timestamp = 14181936767, value = hyderabad

row1 column = personal:name, timestamp = 1418193806767, value = raju

1 row(s) in 0.0830 seconds

Hinzufügen einer Spaltenfamilie mithilfe der Java-API

Mit der Methode können Sie einer Tabelle eine Spaltenfamilie hinzufügen addColumn() von HBAseAdminKlasse. Führen Sie die folgenden Schritte aus, um einer Tabelle eine Spaltenfamilie hinzuzufügen.

Schritt 1

Instanziieren Sie die HBaseAdmin Klasse.

// Instantiating configuration object
Configuration conf = HBaseConfiguration.create();

// Instantiating HBaseAdmin class
HBaseAdmin admin = new HBaseAdmin(conf);

Schritt 2

Das addColumn() Methode erfordert einen Tabellennamen und ein Objekt von HColumnDescriptorKlasse. Instanziieren Sie daher dieHColumnDescriptorKlasse. Der Konstruktor vonHColumnDescriptorerfordert wiederum einen Spaltenfamiliennamen, der hinzugefügt werden soll. Hier fügen wir der vorhandenen Tabelle "Mitarbeiter" eine Spaltenfamilie mit dem Namen "contactDetails" hinzu.

// Instantiating columnDescriptor object

HColumnDescriptor columnDescriptor = new
HColumnDescriptor("contactDetails");

Schritt 3

Fügen Sie die Spaltenfamilie mit hinzu addColumnMethode. Übergeben Sie den Tabellennamen und dieHColumnDescriptor Klassenobjekt als Parameter für diese Methode.

// Adding column family
admin.addColumn("employee", new HColumnDescriptor("columnDescriptor"));

Im Folgenden finden Sie das vollständige Programm zum Hinzufügen einer Spaltenfamilie zu einer vorhandenen Tabelle.

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.client.HBaseAdmin;

public class AddColoumn{

   public static void main(String args[]) throws MasterNotRunningException, IOException{

      // Instantiating configuration class.
      Configuration conf = HBaseConfiguration.create();

      // Instantiating HBaseAdmin class.
      HBaseAdmin admin = new HBaseAdmin(conf);

      // Instantiating columnDescriptor class
      HColumnDescriptor columnDescriptor = new HColumnDescriptor("contactDetails");
      
      // Adding column family
      admin.addColumn("employee", columnDescriptor);
      System.out.println("coloumn added");
   }
}

Kompilieren Sie das obige Programm und führen Sie es wie unten gezeigt aus.

$javac AddColumn.java
$java AddColumn

Die obige Kompilierung funktioniert nur, wenn Sie den Klassenpfad in „ .bashrc”. Wenn nicht, befolgen Sie die unten angegebenen Schritte, um Ihre Java-Datei zu kompilieren.

//if "/home/home/hadoop/hbase " is your Hbase home folder then.

$javac -cp /home/hadoop/hbase/lib/*: Demo.java

Wenn alles gut geht, wird die folgende Ausgabe erzeugt:

column added

Löschen einer Spaltenfamilie mithilfe der Java-API

Mit der Methode können Sie eine Spaltenfamilie aus einer Tabelle löschen deleteColumn() von HBAseAdminKlasse. Führen Sie die folgenden Schritte aus, um einer Tabelle eine Spaltenfamilie hinzuzufügen.

Schritt 1

Instanziieren Sie die HBaseAdmin Klasse.

// Instantiating configuration object
Configuration conf = HBaseConfiguration.create();

// Instantiating HBaseAdmin class
HBaseAdmin admin = new HBaseAdmin(conf);

Schritt 2

Fügen Sie die Spaltenfamilie mit hinzu deleteColumn()Methode. Übergeben Sie den Tabellennamen und den Spaltenfamiliennamen als Parameter an diese Methode.

// Deleting column family
admin.deleteColumn("employee", "contactDetails");

Im Folgenden finden Sie das vollständige Programm zum Löschen einer Spaltenfamilie aus einer vorhandenen Tabelle.

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.client.HBaseAdmin;

public class DeleteColoumn{

   public static void main(String args[]) throws MasterNotRunningException, IOException{

      // Instantiating configuration class.
      Configuration conf = HBaseConfiguration.create();

      // Instantiating HBaseAdmin class.
      HBaseAdmin admin = new HBaseAdmin(conf);

      // Deleting a column family
      admin.deleteColumn("employee","contactDetails");
      System.out.println("coloumn deleted"); 
   }
}

Kompilieren Sie das obige Programm und führen Sie es wie unten gezeigt aus.

$javac DeleteColumn.java $java DeleteColumn

Folgendes sollte die Ausgabe sein:

column deleted

Vorhandensein einer Tabelle unter Verwendung der HBase-Shell

Sie können die Existenz einer Tabelle mit der überprüfen existsBefehl. Das folgende Beispiel zeigt, wie dieser Befehl verwendet wird.

hbase(main):024:0> exists 'emp'
Table emp does exist

0 row(s) in 0.0750 seconds

==================================================================

hbase(main):015:0> exists 'student'
Table student does not exist

0 row(s) in 0.0480 seconds

Überprüfen der Existenz einer Tabelle mithilfe der Java-API

Sie können das Vorhandensein einer Tabelle in HBase mithilfe von überprüfen tableExists() Methode der HBaseAdmin Klasse. Führen Sie die folgenden Schritte aus, um das Vorhandensein einer Tabelle in HBase zu überprüfen.

Schritt 1

Instantiate the HBaseAdimn class

// Instantiating configuration object
Configuration conf = HBaseConfiguration.create();

// Instantiating HBaseAdmin class
HBaseAdmin admin = new HBaseAdmin(conf);

Schritt 2

Überprüfen Sie die Existenz der Tabelle mit der tableExists( ) Methode.

Im Folgenden finden Sie das Java-Programm zum Testen der Existenz einer Tabelle in HBase mithilfe der Java-API.

import java.io.IOException;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.client.HBaseAdmin;

public class TableExists{

   public static void main(String args[])throws IOException{

      // Instantiating configuration class
      Configuration conf = HBaseConfiguration.create();

      // Instantiating HBaseAdmin class
      HBaseAdmin admin = new HBaseAdmin(conf);

      // Verifying the existance of the table
      boolean bool = admin.tableExists("emp");
      System.out.println( bool);
   }
}

Kompilieren Sie das obige Programm und führen Sie es wie unten gezeigt aus.

$javac TableExists.java $java TableExists

Folgendes sollte die Ausgabe sein:

true

Löschen einer Tabelle mit HBase Shell

Verwendung der dropBefehl können Sie eine Tabelle löschen. Bevor Sie eine Tabelle löschen, müssen Sie sie deaktivieren.

hbase(main):018:0> disable 'emp'
0 row(s) in 1.4580 seconds

hbase(main):019:0> drop 'emp'
0 row(s) in 0.3060 seconds

Überprüfen Sie mit dem Befehl exist, ob die Tabelle gelöscht wurde.

hbase(main):020:07gt; exists 'emp'
Table emp does not exist
0 row(s) in 0.0730 seconds

drop_all

Dieser Befehl wird verwendet, um die Tabellen zu löschen, die dem im Befehl angegebenen "regulären Ausdruck" entsprechen. Die Syntax lautet wie folgt:

hbase> drop_all ‘t.*’

Note: Bevor Sie eine Tabelle löschen, müssen Sie sie deaktivieren.

Beispiel

Angenommen, es gibt Tabellen mit den Namen Raja, Rajani, Rajendra, Rajesh und Raju.

hbase(main):017:0> list
TABLE
raja
rajani
rajendra 
rajesh
raju
9 row(s) in 0.0270 seconds

Alle diese Tabellen beginnen mit den Buchstaben raj. Lassen Sie uns zunächst alle diese Tabellen mit dem deaktivierendisable_all Befehl wie unten gezeigt.

hbase(main):002:0> disable_all 'raj.*'
raja
rajani
rajendra
rajesh
raju
Disable the above 5 tables (y/n)?
y
5 tables successfully disabled

Jetzt können Sie alle mit dem löschen drop_all Befehl wie unten angegeben.

hbase(main):018:0> drop_all 'raj.*'
raja
rajani
rajendra
rajesh
raju
Drop the above 5 tables (y/n)?
y
5 tables successfully dropped

Löschen einer Tabelle mit der Java-API

Sie können eine Tabelle mit dem löschen deleteTable() Methode in der HBaseAdminKlasse. Führen Sie die folgenden Schritte aus, um eine Tabelle mithilfe der Java-API zu löschen.

Schritt 1

Instanziieren Sie die HBaseAdmin-Klasse.

// creating a configuration object
Configuration conf = HBaseConfiguration.create();

// Creating HBaseAdmin object
HBaseAdmin admin = new HBaseAdmin(conf);

Schritt 2

Deaktivieren Sie die Tabelle mit disableTable() Methode der HBaseAdmin Klasse.

admin.disableTable("emp1");

Schritt 3

Löschen Sie nun die Tabelle mit dem deleteTable() Methode der HBaseAdmin Klasse.

admin.deleteTable("emp12");

Im Folgenden finden Sie das vollständige Java-Programm zum Löschen einer Tabelle in HBase.

import java.io.IOException;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.client.HBaseAdmin;

public class DeleteTable {

   public static void main(String[] args) throws IOException {

      // Instantiating configuration class
      Configuration conf = HBaseConfiguration.create();

      // Instantiating HBaseAdmin class
      HBaseAdmin admin = new HBaseAdmin(conf);

      // disabling table named emp
      admin.disableTable("emp12");

      // Deleting emp
      admin.deleteTable("emp12");
      System.out.println("Table deleted");
   }
}

Kompilieren Sie das obige Programm und führen Sie es wie unten gezeigt aus.

$javac DeleteTable.java $java DeleteTable

Folgendes sollte die Ausgabe sein:

Table deleted

Ausfahrt

Sie verlassen die Shell, indem Sie das eingeben exit Befehl.

hbase(main):021:0> exit

HBase stoppen

Um HBase zu stoppen, navigieren Sie zum HBase-Basisordner und geben Sie den folgenden Befehl ein.

./bin/stop-hbase.sh

Beenden von HBase mithilfe der Java-API

Sie können die HBase mit dem herunterfahren shutdown() Methode der HBaseAdminKlasse. Führen Sie die folgenden Schritte aus, um HBase herunterzufahren:

Schritt 1

Instanziieren Sie die HbaseAdmin-Klasse.

// Instantiating configuration object
Configuration conf = HBaseConfiguration.create();

// Instantiating HBaseAdmin object
HBaseAdmin admin = new HBaseAdmin(conf);

Schritt 2

Fahren Sie die HBase mit dem herunter shutdown() Methode der HBaseAdmin Klasse.

admin.shutdown();

Im Folgenden finden Sie das Programm zum Stoppen der HBase.

import java.io.IOException;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.client.HBaseAdmin;

public class ShutDownHbase{

   public static void main(String args[])throws IOException {

      // Instantiating configuration class
      Configuration conf = HBaseConfiguration.create();

      // Instantiating HBaseAdmin class
      HBaseAdmin admin = new HBaseAdmin(conf);

      // Shutting down HBase
      System.out.println("Shutting down hbase");
      admin.shutdown();
   }
}

Kompilieren Sie das obige Programm und führen Sie es wie unten gezeigt aus.

$javac ShutDownHbase.java $java ShutDownHbase

Folgendes sollte die Ausgabe sein:

Shutting down hbase

In diesem Kapitel wird die Java-Client-API für HBase beschrieben, die für die Ausführung verwendet wird CRUDOperationen an HBase-Tabellen. HBase ist in Java geschrieben und verfügt über eine Java Native API. Daher bietet es programmgesteuerten Zugriff auf Data Manipulation Language (DML).

Klassen-HBase-Konfiguration

Fügt einer Konfiguration HBase-Konfigurationsdateien hinzu. Diese Klasse gehört zurorg.apache.hadoop.hbase Paket.

Methoden und Beschreibung

S.No. Methoden und Beschreibung
1

static org.apache.hadoop.conf.Configuration create()

Diese Methode erstellt eine Konfiguration mit HBase-Ressourcen.

Klasse HTable

HTable ist eine interne HBase-Klasse, die eine HBase-Tabelle darstellt. Es ist eine Implementierung einer Tabelle, die zur Kommunikation mit einer einzelnen HBase-Tabelle verwendet wird. Diese Klasse gehört zurorg.apache.hadoop.hbase.client Klasse.

Konstruktoren

S.No. Konstruktoren und Beschreibung
1

HTable()

2

HTable(TableName tableName, ClusterConnection connection, ExecutorService pool)

Mit diesem Konstruktor können Sie ein Objekt erstellen, um auf eine HBase-Tabelle zuzugreifen.

Methoden und Beschreibung

S.No. Methoden und Beschreibung
1

void close()

Gibt alle Ressourcen der HTable frei.

2

void delete(Delete delete)

Löscht die angegebenen Zellen / Zeilen.

3

boolean exists(Get get)

Mit dieser Methode können Sie die Existenz von Spalten in der Tabelle testen, wie von Get angegeben.

4

Result get(Get get)

Ruft bestimmte Zellen aus einer bestimmten Zeile ab.

5

org.apache.hadoop.conf.Configuration getConfiguration()

Gibt das von dieser Instanz verwendete Konfigurationsobjekt zurück.

6

TableName getName()

Gibt die Tabellennameninstanz dieser Tabelle zurück.

7

HTableDescriptor getTableDescriptor()

Gibt den Tabellendeskriptor für diese Tabelle zurück.

8

byte[] getTableName()

Gibt den Namen dieser Tabelle zurück.

9

void put(Put put)

Mit dieser Methode können Sie Daten in die Tabelle einfügen.

Klasse Put

Diese Klasse wird verwendet, um Put-Operationen für eine einzelne Zeile auszuführen. Es gehört zu denorg.apache.hadoop.hbase.client Paket.

Konstruktoren

S.No. Konstruktoren und Beschreibung
1

Put(byte[] row)

Mit diesem Konstruktor können Sie eine Put-Operation für die angegebene Zeile erstellen.

2

Put(byte[] rowArray, int rowOffset, int rowLength)

Mit diesem Konstruktor können Sie eine Kopie des übergebenen Zeilenschlüssels erstellen, um lokal zu bleiben.

3

Put(byte[] rowArray, int rowOffset, int rowLength, long ts)

Mit diesem Konstruktor können Sie eine Kopie des übergebenen Zeilenschlüssels erstellen, um lokal zu bleiben.

4

Put(byte[] row, long ts)

Mit diesem Konstruktor können wir eine Put-Operation für die angegebene Zeile unter Verwendung eines bestimmten Zeitstempels erstellen.

Methoden

S.No. Methoden und Beschreibung
1

Put add(byte[] family, byte[] qualifier, byte[] value)

Fügt der Put-Operation die angegebene Spalte und den angegebenen Wert hinzu.

2

Put add(byte[] family, byte[] qualifier, long ts, byte[] value)

Fügt die angegebene Spalte und den angegebenen Wert mit dem angegebenen Zeitstempel als Version zu dieser Put-Operation hinzu.

3

Put add(byte[] family, ByteBuffer qualifier, long ts, ByteBuffer value)

Fügt die angegebene Spalte und den angegebenen Wert mit dem angegebenen Zeitstempel als Version zu dieser Put-Operation hinzu.

4

Put add(byte[] family, ByteBuffer qualifier, long ts, ByteBuffer value)

Fügt die angegebene Spalte und den angegebenen Wert mit dem angegebenen Zeitstempel als Version zu dieser Put-Operation hinzu.

Klasse Get

Diese Klasse wird verwendet, um Get-Operationen für eine einzelne Zeile auszuführen. Diese Klasse gehört zurorg.apache.hadoop.hbase.client Paket.

Konstrukteur

S.No. Konstruktor und Beschreibung
1

Get(byte[] row)

Mit diesem Konstruktor können Sie eine Get-Operation für die angegebene Zeile erstellen.

2 Get(Get get)

Methoden

S.No. Methoden und Beschreibung
1

Get addColumn(byte[] family, byte[] qualifier)

Ruft die Spalte aus der bestimmten Familie mit dem angegebenen Qualifikationsmerkmal ab.

2

Get addFamily(byte[] family)

Ruft alle Spalten aus der angegebenen Familie ab.

Klasse löschen

Diese Klasse wird verwendet, um Löschvorgänge für eine einzelne Zeile auszuführen. Um eine ganze Zeile zu löschen, instanziieren Sie ein Löschobjekt mit der zu löschenden Zeile. Diese Klasse gehört zurorg.apache.hadoop.hbase.client Paket.

Konstrukteur

S.No. Konstruktor und Beschreibung
1

Delete(byte[] row)

Erstellt einen Löschvorgang für die angegebene Zeile.

2

Delete(byte[] rowArray, int rowOffset, int rowLength)

Erstellt einen Löschvorgang für die angegebene Zeile und den angegebenen Zeitstempel.

3

Delete(byte[] rowArray, int rowOffset, int rowLength, long ts)

Erstellt einen Löschvorgang für die angegebene Zeile und den angegebenen Zeitstempel.

4

Delete(byte[] row, long timestamp)

Erstellt einen Löschvorgang für die angegebene Zeile und den angegebenen Zeitstempel.

Methoden

S.No. Methoden und Beschreibung
1

Delete addColumn(byte[] family, byte[] qualifier)

Löscht die neueste Version der angegebenen Spalte.

2

Delete addColumns(byte[] family, byte[] qualifier, long timestamp)

Löscht alle Versionen der angegebenen Spalte mit einem Zeitstempel, der kleiner oder gleich dem angegebenen Zeitstempel ist.

3

Delete addFamily(byte[] family)

Löscht alle Versionen aller Spalten der angegebenen Familie.

4

Delete addFamily(byte[] family, long timestamp)

Löscht alle Spalten der angegebenen Familie mit einem Zeitstempel, der kleiner oder gleich dem angegebenen Zeitstempel ist.

Klassenergebnis

Diese Klasse wird verwendet, um ein einzelnes Zeilenergebnis einer Get- oder Scan-Abfrage abzurufen.

Konstruktoren

S.No. Konstruktoren
1

Result()

Mit diesem Konstruktor können Sie ein leeres Ergebnis ohne KeyValue-Nutzdaten erstellen. Gibt null zurück, wenn Sie raw Cells () aufrufen.

Methoden

S.No. Methoden und Beschreibung
1

byte[] getValue(byte[] family, byte[] qualifier)

Diese Methode wird verwendet, um die neueste Version der angegebenen Spalte abzurufen.

2

byte[] getRow()

Diese Methode wird verwendet, um den Zeilenschlüssel abzurufen, der der Zeile entspricht, aus der dieses Ergebnis erstellt wurde.

Einfügen von Daten mit HBase Shell

Dieses Kapitel zeigt, wie Sie Daten in einer HBase-Tabelle erstellen. Zum Erstellen von Daten in einer HBase-Tabelle werden die folgenden Befehle und Methoden verwendet:

  • put Befehl,

  • add() Methode von Put Klasse und

  • put() Methode von HTable Klasse.

Als Beispiel erstellen wir die folgende Tabelle in HBase.

Verwenden von putBefehl können Sie Zeilen in eine Tabelle einfügen. Die Syntax lautet wie folgt:

put ’<table name>’,’row1’,’<colfamily:colname>’,’<value>’

Einfügen der ersten Zeile

Fügen wir die Werte der ersten Zeile wie unten gezeigt in die Tabelle emp ein.

hbase(main):005:0> put 'emp','1','personal data:name','raju'
0 row(s) in 0.6600 seconds
hbase(main):006:0> put 'emp','1','personal data:city','hyderabad'
0 row(s) in 0.0410 seconds
hbase(main):007:0> put 'emp','1','professional
data:designation','manager'
0 row(s) in 0.0240 seconds
hbase(main):007:0> put 'emp','1','professional data:salary','50000'
0 row(s) in 0.0240 seconds

Fügen Sie die verbleibenden Zeilen mit dem Befehl put auf die gleiche Weise ein. Wenn Sie die gesamte Tabelle einfügen, erhalten Sie die folgende Ausgabe.

hbase(main):022:0> scan 'emp'

   ROW                        COLUMN+CELL
1 column=personal data:city, timestamp=1417524216501, value=hyderabad

1 column=personal data:name, timestamp=1417524185058, value=ramu

1 column=professional data:designation, timestamp=1417524232601,

 value=manager
 
1 column=professional data:salary, timestamp=1417524244109, value=50000

2 column=personal data:city, timestamp=1417524574905, value=chennai

2 column=personal data:name, timestamp=1417524556125, value=ravi

2 column=professional data:designation, timestamp=1417524592204,

 value=sr:engg
 
2 column=professional data:salary, timestamp=1417524604221, value=30000

3 column=personal data:city, timestamp=1417524681780, value=delhi

3 column=personal data:name, timestamp=1417524672067, value=rajesh

3 column=professional data:designation, timestamp=1417524693187,

value=jr:engg
3 column=professional data:salary, timestamp=1417524702514,

value=25000

Einfügen von Daten mithilfe der Java-API

Sie können Daten mit dem in Hbase einfügen add() Methode der PutKlasse. Sie können es mit dem speichernput() Methode der HTableKlasse. Diese Klassen gehören zu denorg.apache.hadoop.hbase.clientPaket. Nachfolgend sind die Schritte zum Erstellen von Daten in einer HBase-Tabelle aufgeführt.

Schritt 1: Instanziieren Sie die Konfigurationsklasse

Das ConfigurationKlasse fügt ihrem Objekt HBase-Konfigurationsdateien hinzu. Sie können ein Konfigurationsobjekt mit dem erstellencreate() Methode der HbaseConfiguration Klasse wie unten gezeigt.

Configuration conf = HbaseConfiguration.create();

Schritt 2: Instanziieren Sie die HTable-Klasse

Sie haben eine Klasse namens HTable, eine Implementierung von Table in HBase. Diese Klasse wird zur Kommunikation mit einer einzelnen HBase-Tabelle verwendet. Während der Instanziierung dieser Klasse werden Konfigurationsobjekt und Tabellenname als Parameter akzeptiert. Sie können die HTable-Klasse wie unten gezeigt instanziieren.

HTable hTable = new HTable(conf, tableName);

Schritt 3: Instanziieren Sie die PutClass

Um Daten in eine HBase-Tabelle einzufügen, muss die add()Methode und ihre Varianten werden verwendet. Diese Methode gehört zuPutInstanziieren Sie daher die Put-Klasse. Diese Klasse benötigt den Zeilennamen, in den Sie die Daten einfügen möchten, im Zeichenfolgenformat. Sie können das instanziierenPut Klasse wie unten gezeigt.

Put p = new Put(Bytes.toBytes("row1"));

Schritt 4: InsertData

Das add() Methode von PutKlasse wird zum Einfügen von Daten verwendet. Es sind 3-Byte-Arrays erforderlich, die die Spaltenfamilie, das Spaltenqualifikationsmerkmal (Spaltenname) und den einzufügenden Wert darstellen. Fügen Sie Daten mit der add () -Methode wie unten gezeigt in die HBase-Tabelle ein.

p.add(Bytes.toBytes("coloumn family "), Bytes.toBytes("column
name"),Bytes.toBytes("value"));

Schritt 5: Speichern Sie die Daten in der Tabelle

Speichern Sie nach dem Einfügen der erforderlichen Zeilen die Änderungen, indem Sie die put-Instanz zum hinzufügen put() Methode der HTable-Klasse wie unten gezeigt.

hTable.put(p);

Schritt 6: Schließen Sie die HTable-Instanz

Schließen Sie nach dem Erstellen von Daten in der HBase-Tabelle die HTable Instanz mit dem close() Methode wie unten gezeigt.

hTable.close();

Im Folgenden finden Sie das vollständige Programm zum Erstellen von Daten in der HBase-Tabelle.

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.util.Bytes;

public class InsertData{

   public static void main(String[] args) throws IOException {

      // Instantiating Configuration class
      Configuration config = HBaseConfiguration.create();

      // Instantiating HTable class
      HTable hTable = new HTable(config, "emp");

      // Instantiating Put class
      // accepts a row name.
      Put p = new Put(Bytes.toBytes("row1")); 

      // adding values using add() method
      // accepts column family name, qualifier/row name ,value
      p.add(Bytes.toBytes("personal"),
      Bytes.toBytes("name"),Bytes.toBytes("raju"));

      p.add(Bytes.toBytes("personal"),
      Bytes.toBytes("city"),Bytes.toBytes("hyderabad"));

      p.add(Bytes.toBytes("professional"),Bytes.toBytes("designation"),
      Bytes.toBytes("manager"));

      p.add(Bytes.toBytes("professional"),Bytes.toBytes("salary"),
      Bytes.toBytes("50000"));
      
      // Saving the put Instance to the HTable.
      hTable.put(p);
      System.out.println("data inserted");
      
      // closing HTable
      hTable.close();
   }
}

Kompilieren Sie das obige Programm und führen Sie es wie unten gezeigt aus.

$javac InsertData.java $java InsertData

Folgendes sollte die Ausgabe sein:

data inserted

Aktualisieren von Daten mit HBase Shell

Sie können einen vorhandenen Zellenwert mithilfe von aktualisieren putBefehl. Befolgen Sie dazu einfach dieselbe Syntax und geben Sie Ihren neuen Wert wie unten gezeigt an.

put ‘table name’,’row ’,'Column family:column name',’new value’

Der neu angegebene Wert ersetzt den vorhandenen Wert und aktualisiert die Zeile.

Beispiel

Angenommen, in HBase gibt es eine Tabelle mit dem Namen emp mit den folgenden Daten.

hbase(main):003:0> scan 'emp'
 ROW              COLUMN + CELL
row1 column = personal:name, timestamp = 1418051555, value = raju
row1 column = personal:city, timestamp = 1418275907, value = Hyderabad
row1 column = professional:designation, timestamp = 14180555,value = manager
row1 column = professional:salary, timestamp = 1418035791555,value = 50000
1 row(s) in 0.0100 seconds

Mit dem folgenden Befehl wird der Stadtwert des Mitarbeiters mit dem Namen "Raju" in Delhi aktualisiert.

hbase(main):002:0> put 'emp','row1','personal:city','Delhi'
0 row(s) in 0.0400 seconds

Die aktualisierte Tabelle sieht wie folgt aus: Sie können beobachten, dass die Stadt Raju in "Delhi" geändert wurde.

hbase(main):003:0> scan 'emp'
  ROW          COLUMN + CELL
row1 column = personal:name, timestamp = 1418035791555, value = raju
row1 column = personal:city, timestamp = 1418274645907, value = Delhi
row1 column = professional:designation, timestamp = 141857555,value = manager
row1 column = professional:salary, timestamp = 1418039555, value = 50000
1 row(s) in 0.0100 seconds

Aktualisieren von Daten mithilfe der Java-API

Sie können die Daten in einer bestimmten Zelle mithilfe von aktualisieren put()Methode. Führen Sie die folgenden Schritte aus, um einen vorhandenen Zellenwert einer Tabelle zu aktualisieren.

Schritt 1: Instanziieren Sie die Konfigurationsklasse

ConfigurationKlasse fügt ihrem Objekt HBase-Konfigurationsdateien hinzu. Sie können ein Konfigurationsobjekt mit dem erstellencreate() Methode der HbaseConfiguration Klasse wie unten gezeigt.

Configuration conf = HbaseConfiguration.create();

Schritt 2: Instanziieren Sie die HTable-Klasse

Sie haben eine Klasse namens HTable, eine Implementierung von Table in HBase. Diese Klasse wird zur Kommunikation mit einer einzelnen HBase-Tabelle verwendet. Beim Instanziieren dieser Klasse werden das Konfigurationsobjekt und der Tabellenname als Parameter akzeptiert. Sie können die HTable-Klasse wie unten gezeigt instanziieren.

HTable hTable = new HTable(conf, tableName);

Schritt 3: Instanziieren Sie die Put-Klasse

Um Daten in die HBase-Tabelle einzufügen, muss die add()Methode und ihre Varianten werden verwendet. Diese Methode gehört zuPut, instanziieren Sie daher die putKlasse. Diese Klasse benötigt den Zeilennamen, in den Sie die Daten einfügen möchten, im Zeichenfolgenformat. Sie können das instanziierenPut Klasse wie unten gezeigt.

Put p = new Put(Bytes.toBytes("row1"));

Schritt 4: Aktualisieren Sie eine vorhandene Zelle

Das add() Methode von PutKlasse wird zum Einfügen von Daten verwendet. Es sind 3-Byte-Arrays erforderlich, die die Spaltenfamilie, das Spaltenqualifikationsmerkmal (Spaltenname) und den einzufügenden Wert darstellen. Fügen Sie Daten mit der in die HBase-Tabelle einadd() Methode wie unten gezeigt.

p.add(Bytes.toBytes("coloumn family "), Bytes.toBytes("column
name"),Bytes.toBytes("value"));
p.add(Bytes.toBytes("personal"),
Bytes.toBytes("city"),Bytes.toBytes("Delih"));

Schritt 5: Speichern Sie die Daten in der Tabelle

Speichern Sie nach dem Einfügen der erforderlichen Zeilen die Änderungen, indem Sie die put-Instanz zum hinzufügen put() Methode der HTable-Klasse wie unten gezeigt.

hTable.put(p);

Schritt 6: Schließen Sie die HTable-Instanz

Schließen Sie nach dem Erstellen von Daten in der HBase-Tabelle die HTable Instanz mit der Methode close () wie unten gezeigt.

hTable.close();

Im Folgenden finden Sie das vollständige Programm zum Aktualisieren von Daten in einer bestimmten Tabelle.

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.util.Bytes;

public class UpdateData{

   public static void main(String[] args) throws IOException {

      // Instantiating Configuration class
      Configuration config = HBaseConfiguration.create();

      // Instantiating HTable class
      HTable hTable = new HTable(config, "emp");

      // Instantiating Put class
      //accepts a row name
      Put p = new Put(Bytes.toBytes("row1"));

      // Updating a cell value
      p.add(Bytes.toBytes("personal"),
      Bytes.toBytes("city"),Bytes.toBytes("Delih"));

      // Saving the put Instance to the HTable.
      hTable.put(p);
      System.out.println("data Updated");

      // closing HTable
      hTable.close();
   }
}

Kompilieren Sie das obige Programm und führen Sie es wie unten gezeigt aus.

$javac UpdateData.java $java UpdateData

Folgendes sollte die Ausgabe sein:

data Updated

Daten mit HBase Shell lesen

Das get Befehl und die get() Methode von HTableKlasse werden verwendet, um Daten aus einer Tabelle in HBase zu lesen. Verwenden vongetBefehl können Sie jeweils eine einzelne Datenzeile abrufen. Die Syntax lautet wie folgt:

get ’<table name>’,’row1’

Beispiel

Das folgende Beispiel zeigt, wie der Befehl get verwendet wird. Scannen wir die erste Reihe desemp Tabelle.

hbase(main):012:0> get 'emp', '1'

   COLUMN                     CELL
   
personal : city timestamp = 1417521848375, value = hyderabad

personal : name timestamp = 1417521785385, value = ramu

professional: designation timestamp = 1417521885277, value = manager

professional: salary timestamp = 1417521903862, value = 50000

4 row(s) in 0.0270 seconds

Lesen einer bestimmten Spalte

Im Folgenden wird die Syntax zum Lesen einer bestimmten Spalte mit dem angegeben get Methode.

hbase> get 'table name', ‘rowid’, {COLUMN ⇒ ‘column family:column name ’}

Beispiel

Im Folgenden finden Sie ein Beispiel zum Lesen einer bestimmten Spalte in der HBase-Tabelle.

hbase(main):015:0> get 'emp', 'row1', {COLUMN ⇒ 'personal:name'}
  COLUMN                CELL  
personal:name timestamp = 1418035791555, value = raju
1 row(s) in 0.0080 seconds

Lesen von Daten mit der Java-API

Verwenden Sie die, um Daten aus einer HBase-Tabelle zu lesen get()Methode der HTable-Klasse. Diese Methode erfordert eine Instanz vonGetKlasse. Führen Sie die folgenden Schritte aus, um Daten aus der HBase-Tabelle abzurufen.

Schritt 1: Instanziieren Sie die Konfigurationsklasse

ConfigurationKlasse fügt ihrem Objekt HBase-Konfigurationsdateien hinzu. Sie können ein Konfigurationsobjekt mit dem erstellencreate() Methode der HbaseConfiguration Klasse wie unten gezeigt.

Configuration conf = HbaseConfiguration.create();

Schritt 2: Instanziieren Sie die HTable-Klasse

Sie haben eine Klasse namens HTable, eine Implementierung von Table in HBase. Diese Klasse wird zur Kommunikation mit einer einzelnen HBase-Tabelle verwendet. Beim Instanziieren dieser Klasse werden das Konfigurationsobjekt und der Tabellenname als Parameter akzeptiert. Sie können die HTable-Klasse wie unten gezeigt instanziieren.

HTable hTable = new HTable(conf, tableName);

Schritt 3: Instanziieren Sie die Get-Klasse

Sie können Daten aus der HBase-Tabelle mit dem abrufen get() Methode der HTableKlasse. Diese Methode extrahiert eine Zelle aus einer bestimmten Zeile. Es erfordert eineGetKlassenobjekt als Parameter. Erstellen Sie es wie unten gezeigt.

Get get = new Get(toBytes("row1"));

Schritt 4: Lesen Sie die Daten

Beim Abrufen von Daten können Sie eine einzelne Zeile nach ID oder eine Reihe von Zeilen nach einer Reihe von Zeilen-IDs abrufen oder eine gesamte Tabelle oder eine Teilmenge von Zeilen scannen.

Sie können HBase-Tabellendaten mit den Methodenvarianten hinzufügen in abrufen Get Klasse.

Verwenden Sie die folgende Methode, um eine bestimmte Spalte aus einer bestimmten Spaltenfamilie abzurufen.

get.addFamily(personal)

Verwenden Sie die folgende Methode, um alle Spalten aus einer bestimmten Spaltenfamilie abzurufen.

get.addColumn(personal, name)

Schritt 5: Holen Sie sich das Ergebnis

Holen Sie sich das Ergebnis, indem Sie Ihre übergeben Get Klasseninstanz zur get-Methode der HTableKlasse. Diese Methode gibt die zurückResultKlassenobjekt, das das angeforderte Ergebnis enthält. Unten ist die Verwendung von angegebenget() Methode.

Result result = table.get(g);

Schritt 6: Lesen von Werten aus der Ergebnisinstanz

Das Result Klasse bietet die getValue()Methode zum Lesen der Werte aus seiner Instanz. Verwenden Sie es wie unten gezeigt, um die Werte aus dem zu lesenResult Beispiel.

byte [] value = result.getValue(Bytes.toBytes("personal"),Bytes.toBytes("name"));
byte [] value1 = result.getValue(Bytes.toBytes("personal"),Bytes.toBytes("city"));

Im Folgenden finden Sie das vollständige Programm zum Lesen von Werten aus einer HBase-Tabelle.

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.util.Bytes;

public class RetriveData{

   public static void main(String[] args) throws IOException, Exception{
   
      // Instantiating Configuration class
      Configuration config = HBaseConfiguration.create();

      // Instantiating HTable class
      HTable table = new HTable(config, "emp");

      // Instantiating Get class
      Get g = new Get(Bytes.toBytes("row1"));

      // Reading the data
      Result result = table.get(g);

      // Reading values from Result class object
      byte [] value = result.getValue(Bytes.toBytes("personal"),Bytes.toBytes("name"));

      byte [] value1 = result.getValue(Bytes.toBytes("personal"),Bytes.toBytes("city"));

      // Printing the values
      String name = Bytes.toString(value);
      String city = Bytes.toString(value1);
      
      System.out.println("name: " + name + " city: " + city);
   }
}

Kompilieren Sie das obige Programm und führen Sie es wie unten gezeigt aus.

$javac RetriveData.java $java RetriveData

Folgendes sollte die Ausgabe sein:

name: Raju city: Delhi

Löschen einer bestimmten Zelle in einer Tabelle

Verwendung der deleteBefehl können Sie eine bestimmte Zelle in einer Tabelle löschen. Die Syntax vondelete Befehl ist wie folgt:

delete ‘<table name>’, ‘<row>’, ‘<column name >’, ‘<time stamp>’

Beispiel

Hier ist ein Beispiel zum Löschen einer bestimmten Zelle. Hier löschen wir das Gehalt.

hbase(main):006:0> delete 'emp', '1', 'personal data:city',
1417521848375
0 row(s) in 0.0060 seconds

Löschen aller Zellen in einer Tabelle

Mit dem Befehl "deleteall" können Sie alle Zellen in einer Reihe löschen. Im Folgenden ist die Syntax des Befehls deleteall angegeben.

deleteall ‘<table name>’, ‘<row>’,

Beispiel

Hier ist ein Beispiel für den Befehl "deleteall", bei dem alle Zellen von Zeile 1 der Tabelle emp gelöscht werden.

hbase(main):007:0> deleteall 'emp','1'
0 row(s) in 0.0240 seconds

Überprüfen Sie die Tabelle mit dem scanBefehl. Eine Momentaufnahme der Tabelle nach dem Löschen der Tabelle ist unten angegeben.

hbase(main):022:0> scan 'emp'

ROW                  COLUMN + CELL

2 column = personal data:city, timestamp = 1417524574905, value = chennai 

2 column = personal data:name, timestamp = 1417524556125, value = ravi

2 column = professional data:designation, timestamp = 1417524204, value = sr:engg

2 column = professional data:salary, timestamp = 1417524604221, value = 30000

3 column = personal data:city, timestamp = 1417524681780, value = delhi

3 column = personal data:name, timestamp = 1417524672067, value = rajesh
 
3 column = professional data:designation, timestamp = 1417523187, value = jr:engg

3 column = professional data:salary, timestamp = 1417524702514, value = 25000

Daten mit Java API löschen

Sie können Daten aus einer HBase-Tabelle mit dem löschen delete() Methode der HTableKlasse. Führen Sie die folgenden Schritte aus, um Daten aus einer Tabelle zu löschen.

Schritt 1: Instanziieren Sie die Konfigurationsklasse

ConfigurationKlasse fügt ihrem Objekt HBase-Konfigurationsdateien hinzu. Sie können ein Konfigurationsobjekt mit dem erstellencreate() Methode der HbaseConfiguration Klasse wie unten gezeigt.

Configuration conf = HbaseConfiguration.create();

Schritt 2: Instanziieren Sie die HTable-Klasse

Sie haben eine Klasse namens HTable, eine Implementierung von Table in HBase. Diese Klasse wird zur Kommunikation mit einer einzelnen HBase-Tabelle verwendet. Beim Instanziieren dieser Klasse werden das Konfigurationsobjekt und der Tabellenname als Parameter akzeptiert. Sie können die HTable-Klasse wie unten gezeigt instanziieren.

HTable hTable = new HTable(conf, tableName);

Schritt 3: Instanziieren Sie die Löschklasse

Instanziieren Sie die DeleteKlasse durch Übergeben der Zeilen-ID der zu löschenden Zeile im Byte-Array-Format. Sie können diesem Konstruktor auch Zeitstempel und Rowlock übergeben.

Delete delete = new Delete(toBytes("row1"));

Schritt 4: Wählen Sie die zu löschenden Daten aus

Sie können die Daten mit den Löschmethoden von löschen DeleteKlasse. Diese Klasse verfügt über verschiedene Löschmethoden. Wählen Sie die Spalten oder Spaltenfamilien aus, die mit diesen Methoden gelöscht werden sollen. Schauen Sie sich die folgenden Beispiele an, die die Verwendung von Delete-Klassenmethoden zeigen.

delete.deleteColumn(Bytes.toBytes("personal"), Bytes.toBytes("name"));
delete.deleteFamily(Bytes.toBytes("professional"));

Schritt 5: Löschen Sie die Daten

Löschen Sie die ausgewählten Daten, indem Sie die übergeben delete Instanz zum delete() Methode der HTable Klasse wie unten gezeigt.

table.delete(delete);

Schritt 6: Schließen Sie die HTableInstance

Schließen Sie nach dem Löschen der Daten die HTable Beispiel.

table.close();

Im Folgenden finden Sie das vollständige Programm zum Löschen von Daten aus der HBase-Tabelle.

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.util.Bytes;

public class DeleteData {

   public static void main(String[] args) throws IOException {

      // Instantiating Configuration class
      Configuration conf = HBaseConfiguration.create();

      // Instantiating HTable class
      HTable table = new HTable(conf, "employee");

      // Instantiating Delete class
      Delete delete = new Delete(Bytes.toBytes("row1"));
      delete.deleteColumn(Bytes.toBytes("personal"), Bytes.toBytes("name"));
      delete.deleteFamily(Bytes.toBytes("professional"));

      // deleting the data
      table.delete(delete);

      // closing the HTable object
      table.close();
      System.out.println("data deleted.....");
   }
}

Kompilieren Sie das obige Programm und führen Sie es wie unten gezeigt aus.

$javac Deletedata.java $java DeleteData

Folgendes sollte die Ausgabe sein:

data deleted

Scannen mit HBase Shell

Das scanBefehl wird verwendet, um die Daten in HTable anzuzeigen. Mit dem Scan-Befehl können Sie die Tabellendaten abrufen. Die Syntax lautet wie folgt:

scan ‘<table name>’

Beispiel

Das folgende Beispiel zeigt, wie Sie mit dem Befehl scan Daten aus einer Tabelle lesen. Hier lesen wir dieemp Tabelle.

hbase(main):010:0> scan 'emp'

ROW                           COLUMN + CELL

1 column = personal data:city, timestamp = 1417521848375, value = hyderabad
 
1 column = personal data:name, timestamp = 1417521785385, value = ramu

1 column = professional data:designation, timestamp = 1417585277,value = manager

1 column = professional data:salary, timestamp = 1417521903862, value = 50000

1 row(s) in 0.0370 seconds

Scannen mit Java API

Das vollständige Programm zum Scannen der gesamten Tabellendaten mithilfe der Java-API lautet wie folgt.

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.util.Bytes;

import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;


public class ScanTable{

   public static void main(String args[]) throws IOException{

      // Instantiating Configuration class
      Configuration config = HBaseConfiguration.create();

      // Instantiating HTable class
      HTable table = new HTable(config, "emp");

      // Instantiating the Scan class
      Scan scan = new Scan();

      // Scanning the required columns
      scan.addColumn(Bytes.toBytes("personal"), Bytes.toBytes("name"));
      scan.addColumn(Bytes.toBytes("personal"), Bytes.toBytes("city"));

      // Getting the scan result
      ResultScanner scanner = table.getScanner(scan);

      // Reading values from scan result
      for (Result result = scanner.next(); result != null; result = Scanner.next())

      System.out.println("Found row : " + result);
      //closing the scanner
      scanner.close();
   }
}

Kompilieren Sie das obige Programm und führen Sie es wie unten gezeigt aus.

$javac ScanTable.java $java ScanTable

Folgendes sollte die Ausgabe sein:

Found row :
keyvalues={row1/personal:city/1418275612888/Put/vlen=5/mvcc=0,
row1/personal:name/1418035791555/Put/vlen=4/mvcc=0}

Anzahl

Sie können die Anzahl der Zeilen einer Tabelle mit dem zählen countBefehl. Die Syntax lautet wie folgt:

count ‘<table name>’

Nach dem Löschen der ersten Zeile enthält die Tabelle emp zwei Zeilen. Überprüfen Sie es wie unten gezeigt.

hbase(main):023:0> count 'emp'
2 row(s) in 0.090 seconds
⇒ 2

kürzen

Dieser Befehl deaktiviert das Löschen und erstellt eine Tabelle neu. Die Syntax vontruncate ist wie folgt:

hbase> truncate 'table name'

Beispiel

Im Folgenden finden Sie ein Beispiel für einen Befehl zum Abschneiden. Hier haben wir das abgeschnittenemp Tabelle.

hbase(main):011:0> truncate 'emp'
Truncating 'one' table (it may take a while):
   - Disabling table...
   - Truncating table...
   0 row(s) in 1.5950 seconds

Verwenden Sie nach dem Abschneiden der Tabelle den Scan-Befehl, um dies zu überprüfen. Sie erhalten eine Tabelle mit null Zeilen.

hbase(main):017:0> scan ‘emp’
ROW                  COLUMN + CELL
0 row(s) in 0.3110 seconds

Wir können Benutzern in HBase Berechtigungen erteilen und widerrufen. Aus Sicherheitsgründen gibt es drei Befehle: Erteilen, Widerrufen und Benutzerberechtigung.

gewähren

Das grantDer Befehl gewährt einem bestimmten Benutzer bestimmte Rechte wie Lesen, Schreiben, Ausführen und Verwalten einer Tabelle. Die Syntax des Befehls grant lautet wie folgt:

hbase> grant <user> <permissions> [<table> [<column family> [&ltcolumn; qualifier>]]

Wir können einem Benutzer null oder mehr Berechtigungen aus dem Satz von RWXCA gewähren, wobei

  • R - steht für Leseberechtigung.
  • W - steht für Schreibberechtigung.
  • X - steht für das Ausführungsrecht.
  • C - steht für das Erstellungsrecht.
  • A - steht für Administratorrechte.

Im Folgenden finden Sie ein Beispiel, das einem Benutzer mit dem Namen "Tutorialspoint" alle Berechtigungen gewährt.

hbase(main):018:0> grant 'Tutorialspoint', 'RWXCA'

widerrufen

Das revokeMit diesem Befehl werden die Zugriffsrechte eines Benutzers für eine Tabelle widerrufen. Die Syntax lautet wie folgt:

hbase> revoke <user>

Der folgende Code widerruft alle Berechtigungen des Benutzers 'Tutorialspoint'.

hbase(main):006:0> revoke 'Tutorialspoint'

user_permission

Mit diesem Befehl werden alle Berechtigungen für eine bestimmte Tabelle aufgelistet. Die Syntax vonuser_permission ist wie folgt:

hbase>user_permission ‘tablename’

Der folgende Code listet alle Benutzerberechtigungen der Tabelle 'emp' auf.

hbase(main):013:0> user_permission 'emp'