HBase Shell-kommandon med exempel

Efter en lyckad installation av HBase ovanpå Hadoop får vi ett interaktivt skal för att utföra olika kommandon och utföra flera operationer. Med dessa kommandon kan vi utföra flera operationer på datatabeller som kan ge bättre datalagringseffektivitet och flexibel interaktion av klienten.

Vi kan interagera med HBase på två sätt,

  • HBase interaktivt skalläge och
  • Genom Java API

I HBase används interaktivt skalläge för att interagera med HBase för tabelloperationer, tabellhantering och datamodellering. Genom att använda Java API-modell, vi kan utföra alla typer av tabell- och dataoperationer i HBase. Vi kan interagera med HBase med dessa båda metoder.

Den enda skillnaden mellan dessa två är Java API använder java-kod för att ansluta till HBase och skalläge använder skalkommandon för att ansluta till HBase.

Snabb overcap av HBase innan vi fortsätter-

  • HBase använder Hadoop filer som lagringssystem för att lagra stora mängder data. Hbase består av huvudservrar och regionservrar
  • Datan som kommer att lagras i HBase kommer att vara i form av regioner. Vidare kommer dessa regioner att delas upp och lagras i flera regionservrar
  • Dessa skalkommandon tillåter programmeraren att definiera tabellscheman och dataoperationer med hjälp av komplett skallägesinteraktion
  • Vilket kommando vi än använder kommer det att återspeglas i HBase-datamodellen
  • Vi använder HBase-skalkommandon i operativsystemets skripttolkare som Bash-skal
  • Bash-skal är standardkommandotolkarna för de flesta Linux och Unix driftdistributioner
  • HBase avancerade versioner tillhandahåller skalkommandon jruby-stil objektorienterade referenser för tabeller
  • Tabellreferensvariabler kan användas för att utföra dataoperationer i HBase-skalläge

Till exempel,

  • I den här handledningen har vi skapat en tabell där 'utbildning' representerar tabellnamnet och motsvarar kolumnnamnet "guru99".
  • I vissa kommandon representerar "guru99" själv ett tabellnamn.

Allmänna kommandon

I Hbase är allmänna kommandon kategoriserade i följande kommandon

  • Status
  • version
  • Table_help (skanna, släpp, hämta, lägg, inaktivera, etc.)
  • Vem är jag

För att komma in i HBase-skalkommandot måste vi först och främst köra koden som nämns nedan

Allmänna kommandon

hbase Shell

När vi väl kommer in i HBase-skalet kan vi köra alla skalkommandon som nämns nedan. Med hjälp av dessa kommandon kan vi utföra alla typer av tabelloperationer i HBase-skalläget.

Låt oss titta på alla dessa kommandon och deras användning en efter en med ett exempel.

Status

Syntax:status

Detta kommando kommer att ge detaljer om systemstatus som ett antal servrar som finns i klustret, antal aktiva server och genomsnittligt belastningsvärde. Du kan också skicka några speciella parametrar beroende på hur detaljerad status du vill veta om systemet. Parametrarna kan vara 'sammanfattning', 'enkel' eller 'detaljerad', är standardparametern som tillhandahålls "sammanfattning".

Nedan har vi visat hur du kan skicka olika parametrar till statuskommandot.

Om vi ​​observerar skärmdumpen nedan kommer vi att få en bättre uppfattning.

Status

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

När vi kör detta kommandostatus kommer det att ge information om antalet server som är närvarande, döda servrar och genomsnittlig belastning på servern, här i skärmdumpen visar den informationen som- 1 liveserver, 1 döda servrar och 7.0000 XNUMX genomsnittlig belastning.

version

Syntax: version

version

  • Detta kommando visar den för närvarande använda HBase-versionen i kommandoläge
  • Om du kör versionskommandot kommer det att ge utdata som visas ovan

Bordshjälp

Syntax:table_help

Tabellhjälp

Detta kommando vägleder

  • Vad och hur man använder tabellrefererade kommandon
  • Det kommer att tillhandahålla olika HBase-skalkommandonanvändningar och dess syntaxer
  • Här på skärmdumpen ovan visar den syntaxen till "skapa" och "få_bord" kommando med dess användning. Vi kan manipulera tabellen via dessa kommandon när tabellen väl har skapats i HBase.
  • Det kommer att ge tabellmanipulationskommandon som put, get och alla andra kommandon information.

whoami

Syntax:

Syntax: Whoami

Vem är jag

Detta kommando "whoami" används för att returnera den aktuella HBase-användarinformationen från HBase-klustret.

Det kommer att ge information som

  • Grupper som finns i HBase
  • Användarinformationen, till exempel i det här fallet "hduser" representerar användarnamnet som visas på skärmdumpen

