2012-06-13 1 views
7

Я немного застрял ремонт неисправного стола (на Hbase 0.92.1-cdh4.0.0, Hadoop 2.0.0-cdh4.0.0)Ремонта HBase стол (неназначенная область перехода)

Существует область в переходный период, который не заканчивается:

Region State 
bf2025f4bc154914b5942af4e72ea063 counter_traces,1329773878.35_766a0b4df75e4381a686fbc07db9e333,1339425291230.bf2025f4bc154914b5942af4e72ea063. state=OFFLINE, ts=Tue Jun 12 11:43:53 CEST 2012 (0s ago), server=null 

Когда я бегу sudo -u hbase hbase hbck -repair, я получаю это:

Number of empty REGIONINFO_QUALIFIER rows in .META.: 0 
ERROR: Region { meta => counter_traces,1329773878.35_766a0b4df75e4381a686fbc07db9e333,1339425291230.bf2025f4bc154914b5942af4e72ea063., hdfs => hdfs://hbase001:8020/hbase/counter_traces/bf2025f4bc154914b5942af4e72ea063, deployed => } not deployed on any region server. 
Trying to fix unassigned region... 
12/06/12 11:44:40 INFO util.HBaseFsckRepair: Region still in transition, waiting for it to become assigned: {NAME => 'counter_traces,1329773878.35_766a0b4df75e4381a686fbc07db9e333,1339425291230.bf2025f4bc154914b5942af4e72ea063.', STARTKEY => '1329773878.35_766a0b4df75e4381a686fbc07db9e333', ENDKEY => '1329793347.58_163865765c0a11e184ab003048f0e77e', ENCODED => bf2025f4bc154914b5942af4e72ea063,} 

и это только петли.

Если я не делаю -repair, я получаю это:

Number of empty REGIONINFO_QUALIFIER rows in .META.: 0 
ERROR: Region { meta => counter_traces,1329773878.35_766a0b4df75e4381a686fbc07db9e333,1339425291230.bf2025f4bc154914b5942af4e72ea063., hdfs => hdfs://hbase001:8020/hbase/counter_traces/bf2025f4bc154914b5942af4e72ea063, deployed => } not deployed on any region server. 
ERROR: Region { meta => counter_traces,1329816776.95_95b5561f3c1e496598421359a19ac665,1339425297099.ee1fd808d954c9adc9ed95ec2f29d119., hdfs => hdfs://hbase001:8020/hbase/counter_traces/ee1fd808d954c9adc9ed95ec2f29d119, deployed => } not deployed on any region server. 
12/06/12 11:45:59 DEBUG util.HBaseFsck: There are 134 region info entries 
ERROR: There is a hole in the region chain between 1329773878.35_766a0b4df75e4381a686fbc07db9e333 and 1329793347.58_163865765c0a11e184ab003048f0e77e. You need to create a new .regioninfo and region dir in hdfs to plug the hole. 
ERROR: There is a hole in the region chain between 1329816776.95_95b5561f3c1e496598421359a19ac665 and 1329847231.75_b3c50776778b43e088dd7ed865e11331. You need to create a new .regioninfo and region dir in hdfs to plug the hole. 
ERROR: Found inconsistency in table counter_traces 

Я бежал -repair пару раз прежде, и это помогло. Но на этот раз больше нет.

Итак, это означает, что нужно выполнить ручное вмешательство, чтобы исправить это. Может кто-нибудь указать мне в правильном направлении, как это сделать? Рецепт, веб-страница, например, что-нибудь поможет.

Спасибо, Марио

ответ

12

Марио,

Так одна из причин, почему регион застревает в переходе, потому что, когда она перемещается через regionservers, это Unassigned от источника regionserver, но никогда не назначался другому серверу регистров. Один фикс, который всегда работает для меня насильственно назначая его из Hbase оболочки: -

assign regionName 
+0

Это привело меня в правильном направлении. Прямое assing не сработало, но по крайней мере я нашел некоторый код, который помог мне заполнить отверстие в цепочке регионов. – Mario

+0

Не могли бы вы поделиться кодом? У меня есть аналогичная проблема, и я хотел бы это исправить. –

+0

Прошу прощения, должен был отправиться тогда. Я не думаю, что у меня это есть. – Mario

0

Если ваша версия HBase достаточно недавнее можно также попробовать hbck -repairHoles вместо того, чтобы просто -ремонт. Это помогло мне в недавней проблеме «исправить дыру».

1

Сначала вы должны проверить, есть ли файл для данного региона в ваших hdf.

Если есть, вы должны придерживаться hbck -fixHdfsHoles -fixMeta только до фиксированного. (может потребоваться несколько попыток).

Если такого файла для региона в переходном периоде нет (он должен быть под/hbase/data ///), то HBase считает, что в этом каталоге должен быть допустимый HFile для этого региона и он не сможет чтобы исправить его с помощью обычных команд восстановления.

Вы должны делать то, что в одном из последнего ответа здесь и создать действительный HFile для в ваших HDFS:

http://comments.gmane.org/gmane.comp.java.hadoop.hbase.user/31308

0

Я пытался сделать силовое назначение регионов, но это не сработало для меня.Я попытался следующие, и она работала:

Шаги:

  • Отключить таблицу из Hbase оболочки
  • Run hbck исправить problmes используя следующую команду

    sudo -u hbase hbase hbck -repair

  • Включить таблицу из HBase оболочка

0

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

Тогда я пытаюсь сделать hbase hbck -repair но получить INFO util.HBaseFsckRepair: Region still in transition, waiting for it to become assigned то ошибка появляется Unable to complete check or repair the region, failed to move out of transition within timeout 120000ms

Я считаю hbase:meta уже есть область информации.

В то время как таблицы сканирования, вы получите сообщение об ошибке, как этот

ERROR: No server address listed in hbase:meta for region X 

Тогда попробуйте hbase hbck -fixAssignments, но до сих пор не удалось, как и раньше.

Затем я проверяю данные области таблицы и найти только собственные и группы в этой таблице являются

drwxr-xr-x - hdfs hbase 

, но другие, как этот

drwxr-xr-x - hbase hbase

Так проблема была решена после того, как изменение собственных и группы, как другие. Теперь вы будете сканировать таблицу успешно.