Comenzi Shell HBase cu exemple
După instalarea cu succes a HBase peste Hadoop, obținem un shell interactiv pentru a executa diverse comenzi și a efectua mai multe operațiuni. Folosind aceste comenzi, putem efectua mai multe operații pe tabele de date care pot oferi o eficiență mai bună a stocării datelor și o interacțiune flexibilă din partea clientului.
Putem interacționa cu HBase în două moduri,
- Modul shell interactiv HBase și
- Prin Java API
În HBase, modul shell interactiv este utilizat pentru a interacționa cu HBase pentru operațiunile de tabel, gestionarea tabelelor și modelarea datelor. Prin utilizarea Java Model API, putem efectua toate tipurile de operațiuni de tabele și date în HBase. Putem interacționa cu HBase folosind ambele metode.
Singura diferență dintre acestea două este Java API folosește codul java pentru a se conecta cu HBase, iar modul shell utilizează comenzi shell pentru a se conecta la HBase.
Depășirea rapidă a HBasei înainte de a continua -
- HBase utilizează Hadoop fișiere ca sistem de stocare pentru a stoca cantități mari de date. Hbase este format din servere master și servere regiuni
- Datele care vor fi stocate în HBase vor fi sub formă de regiuni. În plus, aceste regiuni vor fi împărțite și stocate pe mai multe servere de regiune
- Aceste comenzi shell permit programatorului să definească scheme de tabel și operațiuni de date folosind interacțiunea completă în modul shell
- Indiferent de comandă pe care o folosim, aceasta se va reflecta în modelul de date HBase
- Folosim comenzi de shell HBase în interpreții de script ale sistemului de operare, cum ar fi shell-ul Bash
- Bash shell este interpretul implicit de comenzi pentru majoritatea Linux si Unix distribuţii de operare
- Versiunile avansate HBase oferă comenzi shell referințe orientate obiect în stil jruby pentru tabele
- Variabilele de referință de tabel pot fi utilizate pentru a efectua operațiuni de date în modul shell HBase
De exemplu,
- În acest tutorial, am creat un tabel în care „educație” reprezintă numele tabelului și corespunde numelui coloanei „guru99”.
- În unele comenzi „guru99”, el însuși reprezintă un nume de tabel.
Comenzi generale
În Hbase, comenzile generale sunt clasificate în următoarele comenzi
- Stare
- Versiune
- Table_help (scanare, drop, get, put, dezable etc.)
- Cine sunt
Pentru a intra în comanda shell HBase, în primul rând, trebuie să executăm codul așa cum este menționat mai jos
hbase Shell
Odată ce ajungem să intrăm în shell HBase, putem executa toate comenzile shell menționate mai jos. Cu ajutorul acestor comenzi, putem efectua toate tipurile de operații pe tabel în modul shell HBase.
Să analizăm toate aceste comenzi și utilizarea lor una câte una cu un exemplu.
Stare
Syntax:status
Această comandă va oferi detalii despre starea sistemului, cum ar fi un număr de servere prezente în cluster, numărul de servere active și valoarea medie a încărcării. De asemenea, puteți transmite orice parametri anume, în funcție de cât de detaliat doriți să aflați despre sistem. Parametrii pot fi „rezumat”, „simplu” sau „detaliat”, parametrul implicit furnizat este „rezumat”.
Mai jos am arătat cum puteți trece diferiți parametri la comanda de stare.
Dacă observăm captura de ecran de mai jos, ne vom face o idee mai bună.
hbase(main):001:0>status hbase(main):002:0>status 'simple' hbase(main):003:0>status 'summary' hbase(main):004:0> status 'detailed'
Când executăm această stare de comandă, va oferi informații despre numărul de servere prezente, serverele moarte și încărcarea medie a serverului, aici în captură de ecran arată informații precum- 1 server live, 1 server mort și încărcare medie de 7.0000.
Versiune
Syntax: version
- Această comandă va afișa versiunea HBase utilizată curent în modul de comandă
- Dacă rulați comanda versiune, aceasta va da rezultate așa cum se arată mai sus
Ajutor de masă
Syntax:table_help
Această comandă ghidează
- Ce și cum să utilizați comenzile cu referință la tabel
- Acesta va oferi diferite utilizări ale comenzilor shell HBase și sintaxele acesteia
- Aici, în captura de ecran de mai sus, arată sintaxa „crea" și "get_table” comanda cu utilizarea sa. Putem manipula tabelul prin aceste comenzi odată ce tabelul este creat în HBase.
- Acesta va oferi comenzi de manipulare a tabelelor precum put, get și toate celelalte informații despre comenzi.
cine sunt
Sintaxă:
Syntax: Whoami
Această comandă „whoami” este folosită pentru a returna informațiile curente ale utilizatorului HBase din clusterul HBase.
Acesta va oferi informații precum
- Grupuri prezente în HBază
- Informațiile despre utilizator, de exemplu, în acest caz, „hduser” reprezintă numele de utilizator așa cum se arată în captura de ecran
TTL (Time To Live) – Atribut
În HBase, familiile de coloane pot fi setate la valori de timp în secunde folosind TTL. HBase va șterge automat rândurile odată ce timpul de expirare este atins. Acest atribut se aplică tuturor versiunilor unui rând – chiar și versiunii curente.
Ora TTL codificată în HBase pentru rând este specificată în UTC. Acest atribut este utilizat cu comenzile de gestionare a tabelelor.
Diferențele importante între gestionarea TTL și TTL-urile familiei de coloane sunt mai jos
- TTL-urile celulelor sunt exprimate în unități de milisecunde în loc de secunde.
- TTL-urile unei celule nu pot prelungi durata de viață efectivă a unei celule dincolo de o setare TTL la nivel de familie de coloane.
Comenzi de gestiune a tabelelor
Aceste comenzi vor permite programatorilor să creeze tabele și scheme de tabele cu linii și familii de coloane.
Următoarele sunt comenzi pentru managementul tabelelor
- Crea
- Listă
- Descrie
- Dezactivați
- Dezactivați toate
- Permite
- Permite tuturor
- Picătură
- Drop_all
- Afișați_filtre
- Vârstă
- Alter_status
Să ne uităm la utilizarea diferitelor comenzi în HBase cu un exemplu.
Crea
Syntax: create <tablename>, <columnfamilyname>
Exemplu:-
hbase(main):001:0> create 'education' ,'guru99' 0 rows(s) in 0.312 seconds =>Hbase::Table – education
Exemplul de mai sus explică cum să creați un tabel în HBase cu numele specificat dat conform dicționarului sau specificațiilor conform familiei de coloane. În plus față de aceasta, putem trece și unele atribute de tip table-scope în el.
Pentru a verifica dacă tabelul „educație” este sau nu creat, trebuie să folosim "listă" comanda așa cum este menționat mai jos.
Listă
Syntax:list
- Comanda „List” va afișa toate tabelele care sunt prezente sau create în HBase
- Ieșirea afișată în captura de ecran de mai sus arată în prezent tabelele existente în HBase
- Aici, în această captură de ecran, arată că există un total de 8 tabele prezente în interiorul HBase
- Putem filtra valorile de ieșire din tabele prin transmiterea unor parametri opționali de expresie regulată
Descrie
Syntax:describe <table name>
hbase(main):010:0>describe 'education'
Această comandă descrie tabelul numit.
- Acesta va oferi mai multe informații despre familiile de coloane prezente în tabelul menționat
- În cazul nostru, oferă descrierea despre tabelul „educație”.
- Acesta va oferi informații despre numele tabelului cu familiile de coloane, filtrele asociate, versiunile și câteva detalii suplimentare.
dezactivați
Syntax: disable <tablename>
hbase(main):011:0>disable 'education'
- Această comandă va începe să dezactiveze tabelul numit
- Dacă tabelul trebuie șters sau abandonat, mai întâi trebuie să fie dezactivat
Aici, în captura de ecran de mai sus, dezactivăm educația la masă
dezactivați toate
Syntax: disable_all<"matching regex"
- Această comandă va dezactiva toate tabelele care se potrivesc cu expresia regex dată.
- Implementarea este aceeași cu comanda de ștergere (cu excepția adăugării regex pentru potrivire)
- Odată ce tabelul este dezactivat, utilizatorul poate șterge tabelul din HBase
- Înainte de a șterge sau a arunca tabelul, acesta ar trebui să fie mai întâi dezactivat
Permite
Syntax: enable <tablename>
hbase(main):012:0>enable 'education'
- Această comandă va începe să activeze tabelul numit
- Indiferent de tabelă care este dezactivată, pentru a reveni la starea anterioară, folosim această comandă
- Dacă un tabel este dezactivat în primă instanță și nu este șters sau abandonat și dacă dorim să reutilizam tabelul dezactivat, atunci trebuie să îl activăm folosind această comandă.
- Aici, în captura de ecran de mai sus, activăm tabelul „educație”.
arată_filtre
Syntax: show_filters
Această comandă afișează toate filtrele prezente în HBase, cum ar fi ColumnPrefix Filter, TimestampsFilter, PageFilter, FamilyFilter etc.
picătură
Syntax:drop <table name>
hbase(main):017:0>drop 'education'
Trebuie să observăm punctele de mai jos pentru comanda drop
- Pentru a șterge tabelul prezent în HBase, mai întâi trebuie să îl dezactivăm
- Pentru a renunța la tabelul prezent în HBase, mai întâi trebuie să-l dezactivăm
- Deci, fie tabelul pentru a arunca sau șterge mai întâi tabelul ar trebui să fie dezactivat folosind comanda disable
- Aici, în captura de ecran de mai sus, aruncăm tabelul „educație”.
- Înainte de executarea acestei comenzi, este necesar să dezactivați tabelul „educație”.
drop_all
Syntax: drop_all<"regex">
- Această comandă va elimina toate tabelele care se potrivesc cu expresia regex dată
- Tabelele trebuie să se dezactiveze mai întâi înainte de a executa această comandă folosind disable_all
- Tabelele cu expresii de potrivire regex vor fi eliminate din HBase
este activat
Syntax: is_enabled 'education'
Această comandă va verifica dacă tabelul numit este activat sau nu. De obicei, există o mică confuzie între acțiunea de comandă „activare” și „is_enabled”, pe care o clarificăm aici
- Să presupunem că un tabel este dezactivat, pentru a utiliza acel tabel trebuie să îl activăm folosind comanda enable
- Comanda is_enabled va verifica dacă tabelul este activat sau nu
modifica
Syntax: alter <tablename>, NAME=><column familyname>, VERSIONS=>5
Această comandă modifică schema familiei de coloane. Pentru a înțelege exact ce face, am explicat aici cu un exemplu.
Exemple:
În aceste exemple, vom efectua operații de modificare a comenzii pe tabele și pe coloanele sale. Vom efectua operațiuni de genul
- Modificarea numelor de familie cu o singură coloană și mai multe
- Ștergerea numelor de familie de coloane din tabel
- Câteva alte operațiuni care folosesc atribute scope cu tabel
- Pentru a modifica sau adăuga familia de coloane „guru99_1” în tabelul „educație” de la valoarea actuală, pentru a păstra maximum 5 celule VERSIUNI,
- „educație” este numele tabelului creat anterior cu numele coloanei „guru99”.
- Aici, cu ajutorul unei comenzi alter, încercăm să schimbăm schema familiei de coloane la guru99_1 din guru99
hbase> alter 'education', NAME='guru99_1', VERSIONS=>5
- De asemenea, puteți opera comanda alter și pe mai multe familii de coloane. De exemplu, vom defini două noi coloane în tabelul nostru existent „educație”.
hbase> alter 'edu', 'guru99_1', {NAME => 'guru99_2', IN_MEMORY => true}, {NAME => 'guru99_3', VERSIONS => 5}
- Putem schimba mai multe scheme de coloane simultan folosind această comandă
- guru99_2 și guru99_3, așa cum se arată în captura de ecran de mai sus, sunt cele două nume de coloane noi pe care le-am definit pentru educația tabelului
- Putem vedea modul de utilizare a acestei comenzi în captura de ecran anterioară
- În acest pas, vom vedea cum să ștergem familia de coloane din tabel. Pentru a șterge familia de coloane „f1” din tabelul „educație”.
Utilizați una dintre aceste comenzi de mai jos,
hbase> alter 'education', NAME => 'f1', METHOD => 'delete'
hbase> alter 'education', 'delete' =>' guru99_1'
- În această comandă, încercăm să ștergem numele spațiului de coloană guru99_1 pe care l-am creat anterior la primul pas
- După cum se arată în capturile de ecran de mai jos, arată doi pași – cum să schimbați atributul domeniului tabelului și cum să eliminați atributul domeniului tabelului.
Syntax: alter <'tablename'>, MAX_FILESIZE=>'132545224'
Pas 1) Puteți modifica atributele tabelului precum MAX_FILESIZE, READONLY, MEMSTORE_FLUSHSIZE, DEFERRED_LOG_FLUSH etc. Acestea pot fi puse la sfârșit; de exemplu, pentru a schimba dimensiunea maximă a unei regiuni la 128MB sau orice altă valoare de memorie folosim această comandă.
Utilizare:
- Putem folosi MAX_FILESIZE cu tabelul ca atribut scope ca mai sus
- Numărul reprezentat în MAX_FILESIZE este în termeni de memorie în octeți
NOTE: Domeniul tabelului de atribute MAX_FILESIZE va fi determinat de unele atribute prezente în HBase. MAX_FILESIZE intră, de asemenea, în atributele domeniului tabelului.
Pas 2) De asemenea, puteți elimina un atribut table-scope folosind metoda table_att_unset. Dacă vedeți comanda
alter 'education', METHOD => 'table_att_unset', NAME => 'MAX_FILESIZE'
- Captura de ecran de mai sus arată numele tabelului modificat cu atributele domeniului
- Metoda table_att_unset este folosită pentru a anula atributele prezente în tabel
- A doua instanță dezactivăm atributul MAX_FILESIZE
- După executarea comenzii, pur și simplu va dezactiva atributul MAX_FILESIZE din tabelul „educație”.
alter_status
Syntax: alter_status 'education'
- Prin această comandă, puteți obține starea comenzii de modificare
- Care indică numărul de regiuni ale tabelului care au primit numele tabelului de trecere a schemei actualizat
- Aici, în captura de ecran de mai sus, arată 1/1 regiuni actualizate. Înseamnă că a actualizat o regiune. După aceea, dacă reușește, va afișa comentariul terminat.
Comenzi de manipulare a datelor
Aceste comenzi vor funcționa pe tabelul legat de manipulările de date, cum ar fi introducerea datelor într-un tabel, preluarea datelor dintr-un tabel și ștergerea schemei etc.
Comenzile intră sub acestea sunt
- Conta
- Pune
- Obține
- Șterge
- Sterge tot
- Trunchia
- Scanda
Să ne uităm la utilizarea acestor comenzi cu un exemplu.
Conta
Syntax: count <'tablename'>, CACHE =>1000
- Comanda va prelua numărul unui număr de rânduri dintr-un tabel. Valoarea returnată de acesta este numărul de rânduri.
- Numărul curent este afișat implicit la fiecare 1000 de rânduri.
- Intervalul de numărare poate fi specificat opțional.
- Dimensiunea implicită a memoriei cache este de 10 rânduri.
- Comanda Count va funcționa rapid atunci când este configurată cu Cache-ul corect.
Exemplu:
hbase> count 'guru99', CACHE=>1000
Acest număr de exemplu preia 1000 de rânduri simultan din tabelul „Guru99”.
Putem face cache la o valoare mai mică dacă tabelul constă din mai multe rânduri.
Dar implicit va prelua câte un rând.
hbase>count 'guru99', INTERVAL => 100000 hbase> count 'guru99', INTERVAL =>10, CACHE=> 1000
Dacă presupunem că tabelul „Guru99” are o referință la tabel, cum ar fi, spune g.
Putem rula comanda count pe referința tabelului, de asemenea, ca mai jos
hbase>g.count INTERVAL=>100000 hbase>g.count INTERVAL=>10, CACHE=>1000
Pune
Syntax: put <'tablename'>,<'rowname'>,<'columnvalue'>,<'value'>
Această comandă este folosită pentru următoarele lucruri
- Va pune o „valoare” celulei la un tabel, un rând sau o coloană definite sau specificate.
- Opțional va coordona ștampila de timp.
Exemplu:
- Aici plasăm valori în tabelul „guru99” sub rândul r1 și coloana c1
hbase> put 'guru99', 'r1', 'c1', 'value', 10
- Am plasat trei valori, 10,15 și 30 în tabelul „guru99”, așa cum se arată în captura de ecran de mai jos
- Să presupunem că tabelul „Guru99” are o referință de tabel cum ar fi g. De asemenea, putem rula comanda pe referința tabelului
hbase> g.put 'guru99', 'r1', 'c1', 'value', 10
- Ieșirea va fi așa cum se arată în captura de ecran de mai sus după plasarea valorilor în „guru99”.
Pentru a verifica dacă valoarea de intrare este introdusă corect în tabel, folosim comanda „scanare”. În captura de ecran de mai jos, putem vedea că valorile sunt introduse corect
Fragment de cod: pentru practică
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
Din fragmentul de cod, facem aceste lucruri
- Aici creăm un tabel numit „guru99” cu numele coloanei „Edu”.
- Folosind comanda „put”, plasăm valori în numele rândului r1 din coloana „Edu” în tabelul „guru99”.
Obține
Syntax: get <'tablename'>, <'rowname'>, {< Additional parameters>}
Aici includ TIMERANGE, TIMESTAMP, VERSIONS și FILTRE.
Folosind această comandă, veți obține un conținut de rând sau celulă prezent în tabel. În plus, puteți adăuga și parametri suplimentari, cum ar fi TIMESTAMP, TIMERANGE, VERSIONS, FILTERS etc. pentru a obține un anumit rând sau conținut de celulă.
Exemple:-
hbase> get 'guru99', 'r1', {COLUMN => 'c1'}
Pentru tabelul „guru99′ valorile rândului r1 și coloana c1 vor fi afișate folosind această comandă, așa cum se arată în captura de ecran de mai sus
hbase> get 'guru99', 'r1'
Pentru tabelul „guru99″, valorile r1 ale rândului vor fi afișate folosind această comandă
hbase> get 'guru99', 'r1', {TIMERANGE => [ts1, ts2]}
Pentru tabelul „guru99” rândul 1, valorile din intervalul de timp ts1 și ts2 vor fi afișate folosind această comandă
hbase> get 'guru99', 'r1', {COLUMN => ['c1', 'c2', 'c3']}
Pentru tabelul „guru99” rândul r1 și familiile de coloane, valorile c1, c2, c3 vor fi afișate folosind această comandă
Șterge
Syntax:delete <'tablename'>,<'row name'>,<'column name'>
- Această comandă va șterge valoarea celulei din tabelul definit de rând sau coloană.
- Ștergerea trebuie și ar trebui să se potrivească exact cu coordonatele celulelor șterse.
- La scanare, ștergerea celulei suprimă versiunile mai vechi ale valorilor.
Exemplu:
hbase(main):)020:0> delete 'guru99', 'r1', 'c1''.
- Execuția de mai sus va șterge rândul r1 din familia de coloane c1 din tabelul „guru99”.
- Să presupunem că tabelul „guru99” are o referință de tabel, cum ar fi g.
- Putem rula comanda pe referința tabelului, de asemenea hbase> g.delete 'guru99', 'r1', 'c1′”.
sterge tot
Syntax: deleteall <'tablename'>, <'rowname'>
- Această comandă va șterge toate celulele dintr-un rând dat.
- Putem defini opțional nume de coloane și marca temporală pentru sintaxă.
Exemplu:-
hbase>deleteall 'guru99', 'r1', 'c1'
Aceasta va șterge toate rândurile și coloanele prezente în tabel. Opțional, putem menționa numele coloanelor în acestea.
Trunchia
Syntax: truncate <tablename>
După trunchierea unui tabel hbase, schema va prezenta, dar nu și înregistrările. Această comandă îndeplinește 3 funcții; acestea sunt enumerate mai jos
- Dezactivează tabelul dacă este deja prezentat
- Aruncă masa dacă este deja prezentată
- Recreează tabelul menționat
Scanda
Syntax: scan <'tablename'>, {Optional parameters}
Această comandă scanează întregul tabel și afișează conținutul tabelului.
- Putem transmite câteva specificații opționale acestei comenzi de scanare pentru a obține mai multe informații despre tabelele prezente în sistem.
- Specificațiile scanerului pot include unul sau mai multe dintre următoarele atribute.
- Acestea sunt TIMERANGE, FILTER, TIMESTAMP, LIMIT, MAXLENGTH, COLUMNS, CACHE, STARTROW și STOPROW.
scan 'guru99'
Ieșirea ca mai jos este prezentată în captura de ecran
În captura de ecran de mai sus
- Afișează tabelul „guru99” cu numele și valorile coloanei
- Este alcătuit din trei valori de rând r1, r2, r3 pentru valoarea c1 pe o singură coloană
- Afișează valorile asociate rândurilor
Exemple:-
Diferitele utilizări ale comenzii de scanare
Comandă | Folosire |
---|---|
scanează '.META.', {COLUMNS => 'info:regioninfo'} | Afișează toate informațiile metadate legate de coloanele care sunt prezente în tabelele din HBase |
scanează 'guru99', {COLUMNS => ['c1', 'c2'], LIMIT => 10, STARTROW => 'xyz'} | Afișează conținutul tabelului guru99 cu familiile lor de coloane c1 și c2 limitând valorile la 10 |
scanează 'guru99', {COLUMNS => 'c1', TIMERANGE => [1303668804, 1303668904]} | Afișează conținutul guru99 cu numele de coloană c1 cu valorile prezente între valoarea atributului de interval de timp menționat |
scanează „guru99”, {RAW => true, VERSIONS =>10} | În această comandă RAW => true oferă o funcție avansată, cum ar fi afișarea tuturor valorilor celulelor prezente în tabelul guru99 |
Exemplu de cod:
Mai întâi creați tabel și plasați valori în tabel
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
Captură de ecran de intrare:
Dacă rulăm comanda de scanare
Query: scan 'guru99', {RAW=>true, VERSIONS=>1000}
Va afișa rezultatul prezentat mai jos.
Captură de ecran de ieșire:
Rezultatul afișat în captura de ecran de mai sus oferă următoarele informații
- Scanare tabel guru99 cu atribute RAW=>true, VERSIONS=>1000
- Afișarea rândurilor cu familii de coloane și valori
- În al treilea rând, valorile afișate arată valoarea ștearsă prezentă în coloană
- Ieșirea afișată de acesta este aleatorie; nu poate fi aceeași ordine cu valorile pe care le-am introdus în tabel
Cluster Comenzi de replicare
- Aceste comenzi funcționează în modul de configurare a clusterului al HBase.
- Pentru adăugarea și eliminarea peer-urilor în cluster și pentru a porni și opri replicarea, aceste comenzi sunt utilizate în general.
Comandă | Funcționalitate |
---|---|
add_peer | Adăugați peers la cluster pentru a le replica
hbase> add_peer '3', zk1,zk2,zk3:2182:/hbase-prod |
remove_peer | Oprește fluxul de replicare definit.
Șterge toate informațiile despre metadate despre peer hbase> remove_peer '1' |
start_replication | Repornește toate caracteristicile de replicare
hbase> start_replication |
stop_replication | Oprește toate caracteristicile de replicare
hbase>stop_replication |
Rezumat
Comenzile generale și shell-ul HBase oferă informații complete despre diferitele tipuri de manipulare a datelor, gestionarea tabelelor și comenzile de replicare a clusterului. Putem efectua diverse funcții folosind aceste comenzi pe tabele prezente în HBase.