hbase-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Zhenyu Zhong <zhongresea...@gmail.com>
Subject Re: about the htable enabled status problem
Date Tue, 02 Feb 2010 17:16:42 GMT
Please see the answer for each question.

Best,


On Mon, Feb 1, 2010 at 5:54 PM, Stack <stack@duboce.net> wrote:

> On Mon, Feb 1, 2010 at 1:45 PM, Zhenyu Zhong <zhongresearch@gmail.com>
> 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
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message