Как перечислить регионы в таблице HBase через оболочку?
Я хотел бы получить ту же информацию о регионах таблицы, которые отображаются в веб-интерфейсе (то есть имя региона, сервер региона, ключ запуска/завершения, локальность), но через оболочку hbase.
(Пользовательский интерфейс является flaky/slow, и, кроме того, я хочу обработать эту информацию как часть script.)
После долгих поисковых запросов я не могу понять, как это, и это меня очень удивило. версия 1.0.0.-cdh5.4.0
Ответы
Ответ 1
Чтобы получить информацию о регионе о таблице, вам нужно отсканировать таблицу hbase:meta
.
scan 'hbase:meta',{FILTER=>"PrefixFilter('table_name')"}
Эта команда даст сведения обо всех регионах. Ключ Row будет иметь имя региона, и будет четыре классификатора столбцов. Вам могут потребоваться следующие два классификатора столбцов:
info:regioninfo
- Этот определитель содержит STARTKEY и ENDKEY.
info:server
- Этот определитель содержит сведения о сервере региона
Ответ 2
Вот ответ из списка рассылки HBase:
статус "подробный" покажет вам достаточно информации
например
t1,30,1449175546660.da5f3853f6e59d1ada0a8554f12885ab."
numberOfStores=1, numberOfStorefiles=0,
storefileUncompressedSizeMB=0, lastMajorCompactionTimestamp=0,
storefileSizeMB=0, memstoreSizeMB=0, storefileIndexSizeMB=0,
readRequestsCount=0, writeRequestsCount=0, rootIndexSizeKB=0,
totalStaticIndexSizeKB=0, totalStaticBloomSizeKB=0, totalCompactingKVs=0,
currentCompactedKVs=0, compactionProgressPct=NaN, completeSequenceId=-1,
dataLocality=0.0
Однако это возвращает информацию из всех таблиц, и вам нужно проанализировать регионы интересующей вас таблицы.
Ответ 3
Используйте "официальную" команду оболочки list_regions
, чтобы отобразить все регионы. Обратите внимание, что этот инструмент доступен только начиная с версий HBase 1.4 и выше.
Some examples are
Examples:
hbase> list_regions 'table_name'
hbase> list_regions 'table_name', 'server_name'
hbase> list_regions 'table_name', {SERVER_NAME => 'server_name', LOCALITY_THRESHOLD => 0.8}
hbase> list_regions 'table_name', {SERVER_NAME => 'server_name', LOCALITY_THRESHOLD => 0.8}, ['SERVER_NAME']
hbase> list_regions 'table_name', {}, ['SERVER_NAME', 'start_key']
hbase> list_regions 'table_name', '', ['SERVER_NAME', 'start_key']
Подробности его реализации: https://issues.apache.org/jira/browse/HBASE-14925
Ответ 4
В hbase есть инструмент, который используется для восстановления таблицы и проверки последовательности, называемой hbase hbck. Хотя это не будет работать внутри оболочки hbase, но может быть использовано для получения списка регионов.
Команда hbase hbck -details <tablename>
может использоваться для получения сведений о таблице и будет содержать требуемую информацию о регионе.
Вывод вышеупомянутой команды может быть проанализирован для получения информации о регионе для требуемой таблицы.
Ответ 5
scan 'hbase: meta', {FILTER => "PrefixFilter ('tableName')", COLUMNS => ['info: regioninfo']}