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
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.
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
- 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
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
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>
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
- 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>
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>
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>
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
Detta kommando visar alla filter som finns i HBase som ColumnPrefix Filter, TimestampsFilter, PageFilter, FamilyFilter, etc.
släppa
Syntax:drop <table name>
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
- 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
hbase> alter 'education', NAME='guru99_1', VERSIONS=>5
- 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}
- 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
- 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
- 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'
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'
- 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:
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
- 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
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.
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.
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'>
- 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>
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
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:
Om vi kör scan-kommandot
Query: scan 'guru99', {RAW=>true, VERSIONS=>1000}
Det kommer att visa utdata som visas nedan.
Utdata skärmdump:
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.