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