HBase Shell-kommandon med exempel
⚡ Smart sammanfattning
Med HBase-shellkommandon kan du hantera tabeller och data direkt från en interaktiv prompt, grupperade i allmänna kommandon, tabellhanteringskommandon som create och drop, datamanipulationskommandon som put och get, och klusterreplikeringskommandon.
Hur man interagerar med HBase med hjälp av Shell-kommandon och Java API
Efter en lyckad installation av HBase ovanpå Hadoop får vi ett interaktivt skal för att köra olika kommandon och utföra flera operationer. Med hjälp av dessa kommandon kan vi utföra flera operationer på datatabeller vilket ger bättre datalagringseffektivitet och flexibel interaktion för 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. Med hjälp av Java API-modellen kan vi utföra alla typer av tabell- och dataoperationer i HBase. Vi kan interagera med HBase med båda dessa metoder. Den enda skillnaden mellan de två är att Java API-användningar Java kod för att ansluta till HBase, medan shell-läge använder shell-kommandon för att ansluta till HBase.
Snabb sammanfattning av HBase innan vi fortsätter:
- HBase använder Hadoop filer som ett lagringssystem för att lagra stora mängder data. HBase består av huvudservrar och regionservrar.
- Data som kommer att lagras i HBase kommer att vara i form av regioner. Vidare kommer dessa regioner att delas upp och lagras på flera regionservrar.
- Dessa shell-kommandon låter programmeraren definiera tabellscheman och dataoperationer med hjälp av fullständig interaktion i shell-läge.
- Oavsett vilket kommando vi använder kommer det att återspeglas i HBase-datamodellen.
- Vi använder HBase-shellkommandon i operativsystemsskripttolkar som Bash-shellet.
- Bash-skalet är standardkommandotolken för de flesta Linux och Unix-operativsystemdistributioner.
- HBase avancerade versioner tillhandahåller shell-kommandon med objektorienterade referenser i JRuby-stil för tabeller.
- Tabellreferensvariabler kan användas för att utföra dataoperationer i HBase-shelllä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" i sig ett tabellnamn.
Allmänna kommandon
I HBase kategoriseras allmänna kommandon i följande kommandon:
- Status
- Version
- Table_help (skanna, släpp, hämta, lägg, inaktivera, etc.)
- Vem är jag
För att använda HBase-shellkommandot måste vi först köra koden som nämns nedan.
hbase Shell
När vi väl har gått 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. Den interaktiva skalprompten visas enligt nedan:
Låt oss titta på alla dessa kommandon och deras användning en efter en med ett exempel.
Status
Syntax:status
Det här kommandot ger information om systemstatus, som antalet servrar i klustret, antalet aktiva servrar och det genomsnittliga belastningsvärdet. Du kan också ange specifika parametrar beroende på hur detaljerad status du vill veta om systemet. Parametrarna kan vara "sammanfattning", "enkel" eller "detaljerad"; standardparametern som anges är "sammanfattning".
Nedan har vi visat hur du kan skicka olika parametrar till statuskommandot. Om vi tittar på skärmdumpen nedan får vi 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'
Statusutgången visas nedan:
När vi kör detta statuskommando ger det information om antalet servrar som finns, döda servrar och serverns genomsnittliga belastning. Här visar skärmdumpen information som 1 aktiv server, 1 död server och en genomsnittlig belastning på 7.0000.
Version
Syntax: version
Versionsutdata visas nedan:
- Det här kommandot visar den HBase-version som för närvarande används i kommandoläge.
- Om du kör versionskommandot kommer det att ge utdata som visas ovan.
Bordshjälp
Syntax:table_help
Utdata från table_help visas nedan:
Detta kommando vägleder:
- Vad tabellrefererade kommandon är och hur man använder dem.
- Den kommer att tillhandahålla olika användningsområden för HBase-shellkommandon och deras syntaxer.
- Här, i skärmbilden ovan, visas syntaxen för kommandona "create" och "get_table" och deras användning. Vi kan manipulera tabellen via dessa kommandon när tabellen har skapats i HBase.
- Den kommer att ge kommandon för tabellmanipulation som put, get och all annan kommandoinformation.
whoami
Syntax: Whoami
Whoami-utdata visas nedan:
Kommandot "whoami" används för att returnera aktuell HBase-användarinformation från HBase-klustret. Det kommer att tillhandahålla information som:
- Grupper som finns i HBase.
- Användarinformationen; till exempel, i det här fallet representerar ”hduser” användarnamnet som visas på skärmbilden.
TTL (Time To Live) – Attribut
I HBase kan kolumnfamiljer ställas in på tidsvärden i sekunder med hjälp av TTL. HBase tar automatiskt bort rader när utgångstiden har uppnåtts. Detta attribut gäller 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 tabellhanteringskommandon. Viktiga skillnader mellan TTL-hantering och TTL:er i kolumnfamiljen är 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å kolumnfamiljenivå.
Tabeller Hanteringskommandon
Dessa kommandon gör det möjligt för programmerare att skapa tabeller och tabellscheman med rad- och kolumnfamiljer. Följande är kommandona för tabellhantering:
- 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ändningar 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
Resultatet av create-kommandot visas nedan:
Exemplet ovan förklarar hur man skapar en tabell i HBase med det angivna namnet enligt specifikationerna för varje kolumnfamilj. Utöver detta kan vi också skicka in vissa attribut för tabellomfånget. För att kontrollera om tabellen 'utbildning' skapas eller inte använder vi kommandot "list" nedan. Se även skapa HBase-tabeller med Java och skal.
Lista
Syntax:list
Listutdata visas nedan:
- Kommandot "list" visar alla tabeller som finns eller har skapats i HBase.
- Utdata som visas i skärmbilden ovan visar för närvarande de befintliga tabellerna i HBase.
- Här, på den här skärmdumpen, visas att det finns totalt 8 tabeller i HBase.
- Vi kan filtrera utdatavärden från tabeller genom att skicka valfria reguljära uttrycksparametrar.
Beskriv
Syntax:describe <table name>
hbase(main):010:0>describe 'education'
Beskrivningsutgången visas nedan:
Detta kommando beskriver den namngivna tabellen.
- Den ger mer information om kolumnfamiljerna som finns i den nämnda tabellen.
- I vårt fall ger den beskrivningen av tabellen ”utbildning”.
- Den ger information om tabellnamnet med kolumnfamiljer, tillhörande filter, versioner och lite mer information.
inaktivera
Syntax: disable <tablename>
hbase(main):011:0>disable 'education'
Inaktiveringsutgången visas nedan:
- Det här kommandot börjar inaktivera den namngivna tabellen.
- Om en tabell behöver tas bort eller tas bort måste den först inaktiveras.
Här, i skärmdumpen ovan, inaktiverar vi tabellutbildningen.
inaktivera alla
Syntax: disable_all<"matching regex"
- Detta kommando kommer att inaktivera alla tabeller som matchar det givna regexet.
- Implementeringen är densamma som drop-kommandot (förutom att man lägger till en regex för matchning).
- När tabellen har inaktiverats kan användaren ta bort tabellen från HBase.
- Innan du tar bort eller släpperping en tabell, bör den inaktiveras först.
Möjliggöra
Syntax: enable <tablename>
hbase(main):012:0>enable 'education'
Aktiveringsutgången visas nedan:
- Det här kommandot börjar aktivera den namngivna tabellen.
- Oavsett vilken tabell som är inaktiverad använder vi det här kommandot för att återställa den till sitt tidigare tillstånd.
- Om en tabell inaktiveras från första början och inte raderas eller tas bort, och om vi vill återanvända den inaktiverade tabellen, måste vi aktivera den med hjälp av det här kommandot.
- Här, i skärmdumpen ovan, aktiverar vi tabellen "utbildning".
visa_filter
Syntax: show_filters
Utdata för show_filters visas nedan:
Det här kommandot visar alla filter som finns i HBase, som ColumnPrefixFilter, TimestampsFilter, PageFilter, FamilyFilter, etc.
släppa
Syntax:drop <table name>
hbase(main):017:0>drop 'education'
Dropputgången visas nedan:
Vi måste observera följande punkter för drop-kommandot:
- 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å, för att antingen ta bort eller ta bort en tabell, bör tabellen först inaktiveras med kommandot disable.
- Här, i skärmdumpen ovan, släpper viping tabellen ”utbildning”.
- Innan du kör detta kommando är det nödvändigt att du inaktiverar tabellen "utbildning".
drop_all
Syntax: drop_all<"regex">
- Det här kommandot tar bort alla tabeller som matchar den givna regexen.
- Tabeller måste först inaktiveras innan det här kommandot körs med hjälp av disable_all.
- Tabeller med regex-matchande uttryck kommer att tas bort från HBase.
is_enabled
Syntax: is_enabled 'education'
Det här kommandot verifierar om den namngivna tabellen är aktiverad eller inte. Vanligtvis finns det en liten förvirring mellan kommandoåtgärderna "enable" och "is_enabled", vilket vi förtydligar här:
- Anta att en tabell är inaktiverad; för att använda tabellen måste vi aktivera den med hjälp av kommandot enable.
- Kommandot is_enabled kontrollerar om 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 ska vi utföra alter-kommandooperationer på tabeller och deras kolumner. Vi kommer att utföra operationer som:
- Ändra familjenamn för en och flera kolumner.
- Ta bort kolumnfamiljenamn från en tabell.
- Flera andra operationer som använder scopeattribut med en tabell.
För att ändra eller lägga till kolumnfamiljen 'guru99_1' i tabellen 'education' från det aktuella värdet för att behålla maximalt 5 cellversioner. Här är "education" tabellnamnet som tidigare skapades med kolumnnamnet "guru99". Med hjälp av ett alter-kommando försöker vi ändra kolumnfamiljens schema till guru99_1 från guru99, som visas nedan:
hbase> alter 'education', NAME='guru99_1', VERSIONS=>5
Du kan också använda alter-kommandot på flera kolumnfamiljer. Till exempel definierar vi två nya kolumner för vår befintliga tabell "utbildning", som visas nedan:
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 hjälp av det här kommandot.
- guru99_2 och guru99_3, som visas på skärmdumpen ovan, är de två nya kolumnnamnen som vi har definierat för tabellutbildningen.
- Vi kan se hur man använder det här kommandot i föregående skärmdump.
I det här steget ska vi se hur man tar bort en kolumnfamilj från tabellen. För att ta bort kolumnfamiljen 'f1' i tabellen 'utbildning', använd ett av kommandona nedan. Resultatet visas på skärmdumpen som följer:
hbase> alter 'education', NAME => 'f1', METHOD => 'delete'
hbase> alter 'education', 'delete' =>' guru99_1'
I det här kommandot försöker vi ta bort kolumnutrymmet med namnet guru99_1 som vi tidigare skapade i det första steget. Som visas i skärmdumparna nedan visas två steg: hur man ändrar ett attribut för tabellomfång och hur man tar bort attributet för tabellomfång.
Syntax: alter <'tablename'>, MAX_FILESIZE=>'132545224'
Steg 1) Du kan ändra attribut för tabellomfånget som MAX_FILESIZE, READONLY, MEMSTORE_FLUSHSIZE, DEFERRED_LOG_FLUSH, etc. Dessa kan läggas till i slutet; till exempel, för att ändra maxstorleken för en region till 128 MB eller något annat minnesvärde, använder vi det här kommandot.
Användning:
- Vi kan använda MAX_FILESIZE med tabellen som ett scope-attribut, som ovan.
- Talet som representeras i MAX_FILESIZE anges i minne i byte.
OBS! Tabellens omfattning MAX_FILESIZE bestäms av vissa attribut som finns i HBase. MAX_FILESIZE ingår också i tabellens omfattningsattribut.
Steg 2) Du kan också ta bort ett table-scope-attribut med hjälp av metoden table_att_unset. Se kommandot nedan:
alter 'education', METHOD => 'table_att_unset', NAME => 'MAX_FILESIZE'
- Skärmdumpen ovan visar det ändrade tabellnamnet med scope-attribut.
- Metoden table_att_unset används för att avaktivera attribut som finns i tabellen.
- I andra fallet avaktiverar vi attributet MAX_FILESIZE.
- Efter att kommandot har körts kommer det helt enkelt att avaktivera MAX_FILESIZE-attributet från tabellen "utbildning".
alter_status
Syntax: alter_status 'education'
Utdata för alter_status visas nedan:
- Genom det här kommandot kan du få statusen för alter-kommandot.
- Den anger antalet regioner i tabellen som har fått det uppdaterade schemat. Du anger tabellnamnet.
- Här, i skärmbilden ovan, visas 1/1 region uppdaterad. Det betyder att den har uppdaterat en region. Om det sedan lyckas visas kommentaren "klar".
Datamanipuleringskommandon
Dessa kommandon fungerar på tabellen för datamanipulationer, som att lägga in data i en tabell, hämta data från en tabell och ta bort scheman etc. Kommandona som ingår i dessa är:
- Att Räkna
- Sätta
- Skaffa sig
- Radera
- Radera allt
- Stympa
- scan
Låt oss titta närmare på dessa kommandoanvändningar med ett exempel. Se även läsa och skriva HBase-data.
Att Räkna
Syntax: count <'tablename'>, CACHE =>1000
- Kommandot hämtar antalet rader i en tabell. Värdet som returneras av detta är antalet rader.
- Det aktuella antalet visas som standard per 1000 rader.
- Räkneintervallet kan valfritt anges.
- Standardcachestorleken är 10 rader.
- Kommandot count fungerar snabbt när det är konfigurerat med rätt cache.
Exempel:
hbase> count 'guru99', CACHE=>1000
Räkneutdata visas nedan:
Detta exempel på antal hämtar 1000 rader åt gången från tabellen "guru99". Vi kan göra cachen till ett 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
Anta att tabellen "guru99" har någon tabellreferens, som till exempel g. Vi kan också köra count-kommandot på tabellreferensen, som nedan:
hbase>g.count INTERVAL=>100000 hbase>g.count INTERVAL=>10, CACHE=>1000
Sätta
Syntax: put <'tablename'>,<'rowname'>,<'columnvalue'>,<'value'>
Det här kommandot används för följande saker:
- Det kommer att placera ett cell "värde" vid en definierad eller specificerad tabell eller rad eller kolumn.
- Den kommer valfritt att koordinera en tidsstämpel.
Exempel: 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 på skärmbilden nedan.
Anta att tabellen "guru99" har någon tabellreferens, som till exempel g. Vi kan också köra kommandot på tabellreferensen, som:
hbase> g.put 'guru99', 'r1', 'c1', 'value', 10
Utdata kommer att se ut som visas på skärmbilden ovan efter att värden har placerats i "guru99". För att kontrollera om inmatningsvärdet är korrekt infogat i tabellen använder vi kommandot "scan". På skärmbilden nedan kan vi se att värdena är korrekt infogade.
Code Utdrag: 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 följande:
- Här skapar vi en tabell med namnet 'guru99' med kolumnnamnet "Edu".
- Genom att använda kommandot ”put” placerar vi värden i radnamnet r1 i kolumnen ”Edu” i tabellen ”guru99”.
Skaffa sig
Syntax: get <'tablename'>, <'rowname'>, {< Additional parameters>}
Här, inkludera TIMERANGE, TIMESTAMP, VERSIONS och FILTERS. Genom att använda det här kommandot får du fram innehållet i en rad eller cell i tabellen. Utöver det kan du också lägga till ytterligare parametrar, som TIMESTAMP, TIMERANGE, VERSIONS, FILTERS etc., för att få fram innehållet i en specifik rad eller cell.
Get-utdata nedan returnerar värden för rad r1 och kolumn c1:
Exempel:-
hbase> get 'guru99', 'r1', {COLUMN => 'c1'}
För tabellen "guru99" visas värden för rad r1 och kolumn c1 med det här kommandot, som visas på 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 r1-värden i tidsintervallet ts1 till ts2 att visas med detta kommando.
hbase> get 'guru99', 'r1', {COLUMN => ['c1', 'c2', 'c3']}
För tabellen "guru99" visas värden för rad r1 och kolumnfamiljerna c1, c2 och c3 med detta kommando.
Radera
Syntax:delete <'tablename'>,<'row name'>,<'column name'>
- Det här kommandot tar bort cellvärdet i en definierad tabell med rad eller kolumn.
- Delete måste och bör matcha den borttagna cellens koordinater exakt.
- Vid skanning undertrycker en borttagningscell äldre versioner av värden.
Exempel: Kommandot delete nedan tar bort cell r1, c1 från guru99-tabellen:
hbase(main):)020:0> delete 'guru99', 'r1', 'c1''.
- Ovanstående körning kommer att ta bort rad r1 från kolumnfamiljen c1 i tabellen "guru99".
- Anta att tabellen "guru99" har någon tabellreferens, som till exempel g.
- Vi kan också köra kommandot på tabellreferensen, som hbase> g.delete 'guru99', 'r1', 'c1′”.
radera allt
Syntax: deleteall <'tablename'>, <'rowname'>
- Det här kommandot tar bort alla celler i en given rad.
- Vi kan valfritt definiera kolumnnamn och en tidsstämpel i syntaxen.
Exempel: Kommandot deleteall nedan tar bort alla celler i rad r1:
hbase>deleteall 'guru99', 'r1', 'c1'
Detta tar bort alla rader och kolumner som finns i tabellen. Vi kan eventuellt ange kolumnnamn i den.
Stympa
Syntax: truncate <tablename>
Truncate-kommandot nedan tömmer tabellen medan keeping dess schema:
Efter avkortningen av en HBase-tabell kommer schemat att finnas kvar men inte posterna. Detta kommando utför tre funktioner; de listas nedan:
- Inaktiverar tabellen om den redan finns.
- Tar bort tabellen om den redan finns.
- Återskapar den nämnda tabellen.
scan
Syntax: scan <'tablename'>, {Optional parameters}
Det här kommandot 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 TIMERRANGE, FILTER, TIDSTÄMPEL, GRÄNS, MAXLENGTH, KOLUMNER, CACHE, STARTRAD och STOPROW.
scan 'guru99'
Skanningsutdata visas nedan:
I skärmdumpen ovan:
- Den visar tabellen "guru99" med kolumnnamn och värden.
- Den består av tre radvärden, r1, r2 och r3, för det enskilda kolumnvärdet c1.
- Den visar de värden som är associerade med raderna.
Exempel:- Olika användningsområden för scan-kommandot:
| 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 tabellen guru99 med deras kolumnfamiljer c1 och c2, med begränsning av 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 tidsintervallattributvärdet. |
| skanna 'guru99', {RAW => true, VERSIONS =>10} | I det här kommandot erbjuder RAW=> true en avancerad funktion, som att visa alla cellvärden som finns i tabellen guru99. |
Code Exempel: Skapa först en tabell och placera värden i tabellen. Indata visas på skärmbilden nedan:
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
Om vi kör scan-kommandot:
Query: scan 'guru99', {RAW=>true, VERSIONS=>1000}
Den visar utdata som visas nedan:
Utdata som visas i skärmdumpen ovan ger följande information:
- Skannar guru99-tabellen med attributen RAW=>true, VERSIONS=>1000.
- Visar rader med kolumnfamiljer och värden.
- På den tredje raden visar de visade värdena det borttagna värdet som finns i kolumnen.
- Utdata som visas är slumpmässig; den kan inte vara i samma ordning som de värden som vi infogade i tabellen.
Cluster Replikeringskommandon
- Dessa kommandon fungerar i klusterkonfigurationsläget för HBase.
- För att lägga till och ta bort peers till ett kluster, och för att starta och stoppa replikering, används dessa kommandon i allmänhet.
| Kommando | Funktionalitet |
|---|---|
| add_peer | Lägger till peer-kollegor i ett kluster som ska replikeras. hbase> add_peer '3', zk1,zk2,zk3:2182:/hbase-prod |
| remove_peer | Stoppar den definierade replikeringsströmmen och tar bort all metadatainformation om motparten. hbase> remove_peer '1' |
| start_replikering | Startar om alla replikeringsfunktioner. hbase> start_replikering |
| stop_replikering | Stoppar alla replikeringsfunktioner. hbase>stopp_replikering |
























