HBase - szybki przewodnik

Od 1970 roku RDBMS jest rozwiązaniem do przechowywania danych i problemów związanych z konserwacją. Po pojawieniu się dużych zbiorów danych firmy zdały sobie sprawę z korzyści płynących z przetwarzania dużych zbiorów danych i zaczęły wybierać rozwiązania takie jak Hadoop.

Hadoop używa rozproszonego systemu plików do przechowywania dużych zbiorów danych, a MapReduce do ich przetwarzania. Hadoop wyróżnia się w przechowywaniu i przetwarzaniu ogromnych danych w różnych formatach, takich jak arbitralne, pół- lub nawet nieustrukturyzowane.

Ograniczenia Hadoop

Hadoop może wykonywać tylko przetwarzanie wsadowe, a dostęp do danych będzie możliwy tylko w sposób sekwencyjny. Oznacza to, że trzeba przeszukać cały zbiór danych, nawet dla najprostszych zadań.

Ogromny zbiór danych po przetworzeniu skutkuje kolejnym ogromnym zestawem danych, który również powinien być przetwarzany sekwencyjnie. W tym momencie potrzebne jest nowe rozwiązanie, aby uzyskać dostęp do dowolnego punktu danych w jednej jednostce czasu (dostęp swobodny).

Bazy danych o dostępie swobodnym Hadoop

Aplikacje takie jak HBase, Cassandra, couchDB, Dynamo i MongoDB to tylko niektóre z baz danych, które przechowują ogromne ilości danych i uzyskują do nich dostęp w sposób losowy.

Co to jest HBase?

HBase to rozproszona, zorientowana na kolumny baza danych zbudowana na bazie systemu plików Hadoop. Jest to projekt typu open source, który można skalować w poziomie.

HBase to model danych, który jest podobny do dużego stołu Google, zaprojektowanego w celu zapewnienia szybkiego losowego dostępu do ogromnych ilości ustrukturyzowanych danych. Wykorzystuje odporność na uszkodzenia zapewnianą przez system plików Hadoop (HDFS).

Jest częścią ekosystemu Hadoop, który zapewnia losowy dostęp do odczytu / zapisu w czasie rzeczywistym do danych w systemie plików Hadoop.

Dane można przechowywać w HDFS bezpośrednio lub przez HBase. Konsument danych odczytuje / uzyskuje dostęp do danych w HDFS losowo przy użyciu HBase. HBase znajduje się na szczycie systemu plików Hadoop i zapewnia dostęp do odczytu i zapisu.

HBase i HDFS

HDFS HBase
HDFS to rozproszony system plików odpowiedni do przechowywania dużych plików. HBase to baza danych zbudowana na bazie HDFS.
HDFS nie obsługuje szybkiego wyszukiwania pojedynczych rekordów. HBase zapewnia szybkie wyszukiwanie większych tabel.
Zapewnia przetwarzanie wsadowe z dużym opóźnieniem; brak koncepcji przetwarzania wsadowego. Zapewnia małe opóźnienia w dostępie do pojedynczych wierszy z miliardów rekordów (dostęp losowy).
Zapewnia tylko sekwencyjny dostęp do danych. HBase wewnętrznie używa tabel skrótów i zapewnia dostęp losowy oraz przechowuje dane w indeksowanych plikach HDFS w celu szybszego wyszukiwania.

Mechanizm przechowywania w HBase

HBase to plik column-oriented databasea zawarte w nim tabele są sortowane według wierszy. Schemat tabeli definiuje tylko rodziny kolumn, które są parami klucz-wartość. Tabela ma wiele rodzin kolumn, a każda rodzina kolumn może mieć dowolną liczbę kolumn. Kolejne wartości kolumn są zapisywane w sposób ciągły na dysku. Każda wartość komórki w tabeli ma sygnaturę czasową. Krótko mówiąc, w HBase:

  • Tabela to zbiór wierszy.
  • Wiersz to zbiór rodzin kolumn.
  • Rodzina kolumn to zbiór kolumn.
  • Kolumna to zbiór par klucz-wartość.

Poniżej podano przykładowy schemat tabeli w HBase.

Rowid Rodzina kolumn Rodzina kolumn Rodzina kolumn Rodzina kolumn
col1 col2 col3 col1 col2 col3 col1 col2 col3 col1 col2 col3
1
2
3

Zorientowany na kolumnę i zorientowany na wiersz

Bazy danych zorientowane na kolumny to takie, które przechowują tabele danych jako sekcje kolumn danych, a nie jako wiersze danych. Wkrótce będą mieli rodziny kolumn.

Baza danych zorientowana wierszowo Baza danych zorientowana kolumnowo
Nadaje się do procesu transakcji online (OLTP). Nadaje się do przetwarzania analitycznego online (OLAP).
Takie bazy danych są przeznaczone dla niewielkiej liczby wierszy i kolumn. Bazy danych zorientowane na kolumny są przeznaczone dla dużych tabel.

Poniższy rysunek przedstawia rodziny kolumn w bazie danych zorientowanej na kolumny:

HBase i RDBMS

HBase RDBMS
HBase jest bez schematu, nie ma koncepcji schematu stałych kolumn; definiuje tylko rodziny kolumn. RDBMS jest zarządzany przez swój schemat, który opisuje całą strukturę tabel.
Jest przeznaczony do szerokich stołów. HBase jest skalowalna w poziomie. Jest cienki i przeznaczony do małych stołów. Trudne do skalowania.
W HBase nie ma żadnych transakcji. RDBMS jest transakcyjny.
Ma zdenormalizowane dane. Będzie miał znormalizowane dane.
Sprawdza się zarówno w przypadku danych częściowo ustrukturyzowanych, jak i ustrukturyzowanych. To jest dobre dla danych strukturalnych.

Cechy HBase

  • HBase jest skalowalna liniowo.
  • Posiada automatyczną obsługę awarii.
  • Zapewnia spójne odczytywanie i zapisywanie.
  • Integruje się z Hadoop, zarówno jako źródło, jak i miejsce docelowe.
  • Posiada łatwe API java dla klienta.
  • Zapewnia replikację danych w klastrach.

Gdzie używać HBase

  • Apache HBase służy do losowego dostępu w czasie rzeczywistym do odczytu / zapisu do Big Data.

  • Obsługuje bardzo duże tabele na klastrach standardowego sprzętu.

  • Apache HBase to nierelacyjna baza danych wzorowana na Bigtable firmy Google. Bigtable działa w systemie plików Google, podobnie jak Apache HBase działa na Hadoop i HDFS.

Zastosowania HBase

  • Jest używany wszędzie tam, gdzie istnieje potrzeba pisania ciężkich aplikacji.
  • HBase jest używana wszędzie tam, gdzie potrzebujemy szybkiego losowego dostępu do dostępnych danych.
  • Firmy takie jak Facebook, Twitter, Yahoo i Adobe używają HBase wewnętrznie.

Historia HBase

Rok Zdarzenie
Listopad 2006 Google opublikował artykuł w BigTable.
Luty 2007 Wstępny prototyp HBase został stworzony jako wkład Hadoop.
Paź 2007 Został wydany pierwszy użyteczny HBase wraz z Hadoopem 0.15.0.
Styczeń 2008 HBase stał się podprojektem Hadoop.
Paź 2008 Uwolniono HBase 0.18.1.
Sty 2009 Udostępniono HBase 0.19.0.
Wrzesień 2009 Udostępniono HBase 0.20.0.
Maj 2010 HBase stał się projektem najwyższego poziomu Apache.

W HBase tabele są podzielone na regiony i są obsługiwane przez serwery regionów. Regiony są podzielone pionowo rodzinami kolumn na „Magazyny”. Sklepy są zapisywane jako pliki w HDFS. Poniżej przedstawiono architekturę HBase.

Note: Termin „magazyn” jest używany w odniesieniu do regionów w celu wyjaśnienia struktury pamięci.

HBase ma trzy główne składniki: bibliotekę klienta, serwer główny i serwery regionalne. Serwery regionalne można dodawać lub usuwać zgodnie z wymaganiami.

MasterServer

Serwer główny -

  • Przypisuje regiony do serwerów regionalnych i korzysta z pomocy Apache ZooKeeper w tym zadaniu.

  • Obsługuje równoważenie obciążenia regionów na serwerach regionalnych. Odciąża zajęte serwery i przenosi regiony do mniej zajętych serwerów.

  • Utrzymuje stan klastra poprzez negocjowanie równoważenia obciążenia.

  • Odpowiada za zmiany schematu i inne operacje na metadanych, takie jak tworzenie tabel i rodzin kolumn.

Regiony

Regiony to nic innego jak tabele, które są podzielone i rozmieszczone na serwerach regionu.

