2012-06-13 5 views
7

Ich bin ein bisschen stecken eine fehlerhafte Tabelle Reparatur (auf Hbase 0.92.1-cdh4.0.0, Hadoop 2.0.0-cdh4.0.0)Reparatur HBase Tabelle (nicht zugeordnet Region im Übergang)

Es ist eine Region, im Übergang, die nicht beendet:

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 

Als ich sudo -u hbase hbase hbck -repair laufen, bekomme ich diese:

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,} 

und Schleifen gerade.

Wenn ich die -repair nicht tun, bekomme ich diese:

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 

ich -repair ein paar Mal vor ausgeführt haben, und es half. Aber diesmal nicht mehr.

Ok, so heißt es, einen manuellen Eingriff zu machen, um dies zu beheben. Könnte jemand mir in die richtige Richtung zeigen, wie man das macht? Ein Rezept, Webseite, Beispiel, alles wird dazu beitragen.

Danke, Mario

Antwort

12

Mario,

So ist einer der Gründe, warum eine Region im Umbruch stecken bleibt, weil, wenn es über regionservers bewegt wird, ist es von der Quelle regionserver nicht zugewiesen, sondern ist Zu keinem anderen Regionsserver zugewiesen. Ein Update, das für mich immer funktioniert, ist durch gewaltsam durch sie von der hbase Schale ASSIGNING: -

assign regionName 
+0

Das brachte mich in die richtige Richtung. Der direkte Einsatz hat nicht funktioniert, aber zumindest habe ich jetzt Code gefunden, der mir geholfen hat, das Loch in der Regionskette zu füllen. – Mario

+0

Können Sie den Code teilen? Ich habe ein ähnliches Problem und möchte das beheben. –

+0

Es tut mir leid, sollte damals gepostet haben. Ich glaube nicht, dass ich das mehr habe. – Mario

0

Wenn Ihre HBase Version ist aktuell genug auch hbck -repairHoles statt nur -Reparatur versuchen könnten. Das half mir bei einem kürzlichen "Fix the hole" -Problem.

1

Zuerst sollten Sie überprüfen, ob es eine Datei für diese bestimmte Region in Ihren hdfs gibt.

Wenn es ist, sollten Sie mit hbck -fixHdfsHoles -fixMeta allein festhalten, bis behoben. (vielleicht ein paar Versuche).

Wenn es für die Region im Übergang keine solche Datei gibt (sie sollte unter/hbase/data /// liegen), denkt HBase, dass es für diese Region in diesem Verzeichnis ein gültiges HFile geben sollte und nicht in der Lage ist um es mit normalen Reparaturbefehlen zu reparieren.

Sie sollten tun, was in einer der neuesten Antwort ist hier und eine gültige hFile schaffen in Ihrem hdfs:

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

0

ich kraftvolle Zuordnung der Regionen zu tun versucht, aber es hat nicht funktioniert für mich.Ich habe versucht, folgende und es funktionierte:

Schritte:

  • Disable Tisch aus hbase Shell
  • Run hbck zu beheben problmes mit dem Befehl folgenden

    sudo -u hbase hbase hbck -repair

  • Tabelle Aktivieren von hbase Schale

0

In meinem Fall vergesse ich, den Besitzer der Regionsdaten zu ändern, die von einem anderen Cluster kopiert wurden.

Dann versuche ich hbase hbck -repair zu tun, sondern bekommen INFO util.HBaseFsckRepair: Region still in transition, waiting for it to become assigned dann erscheinen Fehler Unable to complete check or repair the region, failed to move out of transition within timeout 120000ms

Ich finde hbase:meta bereits Region info hat.

Während Scan-Tabelle, werden Sie Fehler wie diese

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

bekommen Dann hbase hbck -fixAssignments versuchen, scheiterten aber immer noch wie vorher.

Dann prüfe ich die Region Datentabelle und finden nur den Tabellen eigene und Gruppe sind

drwxr-xr-x - hdfs hbase 

aber auch andere ähnliche

drwxr-xr-x - hbase hbase

So Problem gelöst wurde nach dem Wechsel eigenen und Gruppe Andere. Jetzt werden Sie die Tabelle erfolgreich scannen.

Verwandte Themen