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 >