Serwer regionalny

Serwery regionu mają regiony, które -

  • Komunikuj się z klientem i obsługuj operacje związane z danymi.
  • Obsługuj żądania odczytu i zapisu dla wszystkich regionów pod nim.
  • Zdecyduj o wielkości regionu, postępując zgodnie z progami wielkości regionu.

Kiedy przyjrzymy się dokładniej serwerowi regionu, zawiera on regiony i sklepy, jak pokazano poniżej:

Sklep zawiera magazyn pamięci i HFiles. Memstore jest jak pamięć podręczna. Wszystko, co jest wprowadzane do HBase, jest tutaj początkowo przechowywane. Później dane są przesyłane i zapisywane w Hfiles jako bloki, a memstore jest opróżniany.

Zookeeper

  • Zookeeper to projekt typu open source, który zapewnia usługi takie jak utrzymywanie informacji konfiguracyjnych, nazewnictwo, zapewnianie rozproszonej synchronizacji itp.

  • Zookeeper ma efemeryczne węzły reprezentujące różne serwery regionu. Serwery główne używają tych węzłów do wykrywania dostępnych serwerów.

  • Oprócz dostępności węzły są również używane do śledzenia awarii serwerów lub partycji sieciowych.

  • Klienci komunikują się z serwerami regionalnymi za pośrednictwem zookeepera.

  • W trybach pseudo i samodzielnych, HBase sam zajmie się zookeeperem.

W tym rozdziale wyjaśniono, jak instaluje się i konfiguruje HBase. Java i Hadoop są wymagane do kontynuowania HBase, więc musisz pobrać i zainstalować Javę i Hadoop w swoim systemie.

Konfiguracja przed instalacją

Przed zainstalowaniem Hadoopa w środowisku Linux musimy skonfigurować Linuksa przy użyciu ssh(Bezpieczna powłoka). Wykonaj poniższe czynności, aby skonfigurować środowisko Linux.

Tworzenie użytkownika

Przede wszystkim zaleca się utworzenie oddzielnego użytkownika dla Hadoop, aby odizolować system plików Hadoop od systemu plików Unix. Wykonaj poniższe czynności, aby utworzyć użytkownika.

  • Otwórz root za pomocą polecenia „su”.
  • Utwórz użytkownika z konta root za pomocą polecenia „useradd username”.
  • Teraz możesz otworzyć istniejące konto użytkownika za pomocą polecenia „su nazwa użytkownika”.

Otwórz terminal Linux i wpisz następujące polecenia, aby utworzyć użytkownika.

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

Konfiguracja SSH i generowanie klucza

Konfiguracja SSH jest wymagana do wykonywania różnych operacji w klastrze, takich jak uruchamianie, zatrzymywanie i rozproszone operacje powłoki demona. Aby uwierzytelnić różnych użytkowników Hadoop, wymagane jest podanie pary kluczy publiczny / prywatny dla użytkownika Hadoop i udostępnienie go różnym użytkownikom.

Poniższe polecenia służą do generowania pary klucz-wartość przy użyciu protokołu SSH. Skopiuj klucze publiczne z formularza id_rsa.pub do Authorized_keys i zapewnij właścicielowi, odpowiednio, uprawnienia do odczytu i zapisu do pliku authorised_keys.

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

Zweryfikuj ssh

ssh localhost

Instalowanie Java

Java jest głównym wymaganiem wstępnym dla Hadoop i HBase. Przede wszystkim powinieneś zweryfikować istnienie javy w twoim systemie używając “java -version”. Składnia polecenia wersji java jest podana poniżej.

$ java -version

Jeśli wszystko działa dobrze, otrzymasz następujący wynik.

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)

Jeśli java nie jest zainstalowana w twoim systemie, wykonaj poniższe kroki, aby zainstalować java.

Krok 1

Pobierz java (JDK <najnowsza wersja> - X64.tar.gz), odwiedzając poniższy link Oracle Java .

Następnie jdk-7u71-linux-x64.tar.gz zostaną pobrane do twojego systemu.

Krok 2

Pobrany plik java znajdziesz zazwyczaj w folderze Pobrane. Sprawdź go i wyodrębnij plikjdk-7u71-linux-x64.gz plik za pomocą następujących poleceń.

$ 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

Krok 3

Aby udostępnić Javę wszystkim użytkownikom, musisz przenieść ją do lokalizacji „/ usr / local /”. Otwórz root i wpisz następujące polecenia.

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

Krok 4

Do konfiguracji PATH i JAVA_HOME zmienne, dodaj następujące polecenia do ~/.bashrc plik.

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

Teraz zastosuj wszystkie zmiany w aktualnie działającym systemie.

$ source ~/.bashrc

Krok 5

Użyj następujących poleceń, aby skonfigurować alternatywy Java:

# 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

Teraz zweryfikuj java -version polecenie z terminala, jak wyjaśniono powyżej.

Pobieranie Hadoop

Po zainstalowaniu javy musisz zainstalować Hadoop. Przede wszystkim sprawdź istnienie Hadoop za pomocą polecenia „Wersja Hadoop”, jak pokazano poniżej.

hadoop version

Jeśli wszystko działa dobrze, otrzymasz następujący wynik.

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

Jeśli Twój system nie może zlokalizować Hadoop, pobierz Hadoop w swoim systemie. Aby to zrobić, postępuj zgodnie z poleceniami podanymi poniżej.

Pobierz i wyodrębnij hadoop-2.6.0 z Apache Software Foundation, używając następujących poleceń.

$ 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

Instalowanie Hadoop

Zainstaluj Hadoop w dowolnym wymaganym trybie. Tutaj demonstrujemy funkcjonalności HBase w trybie pseudo rozproszonym, dlatego zainstaluj Hadoop w trybie pseudo rozproszonym.

Podczas instalacji wykonywane są następujące kroki Hadoop 2.4.1.

Krok 1 - Konfiguracja Hadoop

Możesz ustawić zmienne środowiskowe Hadoop, dołączając następujące polecenia do ~/.bashrc plik.

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

Teraz zastosuj wszystkie zmiany w aktualnie działającym systemie.

$ source ~/.bashrc

Krok 2 - Konfiguracja Hadoop

Wszystkie pliki konfiguracyjne Hadoop można znaleźć w lokalizacji „$ HADOOP_HOME / etc / hadoop”. Musisz wprowadzić zmiany w tych plikach konfiguracyjnych zgodnie z infrastrukturą Hadoop.

$ cd $HADOOP_HOME/etc/hadoop

Aby tworzyć programy Hadoop w Javie, musisz zresetować zmienną środowiskową Java w hadoop-env.sh plik, zastępując JAVA_HOME wartość z lokalizacją Java w systemie.

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

Będziesz musiał edytować następujące pliki, aby skonfigurować Hadoop.

core-site.xml

Plik core-site.xml plik zawiera informacje, takie jak numer portu używanego dla wystąpienia Hadoop, pamięć przydzielona dla systemu plików, limit pamięci do przechowywania danych oraz rozmiar buforów do odczytu / zapisu.

Otwórz plik core-site.xml i dodaj następujące właściwości między tagami <configuration> i </configuration>.

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

hdfs-site.xml

Plik hdfs-site.xml Plik zawiera informacje, takie jak wartość danych replikacji, ścieżka nazwy i ścieżki danych lokalnych systemów plików, w których chcesz przechowywać infrastrukturę Hadoop.

Załóżmy następujące dane.

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

Otwórz ten plik i dodaj następujące właściwości między tagami <configuration>, </configuration>.

<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: W powyższym pliku wszystkie wartości właściwości są zdefiniowane przez użytkownika i można wprowadzać zmiany zgodnie z infrastrukturą Hadoop.

yarn-site.xml

Ten plik służy do konfigurowania przędzy w Hadoop. Otwórz plik yarn-site.xml i dodaj następującą właściwość między <configuration $ gt ;, </ configuration $ gt; tagi w tym pliku.

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

mapred-site.xml

Ten plik jest używany do określenia, której platformy MapReduce używamy. Domyślnie Hadoop zawiera szablon yarn-site.xml. Przede wszystkim należy skopiować plik zmapred-site.xml.template do mapred-site.xml plik za pomocą następującego polecenia.

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

otwarty mapred-site.xml file i dodaj następujące właściwości między tagami <configuration> i </configuration>.

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

Weryfikacja instalacji Hadoop

Poniższe kroki służą do weryfikacji instalacji Hadoop.

Krok 1 - Konfiguracja nazwy węzła

Skonfiguruj namenode za pomocą polecenia „hdfs namenode -format” w następujący sposób.

$ cd ~ $ hdfs namenode -format

