I'm trying my "nuclear" option: basically copy the data from the old db to a
new one, skipping over bad regions. The bad news is that it is taking forever.
I get a stack trace just trying to run check_meta.rb:
maxpoint@c1-m02:/usr/lib/hbase/bin$ ./hbase org.jruby.Main check_meta.rb
Writables.java:75:in `org.apache.hadoop.hbase.util.Writables.getWritable':
java.lang.NullPointerException: null (NativeException)
from Writables.java:119:in
`org.apache.hadoop.hbase.util.Writables.getHRegionInfo'
from NativeMethodAccessorImpl.java:-2:in
`sun.reflect.NativeMethodAccessorImpl.invoke0'
from NativeMethodAccessorImpl.java:39:in
`sun.reflect.NativeMethodAccessorImpl.invoke'
from DelegatingMethodAccessorImpl.java:25:in
`sun.reflect.DelegatingMethodAccessorImpl.invoke'
from Method.java:597:in `java.lang.reflect.Method.invoke'
from JavaMethod.java:196:in
`org.jruby.javasupport.JavaMethod.invokeWithExceptionHandling'
from JavaMethod.java:182:in
`org.jruby.javasupport.JavaMethod.invoke_static'
from JavaClass.java:371:in
`org.jruby.javasupport.JavaClass$StaticMethodInvoker.execute'
... 17 levels...
from Main.java:183:in `org.jruby.Main.runInterpreter'
from Main.java:120:in `org.jruby.Main.run'
from Main.java:95:in `org.jruby.Main.main'
Complete Java stackTrace
java.lang.NullPointerException
at org.apache.hadoop.hbase.util.Writables.getWritable(Writables.java:75)
at
org.apache.hadoop.hbase.util.Writables.getHRegionInfo(Writables.java:119)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.jruby.javasupport.JavaMethod.invokeWithExceptionHandling(JavaMethod.java:196)
at org.jruby.javasupport.JavaMethod.invoke_static(JavaMethod.java:182)
at
org.jruby.javasupport.JavaClass$StaticMethodInvoker.execute(JavaClass.java:371)
at
org.jruby.internal.runtime.methods.SimpleCallbackMethod.call(SimpleCallbackMethod.java:81)
at
org.jruby.evaluator.EvaluationState.callNode(EvaluationState.java:571)
at
org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:207)
at
org.jruby.evaluator.EvaluationState.localAsgnNode(EvaluationState.java:1254)
at
org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:286)
at
org.jruby.evaluator.EvaluationState.blockNode(EvaluationState.java:533)
at
org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:201)
at
org.jruby.evaluator.EvaluationState.whileNode(EvaluationState.java:1793)
at
org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:387)
at
org.jruby.evaluator.EvaluationState.blockNode(EvaluationState.java:533)
at
org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:201)
at
org.jruby.evaluator.EvaluationState.rootNode(EvaluationState.java:1628)
at
org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:356)
at org.jruby.evaluator.EvaluationState.eval(EvaluationState.java:164)
at org.jruby.Ruby.eval(Ruby.java:278)
at org.jruby.Ruby.compileOrFallbackAndRun(Ruby.java:306)
at org.jruby.Main.runInterpreter(Main.java:238)
at org.jruby.Main.runInterpreter(Main.java:183)
at org.jruby.Main.run(Main.java:120)
at org.jruby.Main.main(Main.java:95)
-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of Stack
Sent: Friday, May 27, 2011 12:43 AM
To: [email protected]
Subject: Re: wrong region exception
Robert:
Looks like script already exists. Check bin/check_meta.rb. If you pass it
--fix it should plug the hole. Read the head of the script for how to run it.
Good luck,
St.Ack
On Thu, May 26, 2011 at 1:06 PM, Robert Gonzalez
<[email protected]> wrote:
> I sent the meta.txt to your saint.ack@gmail .com account due to the
> attachment.
>
> -----Original Message-----
> From: [email protected] [mailto:[email protected]] On Behalf Of
> Stack
> Sent: Thursday, May 26, 2011 1:35 PM
> To: [email protected]
> Subject: Re: wrong region exception
>
> On Thu, May 26, 2011 at 8:06 AM, Robert Gonzalez
> <[email protected]> wrote:
>> It looks like an entire region is missing, here is the online table:
>>
>> urlhashv2,7FF1A5BF839C37078083B4F8267008F6,1303028235302.b0d55566fd0e
>> 0 2ae98541618396aa7b1.
>> c1-s03.atxd.maxpointinteractive.com:60030
>> 7FF1A5BF839C37078083B4F8267008F6
>> 80116D7E506D87ED39EAFFE784B5B590
>> urlhashv2,8031483E0B3B7F587020FCBB764272D9,1305226123483.3ed065ad87f8
>> 9 aece6b994dd31b42b2a. c1-s33.atxd.maxpointinteractive.com:60030
>> 8031483E0B3B7F587020FCBB764272D9
>> 8041346D0B05617FA4B9152BFE9B18B9
>>
>> One ends at 80116D7E506D87ED39EAFFE784B5B590, but the next one doesn't start
>> there.
>>
>
> So, make sure you actually have a hole. Dump out your meta table:
>
> echo "scan '.META.'"| ./bin/hbase shell &> /tmp/meta.txt
>
> Then look ensure that there is a hole between the above regions (compare
> start and end keys... the end key of one region needs to match the start key
> of the next).
>
> If indeed a hole, you need to do a little surgery inserting a new missing
> region (hbck should fix this but it doesn't have the smarts just yet).
>
> Basically, you create a new region with start and end keys to fill the hole
> then you insert it into .META. and then assign it. There are some scripts in
> our bin directory that do various parts of this. I'm pretty sure its beyond
> any but a few figuring this mess out so if you do the above foot work and
> provide a few more details, I'll hack up something for you (and hopefully
> something generalized to be use by others later, and later to be integrated
> into hbck).
>
> St.Ack
>