Команди на HBase Shell с примери
⚡ Умно обобщение
Командите на HBase shell ви позволяват да управлявате таблици и данни директно от интерактивен команден ред, групирани в общи команди, команди за управление на таблици като create и drop, команди за манипулиране на данни като put и get и команди за репликация на клъстери.
Как да взаимодействате с HBase, използвайки команди на Shell Java API
След успешна инсталация на HBase върху Hadoop, получаваме интерактивна обвивка за изпълнение на различни команди и извършване на редица операции. Използвайки тези команди, можем да извършваме множество операции върху таблици с данни, което осигурява по-добра ефективност на съхранението на данни и гъвкаво взаимодействие за клиента.
Можем да взаимодействаме с HBase по два начина:
- Интерактивен режим на обвивката на HBase и
- През Java API.
В HBase, интерактивният режим на обвивка се използва за взаимодействие с HBase за таблични операции, управление на таблици и моделиране на данни. Java API модел, можем да извършваме всички видове операции с таблици и данни в HBase. Можем да взаимодействаме с HBase, използвайки и двата метода. Единствената разлика между двата е, че Java Употреби на API Java код за свързване с HBase, докато режимът на shell използва команди на shell за свързване с HBase.
Бърз преглед на HBase, преди да продължим:
- HBase използва Hadoop файлове като система за съхранение на големи количества данни. HBase се състои от главни сървъри и регионални сървъри.
- Данните, които ще се съхраняват в HBase, ще бъдат под формата на региони. Освен това, тези региони ще бъдат разделени и съхранени на множество регионални сървъри.
- Тези команди на shell позволяват на програмиста да дефинира схеми на таблици и операции с данни, използвайки пълно взаимодействие в режим на shell.
- Която и команда да използваме, тя ще се отрази в модела на данните на HBase.
- Използваме HBase shell команди в интерпретатори на скриптове на операционната система, като например Bash shell.
- Bash shell е командният интерпретатор по подразбиране за повечето Linux и дистрибуции на операционни системи Unix.
- Разширените версии на HBase предоставят команди на обвивката с обектно-ориентирани препратки за таблици в стил JRuby.
- Променливите за справка с таблици могат да се използват за извършване на операции с данни в режим на обвивка на HBase.
Например:
- В този урок създадохме таблица, в която „education“ представлява името на таблицата и съответства на името на колоната „guru99“.
- В някои команди, „guru99“ само по себе си представлява име на таблица.
Общи команди
В HBase общите команди са категоризирани в следните команди:
- Статус
- версия
- Table_help (сканиране, пускане, получаване, поставяне, деактивиране и т.н.)
- Кой съм аз
За да влезем в командата на HBase shell, първо трябва да изпълним кода, както е посочено по-долу.
hbase Shell
След като влезем в HBase shell, можем да изпълним всички команди, споменати по-долу. С помощта на тези команди можем да извършваме всички видове таблични операции в режим на HBase shell. Интерактивният команден ред се появява, както е показано по-долу:
Нека разгледаме всички тези команди и тяхното използване една по една с пример.
Статус
Syntax:status
Тази команда ще предостави подробности за състоянието на системата, като например броя на сървърите в клъстера, броя на активните сървъри и средната стойност на натоварване. Можете също така да подадете конкретни параметри в зависимост от това колко подробно състояние искате да знаете за системата. Параметрите могат да бъдат „обобщение“, „просто“ или „подробно“; предоставеният параметър по подразбиране е „обобщение“.
По-долу показахме как можете да предавате различни параметри на командата status. Ако разгледаме екранната снимка по-долу, ще добием по-добра представа.
hbase(main):001:0>status hbase(main):002:0>status 'simple' hbase(main):003:0>status 'summary' hbase(main):004:0> status 'detailed'
Изходът за състоянието е показан по-долу:
Когато изпълним тази команда за състояние, тя дава информация за броя на наличните сървъри, неработещите сървъри и средното натоварване на сървъра. Тук екранната снимка показва информация като 1 работещ сървър, 1 неработещ сървър и средно натоварване от 7.0000.
версия
Syntax: version
Изходът на версията е показан по-долу:
- Тази команда ще покаже текущо използваната версия на HBase в команден режим.
- Ако изпълните командата version, тя ще даде резултат, както е показано по-горе.
Помощ за таблица
Syntax:table_help
Изходът на table_help е показан по-долу:
Тази команда насочва:
- Какво представляват командите, препратени към таблици, и как да ги използваме.
- Ще предостави различни начини за използване на команди на HBase shell и техния синтаксис.
- Тук, на екранната снимка по-горе, е показан синтаксисът на командите „create“ и „get_table“ с тяхното използване. Можем да манипулираме таблицата чрез тези команди, след като тя бъде създадена в HBase.
- Той ще дава команди за манипулиране на таблици като put, get и всякаква друга информация за командите.
Whoami
Syntax: Whoami
Изходът на whoami е показан по-долу:
Командата „whoami“ се използва за връщане на текущата информация за потребителя на HBase от клъстера HBase. Тя ще предостави информация като:
- Групи, присъстващи в HBase.
- Информацията за потребителя; например, в този случай „hduser“ представлява потребителското име, както е показано на екранната снимка.
TTL (Time To Live) – Атрибут
В HBase, семействата колони могат да бъдат зададени на времеви стойности в секунди, използвайки TTL. HBase автоматично ще изтрие редове, след като се достигне времето на изтичане. Този атрибут се отнася за всички версии на ред, дори за текущата версия.
TTL времето, кодирано в HBase за реда, е посочено в UTC. Този атрибут се използва с команди за управление на таблици. Важни разлики между обработката на TTL и TTL-тата за семейство колони са посочени по-долу:
- TTL на клетката се изразяват в единици милисекунди вместо секунди.
- TTL на клетката не може да удължи ефективния живот на клетката отвъд настройката на TTL на ниво семейство колони.
Команди за управление на таблици
Тези команди ще позволят на програмистите да създават таблици и схеми на таблици със семейства от редове и колони. Следните команди са командите за управление на таблици:
- Създаване на
- списък
- Описвам
- Правя неспособен
- Деактивиране_всички
- Разреши
- Enable_all
- Спад
- Drop_all
- Покажи_филтри
- Възраст
- Промяна_състояние
Нека разгледаме различните употреби на команди в HBase с един пример.
Създаване на
Syntax: create <tablename>, <columnfamilyname>
Пример:-
hbase(main):001:0> create 'education' ,'guru99' 0 rows(s) in 0.312 seconds =>Hbase::Table – education
Резултатът от командата create е показан по-долу:
Горният пример обяснява как да се създаде таблица в HBase с посоченото име, дадено съгласно спецификациите за всяко семейство колони. В допълнение към това, можем да ѝ предадем и някои атрибути за обхват на таблицата. За да проверим дали таблицата „education“ е създадена или не, използваме командата „list“ по-долу. Вижте също създаване на HBase таблици с Java и черупка.
списък
Syntax:list
Изходът от списъка е показан по-долу:
- Командата „list“ ще покаже всички таблици, които са налични или създадени в HBase.
- Резултатът, показан на горната екранна снимка, в момента показва съществуващите таблици в HBase.
- Тук, на тази екранна снимка, се вижда, че в HBase има общо 8 таблици.
- Можем да филтрираме изходните стойности от таблиците, като им подадем незадължителни параметри на регулярни изрази.
Описвам
Syntax:describe <table name>
hbase(main):010:0>describe 'education'
Изходът от описанието е показан по-долу:
Тази команда описва наименуваната таблица.
- Това ще даде повече информация за семействата колони, присъстващи в споменатата таблица.
- В нашия случай, това дава описанието на таблицата „образование“.
- Ще предостави информация за името на таблицата със семейства колони, свързани филтри, версии и някои други подробности.
правя неспособен
Syntax: disable <tablename>
hbase(main):011:0>disable 'education'
Изходът за деактивиране е показан по-долу:
- Тази команда ще започне деактивирането на посочената таблица.
- Ако дадена таблица трябва да бъде изтрита или премахната, първо тя трябва да бъде деактивирана.
Тук, на горната екранна снимка, деактивираме обучението по таблица.
забрани_всички
Syntax: disable_all<"matching regex"
- Тази команда ще деактивира всички таблици, съответстващи на дадения регулярен израз.
- Имплементацията е същата като на командата drop (с изключение на добавянето на регулярен израз за съвпадение).
- След като таблицата бъде деактивирана, потребителят може да я изтрие от HBase.
- Преди изтриване или пусканеping таблица, първо трябва да се деактивира.
Разреши
Syntax: enable <tablename>
hbase(main):012:0>enable 'education'
Изходът за активиране е показан по-долу:
- Тази команда ще започне да активира посочената таблица.
- Която и таблица да е деактивирана, за да я върнем в предишното ѝ състояние, използваме тази команда.
- Ако дадена таблица е деактивирана първоначално и не е изтрита или премахната, и ако искаме да използваме повторно деактивираната таблица, тогава трябва да я активираме, като използваме тази команда.
- Тук, на горната екранна снимка, активираме таблицата „образование“.
показване на филтри
Syntax: show_filters
Изходът на show_filters е показан по-долу:
Тази команда показва всички филтри, налични в HBase, като ColumnPrefixFilter, TimestampsFilter, PageFilter, FamilyFilter и др.
спад
Syntax:drop <table name>
hbase(main):017:0>drop 'education'
Изходът на капката е показан по-долу:
Трябва да спазваме следните точки за командата drop:
- За да изтрием таблицата, налична в HBase, първо трябва да я деактивираме.
- За да премахнем таблицата, налична в HBase, първо трябва да я деактивираме.
- Така че, за да премахнете или изтриете таблица, първо таблицата трябва да бъде деактивирана с помощта на командата disable.
- Тук, на горната екранна снимка, ние сме пуснатиping таблицата „образование“.
- Преди изпълнението на тази команда е необходимо да деактивирате таблицата „education“.
drop_all
Syntax: drop_all<"regex">
- Тази команда ще премахне всички таблици, съответстващи на дадения регекс.
- Таблиците трябва първо да бъдат деактивирани, преди да се изпълни тази команда, използвайки disable_all.
- Таблици с изрази, съответстващи на регулярни изрази, ще бъдат премахнати от HBase.
е_разрешено
Syntax: is_enabled 'education'
Тази команда ще провери дали посочената таблица е активирана или не. Обикновено има малко объркване между действията на командите „enable“ и „is_enabled“, което ще изясним тук:
- Да предположим, че една таблица е деактивирана; за да използваме тази таблица, трябва да я активираме, като използваме командата enable.
- Командата is_enabled ще провери дали таблицата е активирана или не.
променя
Syntax: alter <tablename>, NAME=><column familyname>, VERSIONS=>5
Тази команда променя схемата на семейството на колоните. За да разберете какво точно прави, тук сме го обяснили с пример.
Примери: В тези примери ще извършим операции с командата alter върху таблици и техните колони. Ще извършим операции като:
- Промяна на имената на семейства с една и няколко колони.
- Изтриване на имена на семейства колони от таблица.
- Няколко други операции, използващи атрибути на обхват с таблица.
За да промените или добавите семейството колони „guru99_1“ в таблица „education“ от текущата стойност, за да запазите максимум 5 клетки VERSIONS. Тук „education“ е името на таблицата, създадена с името на колоната „guru99“ преди това. С помощта на командата alter се опитваме да променим схемата на семейството колони на guru99_1 от guru99, както е показано по-долу:
hbase> alter 'education', NAME='guru99_1', VERSIONS=>5
Можете също така да използвате командата alter и за няколко семейства колони. Например, ще дефинираме две нови колони за съществуващата ни таблица „образование“, както е показано по-долу:
hbase> alter 'edu', 'guru99_1', {NAME => 'guru99_2', IN_MEMORY => true}, {NAME => 'guru99_3', VERSIONS => 5}
- Можем да променяме повече от една схема на колони едновременно, използвайки тази команда.
- guru99_2 и guru99_3, както е показано на екранната снимка по-горе, са двете нови имена на колони, които сме дефинирали за таблицата education.
- Можем да видим начина на използване на тази команда на предишната екранна снимка.
В тази стъпка ще видим как да изтрием семейство колони от таблицата. За да изтриете семейството колони „f1“ в таблица „education“, използвайте една от командите по-долу. Резултатът е показан на екранната снимка по-долу:
hbase> alter 'education', NAME => 'f1', METHOD => 'delete'
hbase> alter 'education', 'delete' =>' guru99_1'
В тази команда се опитваме да изтрием колонното пространство с име guru99_1, което създадохме в първата стъпка. Както е показано на екранните снимки по-долу, са показани две стъпки: как да промените атрибута на обхвата на таблицата и как да го премахнете.
Syntax: alter <'tablename'>, MAX_FILESIZE=>'132545224'
Стъпка 1) Можете да промените атрибутите на табличния обхват, като MAX_FILESIZE, READONLY, MEMSTORE_FLUSHSIZE, DEFERRED_LOG_FLUSH и др. Те могат да бъдат поставени в края; например, за да променим максималния размер на регион на 128MB или друга стойност на паметта, използваме тази команда.
Начин на употреба:
- Можем да използваме MAX_FILESIZE с таблицата като атрибут на обхват, както по-горе.
- Числото, представено в MAX_FILESIZE, е изразено в памет в байтове.
ЗАБЕЛЕЖКА: Обхватът на таблицата MAX_FILESIZE ще се определя от някои атрибути, налични в HBase. MAX_FILESIZE също попада в атрибутите на обхвата на таблицата.
Стъпка 2) Можете също да премахнете атрибут от table-scope, като използвате метода table_att_unset. Вижте командата по-долу:
alter 'education', METHOD => 'table_att_unset', NAME => 'MAX_FILESIZE'
- Горната екранна снимка показва промененото име на таблицата с атрибути на обхвата.
- Методът table_att_unset се използва за премахване на атрибутите, налични в таблицата.
- Във втория случай премахваме стойността на атрибута MAX_FILESIZE.
- След изпълнение на командата, тя просто ще премахне атрибута MAX_FILESIZE от таблицата „education“.
промяна_статус
Syntax: alter_status 'education'
Изходът на alter_status е показан по-долу:
- Чрез тази команда можете да получите състоянието на командата alter.
- Показва броя на регионите на таблицата, които са получили актуализираната схема. Вие предавате името на таблицата.
- Тук, на горната екранна снимка, се показва, че са актуализирани 1/1 региона. Това означава, че е актуализиран един регион. След това, ако е успешно, ще се покаже коментарът „готово“.
Команди за манипулиране на данни
Тези команди работят с таблицата за манипулиране на данни, като например поставяне на данни в таблица, извличане на данни от таблица и изтриване на схема и др. Командите, които попадат под тях, са:
- Броя
- Слагам
- Обратна
- Изтрий
- Изтриване на всички
- пресечен
- Сканиране
Нека разгледаме тези употреби на команди с пример. Вижте също четене и запис на HBase данни.
Броя
Syntax: count <'tablename'>, CACHE =>1000
- Командата ще извлече броя на редовете в таблица. Върнатата от нея стойност е броят на редовете.
- Текущият брой се показва по подразбиране на всеки 1000 реда.
- Интервалът на броене може да бъде зададен по избор.
- Размерът на кеша по подразбиране е 10 реда.
- Командата count ще работи бързо, когато е конфигурирана с правилния кеш.
Пример:
hbase> count 'guru99', CACHE=>1000
Изходът от брояча е показан по-долу:
Този примерен брой извлича по 1000 реда наведнъж от таблицата „guru99“. Можем да направим кеша с по-ниска стойност, ако таблицата се състои от повече редове. Но по подразбиране ще се извлича по един ред наведнъж.
hbase>count 'guru99', INTERVAL => 100000 hbase> count 'guru99', INTERVAL =>10, CACHE=> 1000
Да предположим, че таблицата „guru99“ има някаква таблица, например g. Можем да изпълним командата count и върху таблицата, както е показано по-долу:
hbase>g.count INTERVAL=>100000 hbase>g.count INTERVAL=>10, CACHE=>1000
Слагам
Syntax: put <'tablename'>,<'rowname'>,<'columnvalue'>,<'value'>
Тази команда се използва за следните неща:
- Той ще постави „стойност“ на клетка в определена или определена таблица, ред или колона.
- По желание ще координира времеви печат.
Пример: Тук поставяме стойности в таблица „guru99“ под ред r1 и колона c1.
hbase> put 'guru99', 'r1', 'c1', 'value', 10
Поставили сме три стойности, 10, 15 и 30, в таблица „guru99“, както е показано на екранната снимка по-долу.
Да предположим, че таблицата „guru99“ има някаква препратка към таблицата, например g. Можем също да изпълним командата върху препратката към таблицата, като:
hbase> g.put 'guru99', 'r1', 'c1', 'value', 10
Резултатът ще бъде както е показано на горната екранна снимка след въвеждане на стойности в „guru99“. За да проверим дали входната стойност е правилно въведена в таблицата, използваме командата „scan“. На екранната снимка по-долу можем да видим, че стойностите са въведени правилно.
Code Откъс: За практика
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
От фрагмента на кода правим следните неща:
- Тук създаваме таблица с име „guru99“ с име на колоната „Edu“.
- Чрез командата „put“ поставяме стойности в ред с име r1 в колона „Edu“ в таблица „guru99“.
Обратна
Syntax: get <'tablename'>, <'rowname'>, {< Additional parameters>}
Тук, включват TIMERANGE, TIMESTAMP, VERSIONS и FILTERS. С помощта на тази команда ще получите съдържанието на ред или клетка в таблицата. В допълнение към това, можете да добавите и допълнителни параметри към него, като TIMESTAMP, TIMERANGE, VERSIONS, FILTERS и др., за да получите съдържанието на конкретен ред или клетка.
Изходът get по-долу връща стойности на ред r1 и колона c1:
Примери:-
hbase> get 'guru99', 'r1', {COLUMN => 'c1'}
За таблица „guru99“, стойностите на ред r1 и колона c1 ще се покажат с помощта на тази команда, както е показано на екранната снимка по-горе.
hbase> get 'guru99', 'r1'
За таблица „guru99“, стойностите на ред r1 ще бъдат показани с помощта на тази команда.
hbase> get 'guru99', 'r1', {TIMERANGE => [ts1, ts2]}
За таблица „guru99“, стойностите на ред r1 във времевия диапазон ts1 до ts2 ще бъдат показани с помощта на тази команда.
hbase> get 'guru99', 'r1', {COLUMN => ['c1', 'c2', 'c3']}
За таблица „guru99“, стойностите на ред r1 и семейства колони c1, c2 и c3 ще бъдат показани с помощта на тази команда.
Изтрий
Syntax:delete <'tablename'>,<'row name'>,<'column name'>
- Тази команда ще изтрие стойността на клетката в определена таблица от ред или колона.
- Изтриването трябва и трябва да съвпада точно с координатите на изтритата клетка.
- При сканиране, клетка за изтриване потиска по-стари версии на стойностите.
Пример: Командата за изтриване по-долу премахва клетки r1, c1 от таблицата guru99:
hbase(main):)020:0> delete 'guru99', 'r1', 'c1''.
- Горното изпълнение ще изтрие ред r1 от семейство колони c1 в таблица „guru99“.
- Да предположим, че таблицата „guru99“ има някаква таблична препратка, например g.
- Можем да изпълним командата и върху таблицата с референции, като например hbase> g.delete 'guru99', 'r1', 'c1′”.
изтрий всички
Syntax: deleteall <'tablename'>, <'rowname'>
- Тази команда ще изтрие всички клетки в даден ред.
- По желание можем да дефинираме имена на колони и времеви печат в синтаксиса.
Пример: Командата deleteall по-долу премахва всяка клетка в ред r1:
hbase>deleteall 'guru99', 'r1', 'c1'
Това ще изтрие всички редове и колони в таблицата. По желание можем да споменем имената на колоните.
пресечен
Syntax: truncate <tablename>
Командата truncate по-долу изпразва таблицата, докато keeping неговата схема:
След отрязването на HBase таблица, схемата ще бъде налична, но не и записите. Тази команда изпълнява 3 функции; те са изброени по-долу:
- Деактивира таблицата, ако тя вече съществува.
- Премахва таблицата, ако тя вече съществува.
- Пресъздава споменатата таблица.
Сканиране
Syntax: scan <'tablename'>, {Optional parameters}
Тази команда сканира цялата таблица и показва съдържанието ѝ.
- Можем да предадем няколко незадължителни спецификации към тази команда за сканиране, за да получим повече информация за таблиците, налични в системата.
- Спецификациите на скенера може да включват един или повече от следните атрибути.
- Това са TIMERANGE, FILTER, TIMESTAMP, LIMIT, MAXLENGTH, COLUMNS, CACHE, STARTROW и STOPROW.
scan 'guru99'
Резултатът от сканирането е показан по-долу:
На горната екранна снимка:
- Показва таблицата „guru99“ с името на колоната и стойностите.
- Състои се от три стойности на редове, r1, r2 и r3, за стойността на единичната колона c1.
- Показва стойностите, свързани с редовете.
Примери: - Различните употреби на командата scan:
| Команда | употреба |
|---|---|
| сканиране '.META.', {COLUMNS => 'info:regioninfo'} | Той показва цялата информация за метаданните, свързана с колоните, които се намират в таблиците в HBase. |
| сканиране 'guru99', {COLUMNS => ['c1', 'c2'], LIMIT => 10, STARTROW => 'xyz'} | Показва съдържанието на таблица guru99 с техните семейства колони c1 и c2, ограничавайки стойностите до 10. |
| сканиране 'guru99', {COLUMNS => 'c1', TIMERANGE => [1303668804, 1303668904]} | Показва съдържанието на guru99 с името на колоната c1, като стойностите се намират между посочените стойности на атрибута за времеви диапазон. |
| сканиране 'guru99', {RAW => true, VERSIONS =>10} | В тази команда, RAW=> true предоставя разширена функция, като например показване на всички стойности на клетките, налични в таблицата guru99. |
Code Пример: Първо, създайте таблица и поставете стойности в нея. Входните данни са показани на екранната снимка по-долу:
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
Ако изпълним командата за сканиране:
Query: scan 'guru99', {RAW=>true, VERSIONS=>1000}
Ще се покаже резултатът, показан по-долу:
Показаният на горната екранна снимка резултат дава следната информация:
- Сканиране на таблицата guru99 с атрибути RAW=>true, VERSIONS=>1000.
- Показване на редове със семейства колони и стойности.
- В третия ред показаните стойности показват изтритата стойност, присъстваща в колоната.
- Изходът, показан от него, е случаен; той не може да бъде в същия ред като стойностите, които сме въвели в таблицата.
Cluster Команди за репликация
- Тези команди работят в режим на настройка на клъстера на HBase.
- За добавяне и премахване на пиъри към клъстер, както и за стартиране и спиране на репликацията, тези команди се използват като цяло.
| Команда | Функционалност |
|---|---|
| add_peer | Добавя пиъри към клъстер за репликиране. hbase> add_peer '3', zk1, zk2, zk3:2182:/hbase-prod |
| remove_peer | Спира дефинирания поток за репликация и изтрива цялата информация за метаданните за партньора. hbase> remove_peer '1' |
| стартиране_репликация | Рестартира всички функции за репликация. hbase> start_replication |
| стоп_репликация | Спира всички функции за репликация. hbase>стоп_репликация |
