Oczekiwany wynik jest następujący.

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
************************************************************/

Krok 2 - Weryfikacja plików dfs na platformie Hadoop

Następujące polecenie służy do uruchamiania dfs. Wykonanie tego polecenia spowoduje uruchomienie systemu plików Hadoop.

$ start-dfs.sh

Oczekiwany wynik jest następujący.

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]

Krok 3 - weryfikacja skryptu przędzy

Następujące polecenie służy do uruchamiania skryptu przędzy. Wykonanie tego polecenia spowoduje uruchomienie demonów przędzy.

$ start-yarn.sh

Oczekiwany wynik jest następujący.

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

Krok 4 - Dostęp do Hadoop w przeglądarce

Domyślny numer portu dostępu do Hadoop to 50070. Użyj następującego adresu URL, aby pobrać usługi Hadoop w przeglądarce.

http://localhost:50070

Krok 5 - Sprawdź wszystkie aplikacje klastra

Domyślny numer portu dostępu do wszystkich aplikacji klastra to 8088. Aby odwiedzić tę usługę, użyj następującego adresu URL.

http://localhost:8088/

Instalowanie HBase

Możemy zainstalować HBase w dowolnym z trzech trybów: trybie autonomicznym, trybie pseudo rozproszonym i trybie pełnej dystrybucji.

Instalowanie HBase w trybie autonomicznym

Pobierz najnowszą stabilną wersję formularza HBase http://www.interior-dsgn.com/apache/hbase/stable/używając polecenia „wget” i wyodrębnij go za pomocą polecenia tar „zxvf”. Zobacz następujące polecenie.

$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

Przejdź do trybu superużytkownika i przenieś folder HBase do / usr / local, jak pokazano poniżej.

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

Konfigurowanie HBase w trybie autonomicznym

Przed kontynuowaniem z HBase, musisz edytować następujące pliki i skonfigurować HBase.

hbase-env.sh

Ustaw java Home dla HBase i otwórz hbase-env.shplik z folderu conf. Edytuj zmienną środowiskową JAVA_HOME i zmień istniejącą ścieżkę do bieżącej zmiennej JAVA_HOME, jak pokazano poniżej.

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

Spowoduje to otwarcie pliku env.sh HBase. Teraz zamień istniejąceJAVA_HOME wartość z aktualną wartością, jak pokazano poniżej.

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

hbase-site.xml

To jest główny plik konfiguracyjny HBase. Ustaw katalog danych na odpowiednią lokalizację, otwierając folder domowy HBase w / usr / local / HBase. W folderze conf znajdziesz kilka plików, otwórz plikhbase-site.xml plik, jak pokazano poniżej.

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

W środku hbase-site.xmlpliku, znajdziesz tagi <configuration> i </configuration>. W nich ustaw katalog HBase pod kluczem właściwości o nazwie „hbase.rootdir”, jak pokazano poniżej.

<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>

Dzięki temu część instalacji i konfiguracji HBase została pomyślnie zakończona. Możemy uruchomić HBase za pomocąstart-hbase.shskrypt znajdujący się w folderze bin HBase. W tym celu otwórz folder domowy HBase i uruchom skrypt startowy HBase, jak pokazano poniżej.

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

Jeśli wszystko pójdzie dobrze, przy próbie uruchomienia skryptu startowego HBase pojawi się komunikat informujący, że HBase został uruchomiony.

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

Instalowanie HBase w trybie pseudo-rozproszonym

Sprawdźmy teraz, jak HBase jest instalowana w trybie pseudo-rozproszonym.

Konfigurowanie HBase

Przed kontynuowaniem z HBase skonfiguruj Hadoop i HDFS w systemie lokalnym lub w systemie zdalnym i upewnij się, że działają. Zatrzymaj HBase, jeśli jest uruchomiona.

hbase-site.xml

Edytuj plik hbase-site.xml, aby dodać następujące właściwości.

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

Wspomni w którym trybie należy uruchomić HBase. W tym samym pliku z lokalnego systemu plików zmień hbase.rootdir, adres instancji HDFS, używając składni hdfs: //// URI. Używamy HDFS na lokalnym hoście na porcie 8030.

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

Uruchamianie HBase

Po zakończeniu konfiguracji przejdź do folderu domowego HBase i uruchom HBase za pomocą następującego polecenia.

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

Note: Przed uruchomieniem HBase upewnij się, że Hadoop jest uruchomiony.

Sprawdzanie katalogu HBase w HDFS

HBase tworzy swój katalog w HDFS. Aby wyświetlić utworzony katalog, przejdź do bin Hadoop i wpisz następujące polecenie.

$ ./bin/hadoop fs -ls /hbase

Jeśli wszystko pójdzie dobrze, otrzymasz następujący wynik.

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

Uruchamianie i zatrzymywanie mistrza

Korzystając z „local-master-backup.sh” możesz uruchomić do 10 serwerów. Otwórz folder domowy HBase, master i wykonaj następujące polecenie, aby go uruchomić.

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

Aby zabić serwer kopii zapasowej, potrzebujesz jego identyfikatora procesu, który będzie przechowywany w pliku o nazwie “/tmp/hbase-USER-X-master.pid.” możesz zabić master kopii zapasowej za pomocą następującego polecenia.

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

Uruchamianie i zatrzymywanie serwerów RegionServers

Możesz uruchomić wiele serwerów regionalnych z jednego systemu za pomocą następującego polecenia.

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

Aby zatrzymać serwer regionu, użyj następującego polecenia.

$ .bin/local-regionservers.sh stop 3

 

Uruchamianie HBaseShell

Po pomyślnym zainstalowaniu HBase możesz uruchomić HBase Shell. Poniżej podano sekwencję kroków, które należy wykonać, aby uruchomić powłokę HBase. Otwórz terminal i zaloguj się jako superużytkownik.

Uruchom system plików Hadoop

Przejrzyj katalog domowy sbin Hadoop i uruchom system plików Hadoop, jak pokazano poniżej.

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

Uruchom HBase

Przejrzyj folder bin katalogu głównego HBase i uruchom HBase.

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

Uruchom serwer główny HBase

To będzie ten sam katalog. Uruchom go, jak pokazano poniżej.

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

Region początkowy

Uruchom serwer regionalny, jak pokazano poniżej.

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

Uruchom HBase Shell

Możesz uruchomić powłokę HBase za pomocą następującego polecenia.

$cd bin
$./hbase shell

Spowoduje to wyświetlenie monitu powłoki HBase, jak pokazano poniżej.

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>

Interfejs sieciowy HBase

Aby uzyskać dostęp do interfejsu internetowego HBase, wpisz następujący adres URL w przeglądarce.

http://localhost:60010

Ten interfejs wyświetla aktualnie uruchomione serwery Region, główne kopie zapasowe i tabele HBase.

Serwery HBase Region i Backup Masters

Tabele HBase

Ustawianie środowiska Java

Możemy również komunikować się z HBase za pomocą bibliotek Java, ale przed uzyskaniem dostępu do HBase za pomocą Java API należy ustawić ścieżkę klas dla tych bibliotek.

Ustawianie ścieżki klas

Przed przystąpieniem do programowania ustaw ścieżkę klasy na biblioteki HBase w .bashrcplik. otwarty.bashrc w dowolnym z edytorów, jak pokazano poniżej.

$ gedit ~/.bashrc

Ustaw w nim ścieżkę klas dla bibliotek HBase (folder lib w HBase), jak pokazano poniżej.

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

Ma to zapobiec wystąpieniu wyjątku „nie znaleziono klasy” podczas uzyskiwania dostępu do bazy danych HBase przy użyciu interfejsu API języka Java.

W tym rozdziale wyjaśniono, jak uruchomić interaktywną powłokę HBase, która jest dostarczana wraz z HBase.

Powłoka HBase

HBase zawiera powłokę, za pomocą której możesz komunikować się z HBase. HBase używa systemu plików Hadoop do przechowywania danych. Będzie miał serwer główny i serwery regionalne. Przechowywanie danych będzie miało postać regionów (tabel). Regiony te zostaną podzielone i przechowywane na serwerach regionalnych.

Serwer główny zarządza tymi serwerami regionu i wszystkie te zadania odbywają się na HDFS. Poniżej podano niektóre polecenia obsługiwane przez HBase Shell.

Ogólne polecenia

  • status - Podaje stan HBase, na przykład liczbę serwerów.

  • version - Udostępnia używaną wersję HBase.

  • table_help - Zapewnia pomoc dotyczącą poleceń odwołań do tabeli.

  • whoami - Zawiera informacje o użytkowniku.

Język definicji danych