TTL (Time To Live) – Attribut

I HBase kan kolumnfamiljer ställas in på tidsvärden i sekunder med hjälp av TTL. HBase kommer automatiskt att radera rader när utgångstiden nås. Det här attributet gäller för alla versioner av en rad – även den aktuella versionen.

TTL-tiden som är kodad i HBase för raden anges i UTC. Detta attribut används med kommandon för tabellhantering.

Viktiga skillnader mellan TTL-hantering och TTL i kolumnfamiljen finns nedan

  • Cell-TTL uttrycks i enheter av millisekunder istället för sekunder.
  • En cell-TTL kan inte förlänga den effektiva livslängden för en cell utöver en TTL-inställning på kolumnfamiljnivå.

Tabeller Hanteringskommandon

Dessa kommandon gör det möjligt för programmerare att skapa tabeller och tabellscheman med rader och kolumnfamiljer.

Följande är tabellhanteringskommandon

  • Skapa
  • Lista
  • Beskriv
  • inaktivera
  • Inaktivera alla
  • Möjliggöra
  • Aktivera alla
  • Drop
  • Släpp_allt
  • Visa_filter
  • Ålder
  • Alter_status

Låt oss titta på olika kommandoanvändning i HBase med ett exempel.

Skapa

Syntax: create <tablename>, <columnfamilyname>

Tabeller Hanteringskommandon: Skapa

Exempel:-

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

Ovanstående exempel förklarar hur man skapar en tabell i HBase med det angivna namnet enligt ordboken eller specifikationerna enligt kolumnfamiljen. Utöver detta kan vi också överföra några tabellomfattningsattribut till den.

För att kontrollera om tabellen 'utbildning' är skapad eller inte, måste vi använda "lista" kommando enligt nedan.

Lista

Syntax:list

Tabeller Hanteringskommandon: Lista

  • Kommandot "List" kommer att visa alla tabeller som finns eller skapas i HBase
  • Utdata som visas i skärmdumpen ovan visar för närvarande de befintliga tabellerna i HBase
  • Här i den här skärmdumpen visar det att det finns totalt 8 tabeller i HBase
  • Vi kan filtrera utvärden från tabeller genom att skicka valfria parametrar för reguljära uttryck

Beskriv

Syntax:describe <table name>

Tabeller Hanteringskommandon: Beskriv

hbase(main):010:0>describe 'education'

Detta kommando beskriver den namngivna tabellen.

  • Det kommer att ge mer information om kolumnfamiljer som finns i den nämnda tabellen
  • I vårt fall ger det beskrivningen av tabellen "utbildning".
  • Det kommer att ge information om tabellnamn med kolumnfamiljer, tillhörande filter, versioner och lite mer detaljer.

inaktivera

Syntax: disable <tablename>

Kommandon för tabellhantering: Inaktivera

hbase(main):011:0>disable 'education'
  • Detta kommando börjar inaktivera den namngivna tabellen
  • Om tabellen behöver raderas eller tas bort måste den först inaktiveras

Här, i skärmdumpen ovan, inaktiverar vi bordsundervisning

inaktivera alla

 Syntax: disable_all<"matching regex"
  • Detta kommando kommer att inaktivera alla tabeller som matchar det givna regexet.
  • Implementeringen är samma som delete-kommandot (förutom att lägga till regex för matchning)
  • När tabellen blir inaktiverad kan användaren ta bort tabellen från HBase
  • Innan du tar bort eller släpper tabell, bör den inaktiveras först

Möjliggöra

Syntax: enable <tablename>

Kommandon för tabellhantering: Aktivera

hbase(main):012:0>enable 'education'
  • Detta kommando börjar aktivera den namngivna tabellen
  • Oavsett vilken tabell som är inaktiverad använder vi det här kommandot för att återställa det tidigare tillståndet
  • Om en tabell är inaktiverad i första hand och inte raderas eller släpps, och om vi vill återanvända den inaktiverade tabellen måste vi aktivera den genom att använda detta kommando.
  • Här i skärmdumpen ovan aktiverar vi tabellen "utbildning".

visa_filter

Syntax: show_filters

Tabeller Hanteringskommandon: show_filters

Detta kommando visar alla filter som finns i HBase som ColumnPrefix Filter, TimestampsFilter, PageFilter, FamilyFilter, etc.

släppa

Syntax:drop <table name>

Tabeller Hanteringskommandon: Släpp

hbase(main):017:0>drop 'education'

