This really looks like something 0.20.3 solves.

J-D

On Tue, Feb 2, 2010 at 9:16 AM, Zhenyu Zhong <[email protected]> wrote:
> Please see the answer for each question.
>
> Best,
>
>
> On Mon, Feb 1, 2010 at 5:54 PM, Stack <[email protected]> wrote:
>
>> On Mon, Feb 1, 2010 at 1:45 PM, Zhenyu Zhong <[email protected]>
>> wrote:
>> > Dear all,
>> >
>> > I have been experiencing an issue that one of my HBase table, which
>> contains
>> > 1800+ regions, sometimes cannot be enabled.
>> > Sometimes I tried  to restart the HBase in order to let this big table to
>> > have a clean start, but still I can't make the table to be enabled.
>> > The strange thing is I can see all the 1800+ regions are opened, however
>> the
>> > table status is disabled.
>> >
>> You can't read/update it?
>>
>
> Answer:   I am able to read/update the table even the table status is
> disabled for some key, but I can't do some operation like a full scan.
>
>
>
>>
>> > Would this indicate that there could be some race conditions after all
>> the
>> > regions of a table are brought online such that the table state can't be
>> set
>> > to enabled?
>>
>> What happens if you run enable table after its up?
>>
>
> Answer:   I ran enable after the table is up, however, the enable doesn't
> work. I tried to use 2 approaches to enable the table, 1 by hbase shell, 1
> by calling HBase API in java. Here are the error messages:
>
> By hbase shell:
>  NativeException: java.io.IOException: Unable to enable table tablexxx
> from org/apache/hadoop/hbase/client/HBaseAdmin.java:356:in `enableTable'
> from org/apache/hadoop/hbase/client/HBaseAdmin.java:315:in `enableTable'
> from sun/reflect/NativeMethodAccessorImpl.java:-2:in `invoke0'
> from sun/reflect/NativeMethodAccessorImpl.java:39:in `invoke'
> from sun/reflect/DelegatingMethodAccessorImpl.java:25:in `invoke'
> from java/lang/reflect/Method.java:597:in `invoke'
> from org/jruby/javasupport/JavaMethod.java:298:in
> `invokeWithExceptionHandling'
> from org/jruby/javasupport/JavaMethod.java:259:in `invoke'
> from org/jruby/java/invokers/InstanceMethodInvoker.java:44:in `call'
> from org/jruby/runtime/callsite/CachingCallSite.java:273:in `cacheAndCall'
> from org/jruby/runtime/callsite/CachingCallSite.java:112:in `call'
> from org/jruby/ast/CallOneArgNode.java:57:in `interpret'
> from org/jruby/ast/NewlineNode.java:104:in `interpret'
> from org/jruby/ast/BlockNode.java:71:in `interpret'
> from org/jruby/internal/runtime/methods/InterpretedMethod.java:163:in `call'
> from org/jruby/internal/runtime/methods/DefaultMethod.java:144:in `call'
> ... 112 levels...
> from code/hbase_minus_0_dot_20_dot_1/bin/hirb#start:-1:in `call'
> from org/jruby/internal/runtime/methods/DynamicMethod.java:226:in `call'
> from org/jruby/internal/runtime/methods/CompiledMethod.java:211:in `call'
> from org/jruby/internal/runtime/methods/CompiledMethod.java:71:in `call'
> from org/jruby/runtime/callsite/CachingCallSite.java:253:in `cacheAndCall'
> from org/jruby/runtime/callsite/CachingCallSite.java:72:in `call'
> from code/hbase_minus_0_dot_20_dot_1/bin/hirb.rb:497:in `__file__'
> from code/hbase_minus_0_dot_20_dot_1/bin/hirb.rb:-1:in `load'
> from org/jruby/Ruby.java:577:in `runScript'
> from org/jruby/Ruby.java:480:in `runNormally'
> from org/jruby/Ruby.java:354:in `runFromMain'
> from org/jruby/Main.java:229:in `run'
> from org/jruby/Main.java:110:in `run'
> from org/jruby/Main.java:94:in `main'
> from /code/hbase-0.20.1/bin/hirb.rb:346:in `enable'
>
> By HBase api:
> Exception in thread "main" java.io.IOException: Unable to enable table
> tablexxx
> at
> org.apache.hadoop.hbase.client.HBaseAdmin.enableTable(HBaseAdmin.java:356)
> at
> org.apache.hadoop.hbase.client.HBaseAdmin.enableTable(HBaseAdmin.java:315)
>
>
> If you scan your table, are some all regions offline?
>>
>> Scan the .META. table and see each of your table's regions.  There is
>> an offline attribute that shows if the region is offlined, only.  Are
>> you seeing any of that in your table?
>>
>
> Answer:
> I tried to scan '.META.', however, I don't find the offline attributes for
> each region. Here is an example of the output of a table region from .META.
>  info:regioninfo             timestamp=1264565073789, value=REGION => {NAME
> => 'xxx,,1264565073689', START
>                             KEY => '', ENDKEY => '', ENCODED => 1727236830,
> TABLE => {{NAME => 'uid_gid', FAM
>                             ILIES => [{NAME => 'f1', COMPRESSION => 'LZO',
> VERSIONS => '3', TTL => '214748364
>                             7', BLOCKSIZE => '65536', IN_MEMORY => 'false',
> BLOCKCACHE => 'true'}]}}
>  info:server                 timestamp=1265061278693, value=
> 192.168.100.124:60021
>  info:serverstartcode        timestamp=1265061278693, value=1264989604636
>
> How to get the offline attribute?
>
> By looking at the HMaster web UI, I can see all the regions for that table
> are up. (or maybe this is not a good way to check the status of a table
> region?)
>
>
>
>
>>
>> >
>> > I noticed that there is a fix in version 0.20.3 about unable to disable a
>> > table if any of its regions is opening at the same time. Would that be
>> > related?
>> >
>> It could be.  You could try updating.
>>
>> St.Ack
>>
>

Reply via email to