To są polecenia, które działają na tabelach w HBase.

  • create - Tworzy tabelę.

  • list - Wyświetla wszystkie tabele w HBase.

  • disable - Wyłącza stół.

  • is_disabled - Sprawdza, czy tabela jest wyłączona.

  • enable - Włącza tabelę.

  • is_enabled - Sprawdza, czy tabela jest włączona.

  • describe - Zawiera opis tabeli.

  • alter - Zmienia stół.

  • exists - Sprawdza, czy istnieje tabela.

  • drop - Upuszcza tabelę z HBase.

  • drop_all - Usuwa tabele zgodne z „wyrażeniem regularnym” podanym w poleceniu.

  • Java Admin API- Przed wszystkimi powyższymi poleceniami Java udostępnia interfejs API administratora umożliwiający osiągnięcie funkcji DDL poprzez programowanie. Podorg.apache.hadoop.hbase.client package, HBaseAdmin i HTableDescriptor to dwie ważne klasy w tym pakiecie, które zapewniają funkcje DDL.

Język manipulacji danymi

  • put - Umieszcza wartość komórki w określonej kolumnie w określonym wierszu w określonej tabeli.

  • get - Pobiera zawartość wiersza lub komórki.

  • delete - Usuwa wartość komórki w tabeli.

  • deleteall - usuwa wszystkie komórki w danym wierszu.

  • scan - Skanuje i zwraca dane tabeli.

  • count - Zlicza i zwraca liczbę wierszy w tabeli.

  • truncate - Wyłącza, upuszcza i odtwarza określoną tabelę.

  • Java client API - Przed wszystkimi powyższymi poleceniami Java udostępnia API klienta do osiągnięcia funkcjonalności DML, CRUD (Create Retrieve Update Delete) i nie tylko poprzez programowanie, w pakiecie org.apache.hadoop.hbase.client. HTable Put i Get to ważne klasy w tym pakiecie.

Uruchamianie powłoki HBase

Aby uzyskać dostęp do powłoki HBase, musisz przejść do folderu domowego HBase.

cd /usr/localhost/
cd Hbase

Możesz uruchomić interaktywną powłokę HBase za pomocą “hbase shell” polecenie, jak pokazano poniżej.

./bin/hbase shell

Jeśli pomyślnie zainstalowałeś HBase w swoim systemie, wyświetli się monit powłoki HBase, jak pokazano poniżej.

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>

Aby w dowolnym momencie wyjść z polecenia powłoki interaktywnej, wpisz exit lub użyj <ctrl + c>. Sprawdź działanie powłoki, zanim przejdziesz dalej. Użyjlist polecenie w tym celu. Listto polecenie używane do pobierania listy wszystkich tabel w HBase. Przede wszystkim sprawdź instalację i konfigurację HBase w systemie za pomocą tego polecenia, jak pokazano poniżej.

hbase(main):001:0> list

Po wpisaniu tego polecenia otrzymasz następujące dane wyjściowe.

hbase(main):001:0> list
TABLE

Ogólne polecenia w HBase to status, wersja, table_help i whoami. W tym rozdziale opisano te polecenia.

status

Ta komenda zwraca stan systemu, w tym szczegółowe informacje o serwerach działających w systemie. Jego składnia jest następująca:

hbase(main):009:0> status

Jeśli wykonasz to polecenie, zwraca następujące dane wyjściowe.

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

wersja

To polecenie zwraca wersję HBase używaną w systemie. Jego składnia jest następująca:

hbase(main):010:0> version

Jeśli wykonasz to polecenie, zwraca następujące dane wyjściowe.

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

table_help

To polecenie prowadzi cię, co i jak używać poleceń odwołujących się do tabeli. Poniżej podano składnię używaną w tym poleceniu.

hbase(main):02:0> table_help

Użycie tego polecenia powoduje wyświetlenie tematów pomocy dotyczących poleceń związanych z tabelami. Poniżej podano częściowe dane wyjściowe tego polecenia.

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'…...

kim jestem

To polecenie zwraca szczegóły użytkownika HBase. Jeśli wykonasz to polecenie, zwraca bieżącego użytkownika HBase, jak pokazano poniżej.

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

HBase jest napisany w Javie, dlatego zapewnia API java do komunikacji z HBase. Java API to najszybszy sposób komunikacji z HBase. Poniżej podano przywoływany interfejs Java Admin API, który obejmuje zadania używane do zarządzania tabelami.

Klasa HBaseAdmin

HBaseAdminto klasa reprezentująca Admin. Ta klasa należy doorg.apache.hadoop.hbase.clientpakiet. Korzystając z tej klasy, możesz wykonywać zadania administratora. Możesz uzyskać instancję administratora za pomocąConnection.getAdmin() metoda.

Metody i opis

S.No. Metody i opis
1

void createTable(HTableDescriptor desc)

Tworzy nową tabelę.

2

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

Tworzy nową tabelę z początkowym zestawem pustych regionów zdefiniowanych przez określone klucze podziału.

3

void deleteColumn(byte[] tableName, String columnName)

Usuwa kolumnę z tabeli.

4

void deleteColumn(String tableName, String columnName)

Usuń kolumnę z tabeli.

5

void deleteTable(String tableName)

Usuwa tabelę.

Deskryptor klasy

Ta klasa zawiera szczegółowe informacje o tabeli HBase, takie jak:

  • deskryptory wszystkich rodzin kolumn,
  • jeśli tabela jest tabelą katalogową,
  • jeśli tabela jest tylko do odczytu,
  • maksymalny rozmiar magazynu pamięci,
  • kiedy powinien nastąpić podział regionu,
  • powiązanych z nim koprocesorów itp.

Konstruktorzy

S.No. Konstruktor i podsumowanie
1

HTableDescriptor(TableName name)

Konstruuje deskryptor tabeli określający obiekt TableName.

Metody i opis

S.No. Metody i opis
1

HTableDescriptor addFamily(HColumnDescriptor family)

Dodaje rodzinę kolumn do podanego deskryptora

Tworzenie tabeli przy użyciu powłoki HBase

Możesz utworzyć tabelę za pomocą createpolecenie, w tym miejscu należy określić nazwę tabeli i nazwę rodziny kolumn. Pliksyntax Tworzenie tabeli w powłoce HBase jest pokazane poniżej.

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

Przykład

Poniżej podano przykładowy schemat tabeli o nazwie emp. Zawiera dwie rodziny kolumn: „dane osobowe” i „dane zawodowe”.

Klucz wiersza dane osobiste dane zawodowe

Możesz utworzyć tę tabelę w powłoce HBase, jak pokazano poniżej.

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

I da ci następujący wynik.

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

Weryfikacja

Możesz sprawdzić, czy tabela została utworzona przy użyciu listpolecenie, jak pokazano poniżej. Tutaj możesz obserwować utworzoną tabelę emp.

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

Tworzenie tabeli przy użyciu interfejsu API języka Java

Możesz utworzyć tabelę w HBase przy użyciu createTable() metoda HBaseAdminklasa. Ta klasa należy doorg.apache.hadoop.hbase.clientpakiet. Poniżej podano kroki, aby utworzyć tabelę w HBase przy użyciu Java API.

Krok 1: Utwórz wystąpienie HBaseAdmin

Ta klasa wymaga obiektu Configuration jako parametru, dlatego początkowo utwórz wystąpienie klasy Configuration i przekaż to wystąpienie do HBaseAdmin.

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

Krok 2: Utwórz TableDescriptor

HTableDescriptor to klasa należąca do klasy org.apache.hadoop.hbaseklasa. Ta klasa jest jak kontener nazw tabel i rodzin kolumn.

//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);

Krok 3: Wykonaj przez administratora

Używając createTable() metoda HBaseAdmin możesz wykonać utworzoną tabelę w trybie administratora.

admin.createTable(table);

Poniżej znajduje się kompletny program do tworzenia tabeli przez administratora.

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 ");
   }
}

Skompiluj i wykonaj powyższy program, jak pokazano poniżej.

$javac CreateTable.java
$java CreateTable

Wynik powinien być następujący:

Table created

Wyświetlanie tabeli przy użyciu powłoki HBase

list to polecenie używane do wyświetlania listy wszystkich tabel w HBase. Poniżej podano składnię polecenia list.

hbase(main):001:0 > list

Po wpisaniu tego polecenia i wykonaniu w wierszu polecenia HBase wyświetli się lista wszystkich tabel w HBase, jak pokazano poniżej.

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

Tutaj możesz obserwować tabelę o nazwie emp.

Listing Tables przy użyciu Java API

Postępuj zgodnie z instrukcjami podanymi poniżej, aby pobrać listę tabel z HBase przy użyciu interfejsu API Java.

Krok 1