Vi måste observera nedanstående punkter för drop-kommando

  • För att ta bort tabellen som finns i HBase måste vi först inaktivera den
  • För att ta bort tabellen som finns i HBase måste vi först inaktivera den
  • Så antingen tabellen för att släppa eller ta bort först borde tabellen inaktiveras med disable-kommandot
  • Här i skärmdumpen ovan släpper vi tabellen "utbildning".
  • Innan du kör det här kommandot är det nödvändigt att du inaktiverar tabellen "utbildning".

drop_all

Syntax: drop_all<"regex">
  • Detta kommando kommer att ta bort alla tabeller som matchar det givna regexet
  • Tabeller måste inaktivera först innan du kör det här kommandot med disable_all
  • Tabeller med regexmatchande uttryck kommer att försvinna från HBase

is_enabled

Syntax: is_enabled 'education'

Detta kommando kommer att verifiera om den namngivna tabellen är aktiverad eller inte. Vanligtvis finns det en liten förvirring mellan "enable" och "is_enabled" kommandoåtgärd, vilket vi rensar här

  • Anta att en tabell är inaktiverad, för att använda den tabellen måste vi aktivera den genom att använda kommandot enable
  • is_enabled-kommandot kontrollerar antingen tabellen är aktiverad eller inte

ändra

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

Detta kommando ändrar kolumnfamiljens schema. För att förstå exakt vad det gör har vi förklarat det här med ett exempel.

Exempel:

I dessa exempel kommer vi att utföra ändringskommandooperationer på tabeller och på dess kolumner. Vi kommer att utföra operationer som

  • Ändra enstaka, flera kolumner efternamn
  • Ta bort kolumnfamiljenamn från tabell
  • Flera andra operationer som använder scope-attribut med tabell
  1. För att ändra eller lägga till kolumnfamiljen 'guru99_1' i tabellen 'utbildning' från nuvarande värde för att behålla maximalt 5-cellsVERSIONER,
  • "utbildning" är ett tabellnamn skapat med kolumnnamnet "guru99" tidigare
  • Här med hjälp av ett alter-kommando försöker vi ändra kolumnfamiljens schema till guru99_1 från guru99

Tabeller Hanteringskommandon: Ändra

hbase> alter 'education', NAME='guru99_1', VERSIONS=>5
  1. Du kan också använda kommandot alter på flera kolumnfamiljer. Till exempel kommer vi att definiera två nya kolumner till vår befintliga tabell "utbildning".
 hbase> alter 'edu', 'guru99_1', {NAME => 'guru99_2', IN_MEMORY => true}, {NAME => 'guru99_3', VERSIONS => 5}

Tabeller Hanteringskommandon: Ändra

  • Vi kan ändra mer än ett kolumnschema åt gången med det här kommandot
  • guru99_2 och guru99_3 som visas i skärmdumpen ovan är de två nya kolumnnamnen som vi har definierat för tabellutbildningen
  • Vi kan se hur det här kommandot används i föregående skärmdump
  1. I det här steget kommer vi att se hur man tar bort kolumnfamilj från tabellen. För att ta bort kolumnfamiljen 'f1' i tabellen 'utbildning'.

Använd ett av dessa kommandon nedan,

hbase> alter 'education', NAME => 'f1', METHOD => 'delete'
hbase> alter 'education', 'delete' =>' guru99_1'
  • I det här kommandot försöker vi ta bort kolumnutrymmesnamnet guru99_1 som vi tidigare skapade i det första steget

Tabeller Hanteringskommandon: Ändra

  1. Som visas i skärmdumparna nedan visar den två steg – hur man ändrar attributet table scope och hur man tar bort tabell scope-attributet.
Syntax: alter <'tablename'>, MAX_FILESIZE=>'132545224'

Tabeller Hanteringskommandon: Ändra

Steg 1) Du kan ändra tabellomfattningsattribut som MAX_FILESIZE, READONLY, MEMSTORE_FLUSHSIZE, DEFERRED_LOG_FLUSH, etc. Dessa kan sättas i slutet; till exempel för att ändra maxstorleken för en region till 128MB eller något annat minnesvärde som vi använder det här kommandot.

Användning:

  • Vi kan använda MAX_FILESIZE med tabellen som scope-attribut enligt ovan
  • Antalet som representeras i MAX_FILESIZE är i termer av minne i byte

NOBS: MAX_FILESIZE Attributtabellens omfattning kommer att bestämmas av vissa attribut som finns i HBase. MAX_FILESIZE ingår också under tabellomfattningsattribut.

Steg 2) Du kan också ta bort ett table-scope-attribut med metoden table_att_unset. Om du ser kommandot

