Réparation de la table HBase (unassigned de région en transition)
Je suis un peu coincé la réparation d'un défaut de la table Hbase 0.92.1-cdh4.0.0, Hadoop 2.0.0-cdh4.0.0)
Il y a une région en transition qui ne finit pas:
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
Quand je lance sudo -u hbase hbase hbck -repair
, j'obtiens ceci:
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,}
et il vient de boucles.
Si je ne fais pas la -repair
, j'obtiens ceci:
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
J'ai couru -repair
une couple de fois avant, et il a aidé. Mais cette fois,
pas plus.
Ok, c'unis pour faire une intervention manuelle pour corriger cela. Quelqu'un pourrait-il
me pointer dans la bonne direction sur la façon de faire cela? Une recette, page web, par exemple,
rien aidera.
Grâce,
Mario
OriginalL'auteur Mario | 2012-06-13
Vous devez vous connecter pour publier un commentaire.
Mario,
Donc une des raisons pour lesquelles une région coincée dans la transition est parce que, lorsqu'il est déplacé à travers regionservers, il est enlevé à partir de la source regionserver mais n'est jamais attribué à un autre regionserver.
Un correctif qui fonctionne toujours pour moi, c'est par la force de l'affecter de la hbase shell par :-
Pourriez-Vous partager le code? J'ai un problème similaire, et tiens à le fixer.
Je suis désolé, devrait avoir posté. Je ne pense pas que j'ai plus de question.
Voir aussi serverfault.com/questions/510290/... - elle fixe le coincé de l'état où affecter pourrait pas
OriginalL'auteur sulabhc
J'ai essayé de faire énergique de la cession des régions, mais il ne fonctionne pas pour moi. J'ai essayé de suivre et cela a fonctionné:
Suit:
Exécuter hbck pour corriger les problmes utilisant la commande suivante
sudo -u hbase hbase hbck -repair
Activer la table de hbase shell
hbase hbck
pour voir les tables sontinconsistent
pour que vous puissiez savoir quels sont ceux qui doivent être désactivésOriginalL'auteur hp36
Si votre HBase version est assez récent, vous pouvez également essayer de hbck -repairHoles au lieu de juste réparation. Cela a fonctionné pour moi sur une des dernières de "résoudre le trou" problème.
OriginalL'auteur omeyn
D'abord, vous devez vérifier si il y a un fichier pour cette région dans votre hdfs.
Si il y est, vous devriez coller avec hbck -fixHdfsHoles -fixMeta seul jusqu'à ce fixe. (cela peut prendre quelques essais).
Si il n'y a pas de tel fichier pour la région en transition (il doit être sous /hbase/données///), puis HBase pense qu'il doit être valide HFile de la région dans ce dossier et ne sera pas en mesure de le réparer avec de la réparation normale des commandes.
Vous devez faire ce qui est dans l'une des dernières de réponse ici et de créer un valide HFile dans votre hdfs :
http://comments.gmane.org/gmane.comp.java.hadoop.hbase.user/31308
OriginalL'auteur user3794759
Pour mon cas, j'ai oublier de changer le propriétaire des données de la région qui a été copyed à partir d'un autre cluster.
Puis j'ai essayer de faire
hbase hbck -repair
mais obtenirINFO util.HBaseFsckRepair: Region still in transition, waiting for it to become assigned
puis d'erreur apparaissent
Unable to complete check or repair the region, failed to move out of transition within timeout 120000ms
Je trouve
hbase:meta
a déjà la région de l'info.Pendant que le balayage de la table, vous obtiendrez une erreur comme ceci
Puis essayez
hbase hbck -fixAssignments
, mais n'a toujours pas comme avant.Puis-je vérifier le tableau de données de la région et de rechercher uniquement ce tableau est propre et le groupe sont
mais d'autres, comme cette
drwxr-xr-x - hbase hbase
Donc problème a été résolu après changement propre et de groupe comme les autres.
Maintenant, vous allez tableau de balayage avec succès.
OriginalL'auteur Matiji66
J'ai eu le même problème
"hbase hbck de réparation"
retourné "ERREUR: Il y a un trou dans la région de la chaîne entre et . Vous devez créer un nouveau .regioninfo et de la région de dir dans hdfs pour boucher le trou".
En cours d'exécution "hbase hbck -repairHoles" a résolu le problème.
Je pourrais analyse des données précédemment stockées.
Remarque: - hbase hbck commande doit être exécutée à partir de hbase utilisateur
OriginalL'auteur Vinay MP