Masz metodę o nazwie listTables() w klasie HBaseAdminaby uzyskać listę wszystkich tabel w HBase. Ta metoda zwraca tablicęHTableDescriptor obiekty.

//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();

Krok 2

Możesz uzyskać długość pliku HTableDescriptor[] tablicy przy użyciu zmiennej długości pliku HTableDescriptorklasa. Uzyskaj nazwę tabel z tego obiektu za pomocągetNameAsString()metoda. Uruchom pętlę „for”, korzystając z nich i pobierz listę tabel w HBase.

Poniżej podano program do wyświetlania listy wszystkich tabel w HBase przy użyciu 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());
      }
   
   }
}

Skompiluj i wykonaj powyższy program, jak pokazano poniżej.

$javac ListTables.java
$java ListTables

Wynik powinien być następujący:

User
emp

Wyłączanie tabeli przy użyciu powłoki HBase

Aby usunąć tabelę lub zmienić jej ustawienia, musisz najpierw wyłączyć tabelę za pomocą polecenia disable. Możesz go ponownie włączyć za pomocą polecenia enable.

Poniżej podano składnię wyłączania tabeli:

disable ‘emp’

Przykład

Poniżej podano przykład, który pokazuje, jak wyłączyć tabelę.

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

Weryfikacja

Po wyłączeniu stołu nadal możesz wyczuć jego istnienie list i existspolecenia. Nie możesz go zeskanować. To da następujący błąd.

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

jest niepełnosprawny

To polecenie służy do sprawdzania, czy tabela jest wyłączona. Jego składnia jest następująca.

hbase> is_disabled 'table name'

Poniższy przykład sprawdza, czy tabela o nazwie emp jest wyłączona. Jeśli jest wyłączona, zwróci wartość true, a jeśli nie, zwróci wartość false.

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

Wyłącz wszystkie

To polecenie służy do wyłączania wszystkich tabel pasujących do podanego wyrażenia regularnego. Składniadisable_all polecenie podano poniżej.

hbase> disable_all 'r.*'

Załóżmy, że w HBase jest 5 tabel, mianowicie raja, rajani, rajendra, rajesh i raju. Poniższy kod wyłączy wszystkie tabele zaczynające się odraj.

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

Wyłącz tabelę za pomocą interfejsu API języka Java

Aby sprawdzić, czy tabela jest wyłączona, isTableDisabled() metoda jest używana i wyłącza tabelę, disableTable()metoda jest używana. Te metody należą doHBaseAdminklasa. Wykonaj kroki podane poniżej, aby wyłączyć tabelę.

Krok 1

Utwórz instancję HBaseAdmin klasa, jak pokazano poniżej.

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

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

Krok 2

Sprawdź, czy tabela jest wyłączona za pomocą isTableDisabled() metoda, jak pokazano poniżej.

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

Krok 3

Jeśli tabela nie jest wyłączona, wyłącz ją, jak pokazano poniżej.

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

Poniżej podano kompletny program do weryfikacji, czy tabela jest wyłączona; jeśli nie, jak to wyłączyć.

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");
      }
   }
}

Skompiluj i wykonaj powyższy program, jak pokazano poniżej.

$javac DisableTable.java
$java DsiableTable

Wynik powinien być następujący:

false
Table disabled

Włączanie tabeli przy użyciu powłoki HBase

Składnia włączająca tabelę:

enable ‘emp’

Przykład

Poniżej podano przykład włączenia tabeli.

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

Weryfikacja

Po włączeniu tabeli zeskanuj ją. Jeśli widzisz schemat, Twoja tabela została pomyślnie włączona.

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

jest włączony

To polecenie służy do sprawdzania, czy tabela jest włączona. Jego składnia jest następująca:

hbase> is_enabled 'table name'

Poniższy kod sprawdza, czy tabela o nazwie empjest włączony. Jeśli jest włączona, zwróci wartość true, a jeśli nie, zwróci wartość false.

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

Włącz tabelę za pomocą interfejsu API języka Java

Aby sprawdzić, czy tabela jest włączona, isTableEnabled()stosowana jest metoda; i włączyć tabelę,enableTable()metoda jest używana. Te metody należą doHBaseAdminklasa. Wykonaj czynności podane poniżej, aby włączyć tabelę.

Krok 1

Utwórz instancję HBaseAdmin klasa, jak pokazano poniżej.

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

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

Krok 2

Sprawdź, czy tabela jest włączona przy użyciu isTableEnabled() metoda, jak pokazano poniżej.

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

Krok 3

Jeśli tabela nie jest wyłączona, wyłącz ją, jak pokazano poniżej.

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

Poniżej podano kompletny program do sprawdzenia, czy tablica jest włączona, a jeśli nie, to jak ją włączyć.

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");
      }
   }
}

Skompiluj i wykonaj powyższy program, jak pokazano poniżej.

$javac EnableTable.java
$java EnableTable

Wynik powinien być następujący:

false
Table Enabled

opisać

To polecenie zwraca opis tabeli. Jego składnia jest następująca:

hbase> describe 'table name'

Poniżej podano wynik działania polecenia opisującego w pliku emp stół.

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

zmieniać

Alter to polecenie używane do wprowadzania zmian w istniejącej tabeli. Za pomocą tego polecenia można zmienić maksymalną liczbę komórek w rodzinie kolumn, ustawić i usunąć operatory zakresu tabeli oraz usunąć rodzinę kolumn z tabeli.

Zmiana maksymalnej liczby komórek w rodzinie kolumn

Poniżej podano składnię zmiany maksymalnej liczby komórek w rodzinie kolumn.

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

W poniższym przykładzie maksymalna liczba komórek jest ustawiona na 5.

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

Operatory zakresu tabeli

Za pomocą alter można ustawiać i usuwać operatory zakresu tabeli, takie jak MAX_FILESIZE, READONLY, MEMSTORE_FLUSHSIZE, DEFERRED_LOG_FLUSH itp.

Ustawienie tylko do odczytu

Poniżej podana jest składnia, aby tabela była tylko do odczytu.

hbase>alter 't1', READONLY(option)

W poniższym przykładzie utworzyliśmy plik emp tabela tylko do odczytu.

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

Usuwanie operatorów zakresu tabeli

Możemy również usunąć operatory zakresu tabeli. Poniżej podano składnię usuwania „MAX_FILESIZE” z tabeli emp.

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

Usuwanie rodziny kolumn

Używając alter, możesz również usunąć rodzinę kolumn. Poniżej podano składnię usuwania rodziny kolumn za pomocą funkcji alter.

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

Poniżej podano przykład usuwania rodziny kolumn z tabeli „emp”.

Załóżmy, że w HBase istnieje tabela o nazwie pracownik. Zawiera następujące dane:

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

Teraz usuńmy nazwaną rodzinę kolumn professional używając polecenia 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

Teraz zweryfikuj dane w tabeli po zmianie. Zauważ, że rodzina kolumn „profesjonalny” już nie istnieje, ponieważ ją usunęliśmy.

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

Dodawanie rodziny kolumn za pomocą Java API

Za pomocą tej metody można dodać rodzinę kolumn do tabeli addColumn() z HBAseAdminklasa. Wykonaj czynności podane poniżej, aby dodać rodzinę kolumn do tabeli.

Krok 1

Utwórz wystąpienie HBaseAdmin klasa.

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

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

Krok 2

Plik addColumn() metoda wymaga nazwy tabeli i obiektu HColumnDescriptorklasa. Dlatego utwórz wystąpienieHColumnDescriptorklasa. KonstruktorHColumnDescriptorz kolei wymaga dodania nazwy rodziny kolumn. Tutaj dodajemy rodzinę kolumn o nazwie „contactDetails” do istniejącej tabeli „pracownik”.

// Instantiating columnDescriptor object

HColumnDescriptor columnDescriptor = new
HColumnDescriptor("contactDetails");

Krok 3

Dodaj rodzinę słupów za pomocą addColumnmetoda. Podaj nazwę tabeli iHColumnDescriptor class jako parametry tej metody.

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

Poniżej podano kompletny program dodawania rodziny kolumn do istniejącej tabeli.

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");
   }
}

Skompiluj i wykonaj powyższy program, jak pokazano poniżej.

$javac AddColumn.java
$java AddColumn

Powyższa kompilacja działa tylko wtedy, gdy ustawiłeś ścieżkę klas w „ .bashrc”. Jeśli nie, postępuj zgodnie z procedurą podaną poniżej, aby skompilować plik .java.

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

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

Jeśli wszystko pójdzie dobrze, wygeneruje następujący wynik:

column added

Usuwanie rodziny kolumn za pomocą Java API