alter 'education', METHOD => 'table_att_unset', NAME => 'MAX_FILESIZE'
  • Ovanstående skärmdump visar ändrat tabellnamn med scope-attribut
  • Metoden table_att_unset används för att avaktivera attribut som finns i tabellen
  • Den andra instansen tar vi bort attributet MAX_FILESIZE
  • Efter exekvering av kommandot kommer det helt enkelt att avaktivera MAX_FILESIZE-attributet från "education"-tabellen.

alter_status

 Syntax: alter_status 'education'

Tabeller Hanteringskommandon: alter_status

  • Genom detta kommando kan du få status för alter-kommandot
  • Vilket indikerar antalet regioner i tabellen som har fått det uppdaterade schemapassningstabellnamnet
  • Här i skärmbilden ovan visar den 1/1 region uppdaterad. Det betyder att den har uppdaterat en region. Efter det, om det lyckades, kommer det att visa kommentar klar.

Datamanipuleringskommandon

Dessa kommandon kommer att fungera på tabellen relaterade till datamanipulationer som att lägga data i en tabell, hämta data från en tabell och ta bort schema, etc.

Kommandona kommer under dessa är

  • Att Räkna
  • Sätta
  • Skaffa sig
  • Radera
  • Radera allt
  • Stympa
  • scan

Låt oss titta närmare på användningen av dessa kommandon med ett exempel.

Att Räkna

Syntax: count <'tablename'>, CACHE =>1000
  • Kommandot hämtar antalet rader i en tabell. Värdet som returneras av denna är antalet rader.
  • Aktuellt antal visas per var 1000:e rad som standard.
  • Räkneintervall kan anges valfritt.
  • Standard cachestorlek är 10 rader.
  • Räknekommandot kommer att fungera snabbt när det är konfigurerat med rätt cache.

Exempelvis:

Att Räkna

hbase> count 'guru99', CACHE=>1000

Denna exempelräkning hämtar 1000 rader åt gången från tabellen "Guru99".

Vi kan göra cache till något lägre värde om tabellen består av fler rader.

Men som standard hämtar den en rad i taget.

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

Om anta att om tabellen "Guru99" har någon tabellreferens som säg g.

Vi kan köra kommandot count på tabellreferens också som nedan

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

Sätta

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

Detta kommando används för följande saker

  • Det kommer att placera ett cell "värde" vid definierad eller specificerad tabell eller rad eller kolumn.
  • Det kommer valfritt att koordinera tidsstämpeln.

Exempelvis:

  • Här placerar vi värden i tabellen "guru99" under rad r1 och kolumn c1
    hbase> put 'guru99', 'r1', 'c1', 'value', 10
  • Vi har placerat tre värden, 10,15 och 30 i tabellen "guru99" som visas i skärmdumpen nedan

Sätta

  • Anta att om tabellen "Guru99" har någon tabellreferens som säg g. Vi kan också köra kommandot på tabellreferens också som
    hbase> g.put 'guru99', 'r1', 'c1', 'value', 10
  • Utdata kommer att vara som visas i ovanstående skärmdump efter att ha placerat värden i "guru99".

För att kontrollera om inmatningsvärdet är korrekt infogat i tabellen använder vi kommandot "scan". I skärmbilden nedan kan vi se att värdena är korrekt infogade

Sätta

Kodavsnitt: För övning

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

Från kodavsnittet gör vi dessa saker

  • Här skapar vi en tabell med namnet 'guru99' med kolumnnamnet som "Edu."
  • Genom att använda "put"-kommandot placerar vi värden i radnamn r1 i kolumn "Edu" i tabellen "guru99."

Skaffa sig

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

Här inkluderar TIMERANGE, TIMESTAMP, VERSIONS och FILTER.

Genom att använda detta kommando får du en rad eller cellinnehåll som finns i tabellen. Utöver det kan du också lägga till ytterligare parametrar till den som TIMESTAMP, TIMERANGE,VERSIONS, FILTER, etc. för att få en viss rad eller cellinnehåll.

Skaffa sig

Exempel:-

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

För tabellen “guru99′ visas rad r1 och kolumn c1 värden med det här kommandot som visas i skärmdumpen ovan

hbase> get 'guru99', 'r1'

För tabellen "guru99" kommer rad r1-värden att visas med detta kommando

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

För tabellen "guru99" kommer rad 1-värden i tidsintervallet ts1 och ts2 att visas med detta kommando

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

För tabell "guru99" kommer rad r1 och kolumnfamiljers c1, c2, c3 värden att visas med detta kommando

Radera

Syntax:delete <'tablename'>,<'row name'>,<'column name'>
  • Detta kommando kommer att ta bort cellvärdet vid definierad tabell i rad eller kolumn.
  • Ta bort måste och bör matcha de raderade cellernas koordinater exakt.
  • Vid skanning undertrycker ta bort cell äldre versioner av värden.

