Убедитесь, что моментальный снимок HBase захватил все данные

При создании моментальных снимков в HBase я получил сообщение об ошибке «Снимок «имя_снимка» не был завершен в ожидаемое время: 60000 мс.

Однако, когда я затем перечисляю свои текущие снимки, я вижу, что снимок, который вернул ошибку, говорящую о том, что он не был завершен в ожидаемое время, был фактически создан в любом случае.

Как мне сравнить этот снимок с исходной таблицей (таблицей, снимок которой я делал), чтобы убедиться, что он создал полный снимок исходной таблицы?


person N. Smith    schedule 06.07.2016    source источник


Ответы (1)


Ошибка означает, что процесс создания моментального снимка занимает больше времени, чем ожидалось, соответствующий код находится в HbaseAdmin.snapshot:

if (!done.getDone()) {
  throw new SnapshotCreationException("Snapshot '" + snapshot.getName()
      + "' wasn't completed in expectedTime:" + max + " ms", snapshot);
}

Но запрос отправляется на сервер, и процесс моментального снимка уже начинается. Если вы хотите проверить состояние моментального снимка, вы можете проверить его в веб-интерфейсе, URL-адрес, например:

http://your-hmaster:60010/snapshot.jsp?name=your-snapshot-name

Если вы хотите сравнить данные, вы можете сначала клонировать моментальный снимок в другую таблицу и запустить задание уменьшения карты для сравнения.

person sel-fish    schedule 07.07.2016
comment
Спасибо, я уже клонировал снимок на другую таблицу. Я нашел что-то, говорящее о том, что я могу запустить приведенную ниже команду, но запускаю ли я ее из командной строки в оболочке hbase? Если да, то использовать ли всю команду или только первую строку? Если мне нужно использовать часть после Usage: я не знаю, что там заполнять.  hbase org.apache.hadoop.hbase.mapreduce.RowCounter ‹tablename› Использование: RowCounter [options] ‹tablename› [ --starttime=[start] --endtime=[end] [--range=[startKey],[ endKey]] [‹column1› ‹column2›...] ] - person N. Smith; 08.07.2016
comment
RowCounter hbase.apache.org/book.html#_rowcounter_example просто подсчитывает строки в указанной таблице не сравнивают содержимое двух таблиц. То есть вы имеете в виду, что хотите сравнить только количество строк клонированной таблицы и оригинала? вы можете просто запустить count 'your-table' в оболочке hbase, если хотите... - person sel-fish; 08.07.2016
comment
Первоначально я пытался использовать Count ‹tablename›, но это занимало слишком много времени, а затем терпело неудачу. Я нашел команду, чтобы вернуть счет НАМНОГО быстрее, но задание уменьшения никогда не запускается. Когда он закончен, он всегда говорит INFO mapreduce.Job: карта 100%, уменьшение 0%. Тем не менее, он по-прежнему обеспечивает количество строк. Нужно ли также выполнять задание уменьшения, чтобы получить точный подсчет? Кроме того, многие задания будут возвращать такой результат: INFO mapreduce.Job: map 100% reduce 0% INFO mapreduce.Job: задание job_123456 завершилось неудачно с состоянием FAILED из-за: Ошибка задания task_123456 Задание завершилось неудачно из-за сбоя задач. - person N. Smith; 14.07.2016
comment
@N.Smith RowCounter фактически запускает задание с картографом org.apache.hadoop.hbase.mapreduce.RowCounter$RowCounterMapper и без редуктора, показания счетчика в org.apache.hadoop.hbase.mapreduce.RowCounter$RowCounterMapper$Counters ROWS=$ROWNUM точны, если нет одновременных записей. Если задание завершается без сообщения типа completed successfully, следует проверить детали сбоя. - person sel-fish; 22.07.2016