Za pomocą tej metody można usunąć rodzinę kolumn z tabeli deleteColumn() z HBAseAdminklasa. Wykonaj czynności podane poniżej, aby dodać rodzinę kolumn do tabeli.

Krok 1

Utwórz wystąpienie HBaseAdmin klasa.

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

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

Krok 2

Dodaj rodzinę słupów za pomocą deleteColumn()metoda. Przekaż nazwę tabeli i nazwę rodziny kolumn jako parametry do tej metody.

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

Poniżej podano kompletny program do usuwania rodziny kolumn z istniejącej tabeli.

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"); 
   }
}

Skompiluj i wykonaj powyższy program, jak pokazano poniżej.

$javac DeleteColumn.java $java DeleteColumn

Wynik powinien być następujący:

column deleted

Istnienie tabeli przy użyciu powłoki HBase

Możesz zweryfikować istnienie tabeli za pomocą existsKomenda. Poniższy przykład pokazuje, jak używać tego polecenia.

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

Weryfikacja istnienia tabeli przy użyciu interfejsu API języka Java

Możesz zweryfikować istnienie tabeli w HBase przy użyciu tableExists() metoda HBaseAdmin klasa. Wykonaj czynności podane poniżej, aby zweryfikować istnienie tabeli w HBase.

Krok 1

Instantiate the HBaseAdimn class

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

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

Krok 2

Sprawdź istnienie tabeli przy użyciu tableExists( ) metoda.

Poniżej podano program java do testowania istnienia tabeli w HBase przy użyciu 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);
   }
}

Skompiluj i wykonaj powyższy program, jak pokazano poniżej.

$javac TableExists.java $java TableExists

Wynik powinien być następujący:

true

Upuszczanie tabeli przy użyciu powłoki HBase

Używając droppolecenie, możesz usunąć tabelę. Przed upuszczeniem stołu musisz go wyłączyć.

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

Sprawdź, czy tabela została usunięta za pomocą polecenia istnieje.

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

drop_all

To polecenie służy do usuwania tabel pasujących do „wyrażenia regularnego” podanego w poleceniu. Jego składnia jest następująca:

hbase> drop_all ‘t.*’

Note: Przed upuszczeniem stołu musisz go wyłączyć.

Przykład

Załóżmy, że istnieją tabele o nazwach raja, rajani, rajendra, rajesh i raju.

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

Wszystkie te tabele zaczynają się od liter raj. Przede wszystkim wyłączmy wszystkie te tabele za pomocą rozszerzeniadisable_all polecenie, jak pokazano poniżej.

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

Teraz możesz usunąć je wszystkie za pomocą drop_all polecenie, jak podano poniżej.

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

Usuwanie tabeli za pomocą Java API

Możesz usunąć tabelę za pomocą deleteTable() metoda w HBaseAdminklasa. Wykonaj poniższe czynności, aby usunąć tabelę za pomocą interfejsu API języka Java.

Krok 1

Utwórz wystąpienie klasy HBaseAdmin.

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

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

Krok 2

Wyłącz tabelę za pomocą disableTable() metoda HBaseAdmin klasa.

admin.disableTable("emp1");

Krok 3

Teraz usuń tabelę za pomocą deleteTable() metoda HBaseAdmin klasa.

admin.deleteTable("emp12");

Poniżej podano kompletny program java do usuwania tabeli w 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");
   }
}

Skompiluj i wykonaj powyższy program, jak pokazano poniżej.

$javac DeleteTable.java $java DeleteTable

Wynik powinien być następujący:

Table deleted

wyjście

Wychodzisz z powłoki, wpisując exit Komenda.

hbase(main):021:0> exit

Zatrzymywanie HBase

Aby zatrzymać HBase, przejdź do folderu domowego HBase i wpisz następujące polecenie.

./bin/stop-hbase.sh

Zatrzymywanie HBase przy użyciu Java API

Możesz zamknąć HBase za pomocą shutdown() metoda HBaseAdminklasa. Wykonaj kroki podane poniżej, aby zamknąć HBase:

Krok 1

Utwórz wystąpienie klasy HbaseAdmin.

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

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

Krok 2

Zamknij HBase za pomocą shutdown() metoda HBaseAdmin klasa.

admin.shutdown();

Poniżej podano program zatrzymania 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();
   }
}

Skompiluj i wykonaj powyższy program, jak pokazano poniżej.

$javac ShutDownHbase.java $java ShutDownHbase

Wynik powinien być następujący:

Shutting down hbase

W tym rozdziale opisano interfejs API klienta Java dla HBase, który jest używany do wykonywania CRUDoperacje na tabelach HBase. HBase jest napisany w języku Java i ma natywny interfejs API języka Java. Dlatego zapewnia programistyczny dostęp do języka manipulacji danymi (DML).

Konfiguracja klasy HBase

Dodaje pliki konfiguracyjne HBase do pliku Configuration. Ta klasa należy doorg.apache.hadoop.hbase pakiet.

Metody i opis

S.No. Metody i opis
1

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

Ta metoda tworzy konfigurację z zasobami HBase.

Klasa HTable

HTable to wewnętrzna klasa HBase, która reprezentuje tabelę HBase. Jest to implementacja tabeli używanej do komunikacji z pojedynczą tabelą HBase. Ta klasa należy doorg.apache.hadoop.hbase.client klasa.

Konstruktorzy

S.No. Konstruktorzy i opis
1

HTable()

2

HTable(TableName tableName, ClusterConnection connection, ExecutorService pool)

Korzystając z tego konstruktora, możesz utworzyć obiekt, aby uzyskać dostęp do tabeli HBase.

Metody i opis

S.No. Metody i opis
1

void close()

Zwalnia wszystkie zasoby HTable.

2

void delete(Delete delete)

Usuwa określone komórki / wiersz.

3

boolean exists(Get get)

Korzystając z tej metody, możesz przetestować istnienie kolumn w tabeli, zgodnie z instrukcją Get.

4

Result get(Get get)

Pobiera określone komórki z danego wiersza.

5

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

Zwraca obiekt Configuration używany przez to wystąpienie.

6

TableName getName()

Zwraca instancję nazwy tabeli dla tej tabeli.

7

HTableDescriptor getTableDescriptor()

Zwraca deskryptor tabeli dla tej tabeli.

8

byte[] getTableName()

Zwraca nazwę tej tabeli.

9

void put(Put put)

Korzystając z tej metody, możesz wstawić dane do tabeli.

Klasa Put

Ta klasa służy do wykonywania operacji wysyłania dla jednego wiersza. Należy doorg.apache.hadoop.hbase.client pakiet.

Konstruktorzy

S.No. Konstruktorzy i opis
1

Put(byte[] row)

Korzystając z tego konstruktora, możesz utworzyć operację wysyłania dla określonego wiersza.

2

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

Korzystając z tego konstruktora, możesz utworzyć kopię przekazanego klucza wiersza, aby zachować lokalny.

3

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

Korzystając z tego konstruktora, możesz utworzyć kopię przekazanego klucza wiersza, aby zachować lokalny.

4

Put(byte[] row, long ts)

Korzystając z tego konstruktora, możemy utworzyć operację Put dla określonego wiersza, używając podanego znacznika czasu.

Metody

S.No. Metody i opis
1

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

Dodaje określoną kolumnę i wartość do tej operacji wysyłania.

2

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

Dodaje określoną kolumnę i wartość z określoną sygnaturą czasową jako wersją do tej operacji Put.

3

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

Dodaje określoną kolumnę i wartość z określoną sygnaturą czasową jako wersją do tej operacji Put.

4

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

Dodaje określoną kolumnę i wartość z określoną sygnaturą czasową jako wersją do tej operacji Put.

Klasa Get

Ta klasa jest używana do wykonywania operacji Get na jednym wierszu. Ta klasa należy doorg.apache.hadoop.hbase.client pakiet.

Konstruktor

S.No. Konstruktor i opis
1

Get(byte[] row)

Korzystając z tego konstruktora, możesz utworzyć operację Get dla określonego wiersza.

2 Get(Get get)

Metody

S.No. Metody i opis
1

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

Pobiera kolumnę z określonej rodziny z określonym kwalifikatorem.

2

Get addFamily(byte[] family)

Pobiera wszystkie kolumny z określonej rodziny.

Klasa Usuń

Ta klasa służy do wykonywania operacji usuwania w jednym wierszu. Aby usunąć cały wiersz, utwórz wystąpienie obiektu Delete z wierszem do usunięcia. Ta klasa należy doorg.apache.hadoop.hbase.client pakiet.

Konstruktor

S.No. Konstruktor i opis
1

Delete(byte[] row)

Tworzy operację usuwania dla określonego wiersza.

2

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

