Как перечислить регионы в таблице 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']}