Radera

Exempelvis:

hbase(main):)020:0> delete 'guru99', 'r1', 'c1''.
  • Ovanstående exekvering kommer att ta bort rad r1 från kolumnfamiljen c1 i tabellen "guru99."
  • Anta att om tabellen "guru99" har någon tabellreferens som säg g.
  • Vi kan köra kommandot på tabellreferens också som hbase> g.radera 'guru99', 'r1', 'c1′".

radera allt

Syntax: deleteall <'tablename'>, <'rowname'>

Radera allt

  • Detta kommando tar bort alla celler i en given rad.
  • Vi kan valfritt definiera kolumnnamn och tidsstämpel till syntaxen.

Exempel:-

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

Detta tar bort alla rader och kolumner som finns i tabellen. Valfritt kan vi nämna kolumnnamn i det.

Stympa

Syntax:  truncate <tablename>

Stympa

Efter trunkering av en hbase-tabell kommer schemat att presentera men inte posterna. Detta kommando utför 3 funktioner; de är listade nedan

  • Inaktiverar tabellen om den redan finns
  • Släpps bordet om det redan finns
  • Återskapar den nämnda tabellen

scan

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

Detta kommando skannar hela tabellen och visar tabellinnehållet.

  • Vi kan skicka flera valfria specifikationer till detta skanningskommando för att få mer information om tabellerna som finns i systemet.
  • Skannerspecifikationerna kan innehålla ett eller flera av följande attribut.
  • Dessa är TIMERANGE, FILTER, TIMESTAMP, LIMIT, MAXLENGTH, COLUMNS, CACHE, STARTROW och STOPROW.
scan 'guru99'

Utgången enligt nedan visas i skärmdump

scan

I skärmdumpen ovan

  • Den visar tabellen "guru99" med kolumnnamn och värden
  • Den består av tre radvärden r1, r2, r3 för en kolumnvärde c1
  • Den visar värdena som är kopplade till rader

Exempel:-

De olika användningsområdena för skanningskommandot

Kommando Användning
skanna '.META.', {COLUMNS => 'info:regioninfo'} Den visar all metadatainformation relaterad till kolumner som finns i tabellerna i HBase
skanna 'guru99', {COLUMNS => ['c1', 'c2'], LIMIT => 10, STARTROW => 'xyz'} Den visar innehållet i tabellguru99 med deras kolumnfamiljer c1 och c2 vilket begränsar värdena till 10
skanna 'guru99', {COLUMNS => 'c1', TIMERANGE => [1303668804, 1303668904]} Den visar innehållet i guru99 med dess kolumnnamn c1 med värdena som finns mellan det nämnda tidsintervallsattributvärdet
skanna 'guru99', {RAW => true, VERSIONS =>10} I detta kommando ger RAW=> true en avancerad funktion som att visa alla cellvärden som finns i tabellen guru99

Kodexempel:

Skapa först tabell och placera värden i tabellen

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

Ingångsskärmbild:

Skanna exempel

Om vi ​​kör scan-kommandot

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

Det kommer att visa utdata som visas nedan.

Utdata skärmdump:

Skanna exempel

Utdata som visas i ovanstående skärmdump ger följande information

  • Skannar guru99-tabell med attribut RAW=>true, VERSIONS=>1000
  • Visar rader med kolumnfamiljer och värden
  • På den tredje raden visar värdena som visas raderade värden som finns i kolumnen
  • Utdata som visas av den är slumpmässig; det kan inte vara i samma ordning som värdena som vi infogade i tabellen

Cluster Replikeringskommandon

  • Dessa kommandon fungerar i klusterinställningsläge för HBase.
  • För att lägga till och ta bort peers till klustret och för att starta och stoppa replikering används dessa kommandon i allmänhet.
Kommando Funktionalitet
add_peer Lägg till kamrater i klustret för att replikera

hbase> add_peer '3', zk1,zk2,zk3:2182:/hbase-prod

remove_peer Stoppar den definierade replikeringsströmmen.

Tar bort all metadatainformation om kamraten

hbase> remove_peer '1'

start_replikering Startar om alla replikeringsfunktioner

hbase> start_replikering

stop_replikering Stoppar alla replikeringsfunktioner

hbase>stopp_replikering

Sammanfattning

HBase-skal och allmänna kommandon ger fullständig information om olika typer av datamanipulation, tabellhantering och klusterreplikeringskommandon. Vi kan utföra olika funktioner med dessa kommandon på tabeller som finns i HBase.