Tworzy operację usuwania dla określonego wiersza i sygnatury czasowej.

3

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

Tworzy operację usuwania dla określonego wiersza i sygnatury czasowej.

4

Delete(byte[] row, long timestamp)

Tworzy operację usuwania dla określonego wiersza i sygnatury czasowej.

Metody

S.No. Metody i opis
1

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

Usuwa najnowszą wersję określonej kolumny.

2

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

Usuwa wszystkie wersje określonej kolumny z sygnaturą czasową mniejszą lub równą podanej sygnaturze czasowej.

3

Delete addFamily(byte[] family)

Usuwa wszystkie wersje wszystkich kolumn z określonej rodziny.

4

Delete addFamily(byte[] family, long timestamp)

Usuwa wszystkie kolumny z określonej rodziny z datownikiem mniejszym lub równym podanej sygnaturze czasowej.

Wynik klasy

Ta klasa służy do uzyskiwania wyniku pojedynczego wiersza zapytania Get lub Scan.

Konstruktorzy

S.No. Konstruktorzy
1

Result()

Za pomocą tego konstruktora można utworzyć pusty wynik Wynik bez ładunku KeyValue; zwraca wartość null, jeśli wywołasz raw Cells ().

Metody

S.No. Metody i opis
1

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

Ta metoda służy do uzyskania najnowszej wersji określonej kolumny.

2

byte[] getRow()

Ta metoda służy do pobierania klucza wiersza, który odpowiada wierszowi, z którego utworzono ten wynik.

Wstawianie danych przy użyciu powłoki HBase

W tym rozdziale pokazano, jak tworzyć dane w tabeli HBase. Aby utworzyć dane w tabeli HBase, używane są następujące polecenia i metody:

  • put Komenda,

  • add() metoda Put klasa i

  • put() metoda HTable klasa.

Jako przykład utworzymy następującą tabelę w HBase.

Za pomocą putpolecenie, możesz wstawiać wiersze do tabeli. Jego składnia jest następująca:

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

Wstawianie pierwszego rzędu

Wstawmy wartości pierwszego wiersza do tabeli emp, jak pokazano poniżej.

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

Wstaw pozostałe wiersze za pomocą polecenia put w ten sam sposób. Jeśli wstawisz całą tabelę, otrzymasz następujący wynik.

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

Wstawianie danych za pomocą Java API

Możesz wstawić dane do Hbase za pomocą add() metoda Putklasa. Możesz go zapisać za pomocąput() metoda HTableklasa. Te klasy należą doorg.apache.hadoop.hbase.clientpakiet. Poniżej podano kroki, aby utworzyć dane w tabeli HBase.

Krok 1: Utwórz wystąpienie klasy konfiguracji

Plik Configurationklasa dodaje pliki konfiguracyjne HBase do swojego obiektu. Możesz utworzyć obiekt konfiguracyjny za pomocącreate() metoda HbaseConfiguration klasa, jak pokazano poniżej.

Configuration conf = HbaseConfiguration.create();

Krok 2: Utwórz wystąpienie klasy HTable

Masz klasę o nazwie HTable, implementacja tabeli w HBase. Ta klasa służy do komunikacji z pojedynczą tabelą HBase. Podczas tworzenia instancji tej klasy przyjmuje obiekt konfiguracyjny i nazwę tabeli jako parametry. Możesz utworzyć instancję klasy HTable, jak pokazano poniżej.

HTable hTable = new HTable(conf, tableName);

Krok 3: Utwórz wystąpienie PutClass

Aby wstawić dane do tabeli HBase, plik add()metoda i jej warianty. Ta metoda należy doPut, dlatego utwórz wystąpienie klasy put. Ta klasa wymaga nazwy wiersza, do którego chcesz wstawić dane, w formacie ciągu. Możesz utworzyć wystąpieniePut klasa, jak pokazano poniżej.

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

Krok 4: InsertData

Plik add() metoda Putklasa służy do wstawiania danych. Wymaga 3-bajtowych tablic reprezentujących odpowiednio rodzinę kolumn, kwalifikator kolumny (nazwę kolumny) i wartość do wstawienia. Wstaw dane do tabeli HBase za pomocą metody add (), jak pokazano poniżej.

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

Krok 5: Zapisz dane w tabeli

Po wstawieniu wymaganych wierszy zapisz zmiany, dodając wystąpienie put do pliku put() metoda klasy HTable, jak pokazano poniżej.

hTable.put(p);

Krok 6: Zamknij instancję HTable

Po utworzeniu danych w tabeli HBase zamknij plik HTable wystąpienie przy użyciu close() metoda, jak pokazano poniżej.

hTable.close();

Poniżej podano kompletny program do tworzenia danych w tabeli HBase.

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();
   }
}

Skompiluj i wykonaj powyższy program, jak pokazano poniżej.

$javac InsertData.java $java InsertData

Wynik powinien być następujący:

data inserted

Aktualizowanie danych przy użyciu powłoki HBase

Możesz zaktualizować istniejącą wartość komórki za pomocą putKomenda. Aby to zrobić, po prostu postępuj zgodnie z tą samą składnią i podaj nową wartość, jak pokazano poniżej.

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

Nowo podana wartość zastępuje istniejącą wartość, aktualizując wiersz.

Przykład

Załóżmy, że w HBase jest tabela o nazwie emp z następującymi danymi.

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

Następujące polecenie zaktualizuje wartość miasta pracownika o imieniu „Raju” do Delhi.

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

Zaktualizowana tabela wygląda następująco, w której można obserwować, że miasto Raju zostało zmienione na „Delhi”.

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

Aktualizacja danych za pomocą Java API

Możesz zaktualizować dane w określonej komórce za pomocą put()metoda. Wykonaj czynności podane poniżej, aby zaktualizować istniejącą wartość komórki tabeli.

Krok 1: Utwórz wystąpienie klasy konfiguracji

Configurationklasa dodaje pliki konfiguracyjne HBase do swojego obiektu. Możesz utworzyć obiekt konfiguracyjny za pomocącreate() metoda HbaseConfiguration klasa, jak pokazano poniżej.

Configuration conf = HbaseConfiguration.create();

Krok 2: Utwórz wystąpienie klasy HTable

Masz klasę o nazwie HTable, implementacja tabeli w HBase. Ta klasa służy do komunikacji z pojedynczą tabelą HBase. Podczas tworzenia instancji tej klasy przyjmuje obiekt konfiguracyjny i nazwę tabeli jako parametry. Możesz utworzyć wystąpienie klasy HTable, jak pokazano poniżej.

HTable hTable = new HTable(conf, tableName);

Krok 3: Utwórz wystąpienie klasy Put

Aby wstawić dane do tabeli HBase, plik add()metoda i jej warianty. Ta metoda należy doPut, dlatego utwórz wystąpienie putklasa. Ta klasa wymaga nazwy wiersza, do którego chcesz wstawić dane, w formacie ciągu. Możesz utworzyć wystąpieniePut klasa, jak pokazano poniżej.

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

Krok 4: Zaktualizuj istniejącą komórkę

Plik add() metoda Putklasa służy do wstawiania danych. Wymaga 3-bajtowych tablic reprezentujących odpowiednio rodzinę kolumn, kwalifikator kolumny (nazwę kolumny) i wartość do wstawienia. Wstaw dane do tabeli HBase przy użyciu rozszerzeniaadd() metoda, jak pokazano poniżej.

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

Krok 5: Zapisz dane w tabeli

Po wstawieniu wymaganych wierszy zapisz zmiany, dodając wystąpienie put do pliku put() metoda klasy HTable, jak pokazano poniżej.

hTable.put(p);

Krok 6: Zamknij instancję HTable

Po utworzeniu danych w tabeli HBase zamknij plik HTable wystąpienie przy użyciu metody close (), jak pokazano poniżej.

hTable.close();

Poniżej podano kompletny program do aktualizacji danych w konkretnej tabeli.

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();
   }
}

Skompiluj i wykonaj powyższy program, jak pokazano poniżej.

$javac UpdateData.java $java UpdateData

Wynik powinien być następujący:

data Updated

Odczytywanie danych przy użyciu powłoki HBase

Plik get polecenie i get() metoda HTableklasy służą do odczytu danych z tabeli w HBase. Za pomocągetpolecenie, możesz uzyskać pojedynczy wiersz danych naraz. Jego składnia jest następująca:

get ’<table name>’,’row1’

Przykład

Poniższy przykład pokazuje, jak używać polecenia get. Przeanalizujmy pierwszy wiersz plikuemp stół.

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

Czytanie określonej kolumny

Poniżej podano składnię służącą do odczytywania określonej kolumny przy użyciu rozszerzenia get metoda.

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

Przykład

