Восстановить таблицу HBase (неназначенная область в переходе)



Я немного застрял, восстанавливая неисправную таблицу (на Hbase 0.92.1-cdh4.0.0, Hadoop 2.0.0-cdh4.0.0)



Есть область перехода, которая не заканчивается:



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 пару раз до этого, и это помогло. Но на этот раз ... ,
больше нет.



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



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

704   5  

5 ответов:

Марио,

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

assign regionName

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

Шаги:

  • отключить таблицу из оболочки hbase
  • Запустите hbck для устранения проблем, используя следующую команду

    sudo -u hbase hbase hbck -repair

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

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

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

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

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

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

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

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

Тогда я пытаюсь сделать 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

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

Comments

    Ничего не найдено.