Poniżej podano przykład odczytu określonej kolumny w tabeli HBase.

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

Odczytywanie danych za pomocą Java API

Aby odczytać dane z tabeli HBase, użyj get()metoda klasy HTable. Ta metoda wymaga wystąpieniaGetklasa. Wykonaj czynności podane poniżej, aby pobrać dane z tabeli HBase.

Krok 1: Utwórz wystąpienie klasy konfiguracji

Configurationklasa dodaje pliki konfiguracyjne HBase do swojego obiektu. Możesz utworzyć obiekt konfiguracyjny za pomocącreate() metoda HbaseConfiguration klasa, jak pokazano poniżej.

Configuration conf = HbaseConfiguration.create();

Krok 2: Utwórz wystąpienie klasy HTable

Masz klasę o nazwie HTable, implementacja tabeli w HBase. Ta klasa służy do komunikacji z pojedynczą tabelą HBase. Podczas tworzenia instancji tej klasy przyjmuje obiekt konfiguracyjny i nazwę tabeli jako parametry. Możesz utworzyć wystąpienie klasy HTable, jak pokazano poniżej.

HTable hTable = new HTable(conf, tableName);

Krok 3: Utwórz wystąpienie klasy Get

Możesz pobrać dane z tabeli HBase przy użyciu get() metoda HTableklasa. Ta metoda wyodrębnia komórkę z danego wiersza. WymagaGetobiekt klasy jako parametr. Utwórz go, jak pokazano poniżej.

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

Krok 4: Przeczytaj dane

Podczas pobierania danych można uzyskać pojedynczy wiersz według identyfikatora lub zestaw wierszy według zestawu identyfikatorów wierszy albo przeskanować całą tabelę lub podzbiór wierszy.

Możesz pobrać dane tabeli HBase przy użyciu wariantów metody Add w Get klasa.

Aby uzyskać określoną kolumnę z określonej rodziny kolumn, użyj następującej metody.

get.addFamily(personal)

Aby pobrać wszystkie kolumny z określonej rodziny kolumn, użyj następującej metody.

get.addColumn(personal, name)

Krok 5: Uzyskaj wynik

Uzyskaj wynik, przekazując swój Get klasy do metody get klasy HTableklasa. Ta metoda zwracaResultclass, który przechowuje żądany wynik. Poniżej podano sposób użyciaget() metoda.

Result result = table.get(g);

Krok 6: Odczytywanie wartości z wystąpienia wyniku

Plik Result klasa zapewnia getValue()metoda odczytywania wartości z jej instancji. Użyj go, jak pokazano poniżej, aby odczytać wartości z plikuResult instancja.

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

Poniżej podano kompletny program do odczytu wartości z tabeli HBase.

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);
   }
}

Skompiluj i wykonaj powyższy program, jak pokazano poniżej.

$javac RetriveData.java $java RetriveData

Wynik powinien być następujący:

name: Raju city: Delhi

Usuwanie określonej komórki w tabeli

Używając deletepolecenie, możesz usunąć określoną komórkę w tabeli. Składniadelete polecenie jest następujące:

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

Przykład

Oto przykład usunięcia określonej komórki. Tutaj usuwamy wynagrodzenie.

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

Usuwanie wszystkich komórek w tabeli

Za pomocą polecenia „usuń wszystko” możesz usunąć wszystkie komórki w wierszu. Poniżej podano składnię polecenia deleteall.

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

Przykład

Oto przykład polecenia „deleteall”, w którym usuwamy wszystkie komórki wiersza 1 tabeli emp.

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

Sprawdź tabelę za pomocą scanKomenda. Migawka tabeli po usunięciu tabeli znajduje się poniżej.

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

Usuwanie danych za pomocą Java API

Możesz usunąć dane z tabeli HBase przy użyciu delete() metoda HTableklasa. Wykonaj czynności podane poniżej, aby usunąć dane z tabeli.

Krok 1: Utwórz wystąpienie klasy konfiguracji

Configurationklasa dodaje pliki konfiguracyjne HBase do swojego obiektu. Możesz utworzyć obiekt konfiguracyjny za pomocącreate() metoda HbaseConfiguration klasa, jak pokazano poniżej.

Configuration conf = HbaseConfiguration.create();

Krok 2: Utwórz wystąpienie klasy HTable

Masz klasę o nazwie HTable, implementacja tabeli w HBase. Ta klasa służy do komunikacji z pojedynczą tabelą HBase. Podczas tworzenia instancji tej klasy przyjmuje obiekt konfiguracyjny i nazwę tabeli jako parametry. Możesz utworzyć wystąpienie klasy HTable, jak pokazano poniżej.

HTable hTable = new HTable(conf, tableName);

Krok 3: Utwórz wystąpienie klasy Usuń

Utwórz wystąpienie Deleteklasę, przekazując identyfikator wiersza wiersza, który ma zostać usunięty, w formacie tablicy bajtów. Możesz również przekazać temu konstruktorowi znacznik czasu i Rowlock.

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

Krok 4: Wybierz dane do usunięcia

Możesz usunąć dane za pomocą metod usuwania pliku Deleteklasa. Ta klasa ma różne metody usuwania. Wybierz kolumny lub rodziny kolumn do usunięcia za pomocą tych metod. Spójrz na poniższe przykłady, które pokazują użycie metod klasy Delete.

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

Krok 5: Usuń dane

Usuń wybrane dane, przekazując plik delete wystąpienie do delete() metoda HTable klasa, jak pokazano poniżej.

table.delete(delete);

Krok 6: Zamknij HTableInstance

Po usunięciu danych zamknij plik HTable Instancja.

table.close();

Poniżej podano kompletny program do usuwania danych z tabeli HBase.

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.....");
   }
}

Skompiluj i wykonaj powyższy program, jak pokazano poniżej.

$javac Deletedata.java $java DeleteData

Wynik powinien być następujący:

data deleted

Skanowanie przy użyciu powłoki HBase

Plik scanpolecenie służy do przeglądania danych w HTable. Za pomocą polecenia skanowania możesz pobrać dane tabeli. Jego składnia jest następująca:

scan ‘<table name>’

Przykład

Poniższy przykład pokazuje, jak odczytywać dane z tabeli za pomocą polecenia scan. Tutaj czytamyemp stół.

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

Skanowanie za pomocą Java API

Kompletny program do skanowania całej tabeli danych za pomocą interfejsu API języka Java jest następujący.

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();
   }
}

Skompiluj i wykonaj powyższy program, jak pokazano poniżej.

$javac ScanTable.java $java ScanTable

Wynik powinien być następujący:

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

liczyć

Możesz policzyć liczbę wierszy tabeli za pomocą countKomenda. Jego składnia jest następująca:

count ‘<table name>’

Po usunięciu pierwszego wiersza tabela emp będzie miała dwa wiersze. Sprawdź, jak pokazano poniżej.

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

ścięty

To polecenie wyłącza upuszczanie i odtwarza tabelę. Składniatruncate następująco:

hbase> truncate 'table name'

Przykład

Poniżej podano przykład polecenia obcięcia. Tutaj obcięliśmyemp stół.

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

Po obcięciu tabeli użyj polecenia skanowania, aby zweryfikować. Otrzymasz tabelę z zerowymi wierszami.

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

W HBase możemy nadawać i cofać uprawnienia użytkownikom. Istnieją trzy polecenia ze względów bezpieczeństwa: grant, revoke i user_permission.

dotacja

Plik grantpolecenie przyznaje określone prawa, takie jak odczyt, zapis, wykonywanie i administrator tabeli dla określonego użytkownika. Składnia polecenia grant jest następująca:

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

Możemy nadać zero lub więcej uprawnień użytkownikowi z zestawu RWXCA, gdzie

  • R - reprezentuje przywilej czytania.
  • W - reprezentuje uprawnienie do zapisu.
  • X - reprezentuje uprawnienie do wykonywania.
  • C - reprezentuje uprawnienie do tworzenia.
  • A - reprezentuje uprawnienia administratora.

Poniżej podano przykład, który przyznaje wszystkie uprawnienia użytkownikowi o nazwie „Tutorialspoint”.

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

unieważnić

Plik revokepolecenie służy do unieważnienia praw dostępu użytkownika do tabeli. Jego składnia jest następująca:

hbase> revoke <user>

Poniższy kod odwołuje wszystkie uprawnienia od użytkownika o nazwie „Tutorialspoint”.

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

user_permission

To polecenie służy do wyświetlenia wszystkich uprawnień dla określonej tabeli. Składniauser_permission następująco:

hbase>user_permission ‘tablename’

Poniższy kod zawiera listę wszystkich uprawnień użytkownika tabeli „emp”.

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