You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Benoit Sigoure (Created) (JIRA)" <ji...@apache.org> on 2011/10/24 20:20:32 UTC

[jira] [Created] (HBASE-4653) Master can't easily get rid of LZO compressed tables when the codec isn't available

Master can't easily get rid of LZO compressed tables when the codec isn't available
-----------------------------------------------------------------------------------

                 Key: HBASE-4653
                 URL: https://issues.apache.org/jira/browse/HBASE-4653
             Project: HBase
          Issue Type: Bug
          Components: master
    Affects Versions: 0.90.4
            Reporter: Benoit Sigoure
            Priority: Minor



I mistakenly created a table with {{COMPRESSION => LZO}}, and I don't have LZO installed.  I'm running a vanilla 0.90.4 release.  The master is unable to deploy the region of that table because the codec is missing.  I can't get rid of it.  I can't drop the table from  the shell, although it seems I could disable it.  Thankfully I found a workaround for this bug (see further below).

{code}
hbase(main):003:0> disable 'mytable'
0 row(s) in 1.1010 seconds

hbase(main):004:0> drop 'mytable'
[hung forever]
{code}

in the logs:

{code}
2011-10-22 03:05:42,153 DEBUG org.apache.hadoop.hbase.regionserver.HRegion: Instantiated mytable,,1319278131519.6eb6891a8b072402b5064f4cc68c210d.
2011-10-22 03:05:42,154 ERROR org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler: Failed open of region=mytable,,1319278131519.6eb6891a8b072402b5064f4cc68c210d. java.io.IOException: java.lang.RuntimeException:
java.lang.ClassNotFoundException: com.hadoop.compression.lzo.LzoCodec
       at org.apache.hadoop.hbase.util.CompressionTest.testCompression(CompressionTest.java:89)
       at org.apache.hadoop.hbase.regionserver.HRegion.checkCompressionCodecs(HRegion.java:2573)
       at org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:2562)
       at org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:2550)
       at org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler.openRegion(OpenRegionHandler.java:272)
       at org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler.process(OpenRegionHandler.java:99)
       at org.apache.hadoop.hbase.executor.EventHandler.run(EventHandler.java:156)
       at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
       at java.lang.Thread.run(Thread.java:680)
Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: com.hadoop.compression.lzo.LzoCodec
       at org.apache.hadoop.hbase.io.hfile.Compression$Algorithm$1.getCodec(Compression.java:92)
       at org.apache.hadoop.hbase.io.hfile.Compression$Algorithm.getCompressor(Compression.java:197)
       at org.apache.hadoop.hbase.util.CompressionTest.testCompression(CompressionTest.java:84)
       ... 9 more
Caused by: java.lang.ClassNotFoundException: com.hadoop.compression.lzo.LzoCodec
       at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
       at java.security.AccessController.doPrivileged(Native Method)
       at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
       at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
       at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
       at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
       at org.apache.hadoop.hbase.io.hfile.Compression$Algorithm$1.getCodec(Compression.java:87)
       ... 11 more
[...]
2011-10-22 03:15:30,620 DEBUG org.apache.hadoop.hbase.master.handler.DeleteTableHandler: Waiting on region to clear regions in transition; mytable,,1319278131519.6eb6891a8b072402b5064f4cc68c210d. state=OPENING, ts=1319278483001
2011-10-22 03:15:31,621 DEBUG org.apache.hadoop.hbase.master.handler.DeleteTableHandler: Waiting on region to clear regions in transition;
mytable,,1319278131519.6eb6891a8b072402b5064f4cc68c210d. state=OPENING, ts=1319278483001
[repeat message above indefinitely every 1s]
{code}

I tried restarting HBase, no luck.  How do I get rid of this table so I can recreate it without {{COMPRESSION => LZO}}?

h2. Workaround

Change the schema for each family, restart HBase, drop the table.

{code}
hbase(main):004:0> alter 'mytable', {NAME => 'fam1', COMPRESSION => 'NONE'}
0 row(s) in 0.1160 seconds

hbase(main):005:0> alter 'mytable', {NAME => 'fam2', COMPRESSION => 'NONE'}
0 row(s) in 0.0480 seconds

hbase(main):007:0> drop 'mytable'
^C
[hung forever]
{code}

[restart HBase]  :(

{code}
hbase(main):001:0> disable 'mytable'
0 row(s) in 2.5010 seconds

hbase(main):002:0> drop 'mytable'
0 row(s) in 1.1240 seconds
{code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Commented] (HBASE-4653) Master can't easily get rid of LZO compressed tables when the codec isn't available

Posted by "Ben West (Commented) (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/HBASE-4653?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13239509#comment-13239509 ] 

Ben West commented on HBASE-4653:
---------------------------------

Running .92.0rc3 we ran into this and the problem seems to be worse than reported here. I couldn't alter the table because HBase told me it was enabled, and I couldn't disable the table because HBase told me it was already disabled. I ended up having to delete the node from zookeeper and HDFS, which was fine because it happened in a dev environment, but would've been really bad if it was in prod.

+1 to getting this fixed.
                
> Master can't easily get rid of LZO compressed tables when the codec isn't available
> -----------------------------------------------------------------------------------
>
>                 Key: HBASE-4653
>                 URL: https://issues.apache.org/jira/browse/HBASE-4653
>             Project: HBase
>          Issue Type: Bug
>          Components: master
>    Affects Versions: 0.90.4
>            Reporter: Benoit Sigoure
>            Priority: Minor
>
> I mistakenly created a table with {{COMPRESSION => LZO}}, and I don't have LZO installed.  I'm running a vanilla 0.90.4 release.  The master is unable to deploy the region of that table because the codec is missing.  I can't get rid of it.  I can't drop the table from  the shell, although it seems I could disable it.  Thankfully I found a workaround for this bug (see further below).
> {code}
> hbase(main):003:0> disable 'mytable'
> 0 row(s) in 1.1010 seconds
> hbase(main):004:0> drop 'mytable'
> [hung forever]
> {code}
> in the logs:
> {code}
> 2011-10-22 03:05:42,153 DEBUG org.apache.hadoop.hbase.regionserver.HRegion: Instantiated mytable,,1319278131519.6eb6891a8b072402b5064f4cc68c210d.
> 2011-10-22 03:05:42,154 ERROR org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler: Failed open of region=mytable,,1319278131519.6eb6891a8b072402b5064f4cc68c210d. java.io.IOException: java.lang.RuntimeException:
> java.lang.ClassNotFoundException: com.hadoop.compression.lzo.LzoCodec
>        at org.apache.hadoop.hbase.util.CompressionTest.testCompression(CompressionTest.java:89)
>        at org.apache.hadoop.hbase.regionserver.HRegion.checkCompressionCodecs(HRegion.java:2573)
>        at org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:2562)
>        at org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:2550)
>        at org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler.openRegion(OpenRegionHandler.java:272)
>        at org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler.process(OpenRegionHandler.java:99)
>        at org.apache.hadoop.hbase.executor.EventHandler.run(EventHandler.java:156)
>        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>        at java.lang.Thread.run(Thread.java:680)
> Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: com.hadoop.compression.lzo.LzoCodec
>        at org.apache.hadoop.hbase.io.hfile.Compression$Algorithm$1.getCodec(Compression.java:92)
>        at org.apache.hadoop.hbase.io.hfile.Compression$Algorithm.getCompressor(Compression.java:197)
>        at org.apache.hadoop.hbase.util.CompressionTest.testCompression(CompressionTest.java:84)
>        ... 9 more
> Caused by: java.lang.ClassNotFoundException: com.hadoop.compression.lzo.LzoCodec
>        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
>        at java.security.AccessController.doPrivileged(Native Method)
>        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
>        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
>        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
>        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
>        at org.apache.hadoop.hbase.io.hfile.Compression$Algorithm$1.getCodec(Compression.java:87)
>        ... 11 more
> [...]
> 2011-10-22 03:15:30,620 DEBUG org.apache.hadoop.hbase.master.handler.DeleteTableHandler: Waiting on region to clear regions in transition; mytable,,1319278131519.6eb6891a8b072402b5064f4cc68c210d. state=OPENING, ts=1319278483001
> 2011-10-22 03:15:31,621 DEBUG org.apache.hadoop.hbase.master.handler.DeleteTableHandler: Waiting on region to clear regions in transition;
> mytable,,1319278131519.6eb6891a8b072402b5064f4cc68c210d. state=OPENING, ts=1319278483001
> [repeat message above indefinitely every 1s]
> {code}
> I tried restarting HBase, no luck.  How do I get rid of this table so I can recreate it without {{COMPRESSION => LZO}}?
> h2. Workaround
> Change the schema for each family, restart HBase, drop the table.
> {code}
> hbase(main):004:0> alter 'mytable', {NAME => 'fam1', COMPRESSION => 'NONE'}
> 0 row(s) in 0.1160 seconds
> hbase(main):005:0> alter 'mytable', {NAME => 'fam2', COMPRESSION => 'NONE'}
> 0 row(s) in 0.0480 seconds
> hbase(main):007:0> drop 'mytable'
> ^C
> [hung forever]
> {code}
> [restart HBase]  :(
> {code}
> hbase(main):001:0> disable 'mytable'
> 0 row(s) in 2.5010 seconds
> hbase(main):002:0> drop 'mytable'
> 0 row(s) in 1.1240 seconds
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Commented] (HBASE-4653) Master can't easily get rid of LZO compressed tables when the codec isn't available

Posted by "Lars Hofhansl (Commented) (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/HBASE-4653?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13134334#comment-13134334 ] 

Lars Hofhansl commented on HBASE-4653:
--------------------------------------

Yep... I've found that too. Didn't think to file a case, though. :)
Maybe the answer is to disallow creation of CFs with unsupported compression.

                
> Master can't easily get rid of LZO compressed tables when the codec isn't available
> -----------------------------------------------------------------------------------
>
>                 Key: HBASE-4653
>                 URL: https://issues.apache.org/jira/browse/HBASE-4653
>             Project: HBase
>          Issue Type: Bug
>          Components: master
>    Affects Versions: 0.90.4
>            Reporter: Benoit Sigoure
>            Priority: Minor
>
> I mistakenly created a table with {{COMPRESSION => LZO}}, and I don't have LZO installed.  I'm running a vanilla 0.90.4 release.  The master is unable to deploy the region of that table because the codec is missing.  I can't get rid of it.  I can't drop the table from  the shell, although it seems I could disable it.  Thankfully I found a workaround for this bug (see further below).
> {code}
> hbase(main):003:0> disable 'mytable'
> 0 row(s) in 1.1010 seconds
> hbase(main):004:0> drop 'mytable'
> [hung forever]
> {code}
> in the logs:
> {code}
> 2011-10-22 03:05:42,153 DEBUG org.apache.hadoop.hbase.regionserver.HRegion: Instantiated mytable,,1319278131519.6eb6891a8b072402b5064f4cc68c210d.
> 2011-10-22 03:05:42,154 ERROR org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler: Failed open of region=mytable,,1319278131519.6eb6891a8b072402b5064f4cc68c210d. java.io.IOException: java.lang.RuntimeException:
> java.lang.ClassNotFoundException: com.hadoop.compression.lzo.LzoCodec
>        at org.apache.hadoop.hbase.util.CompressionTest.testCompression(CompressionTest.java:89)
>        at org.apache.hadoop.hbase.regionserver.HRegion.checkCompressionCodecs(HRegion.java:2573)
>        at org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:2562)
>        at org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:2550)
>        at org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler.openRegion(OpenRegionHandler.java:272)
>        at org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler.process(OpenRegionHandler.java:99)
>        at org.apache.hadoop.hbase.executor.EventHandler.run(EventHandler.java:156)
>        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>        at java.lang.Thread.run(Thread.java:680)
> Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: com.hadoop.compression.lzo.LzoCodec
>        at org.apache.hadoop.hbase.io.hfile.Compression$Algorithm$1.getCodec(Compression.java:92)
>        at org.apache.hadoop.hbase.io.hfile.Compression$Algorithm.getCompressor(Compression.java:197)
>        at org.apache.hadoop.hbase.util.CompressionTest.testCompression(CompressionTest.java:84)
>        ... 9 more
> Caused by: java.lang.ClassNotFoundException: com.hadoop.compression.lzo.LzoCodec
>        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
>        at java.security.AccessController.doPrivileged(Native Method)
>        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
>        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
>        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
>        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
>        at org.apache.hadoop.hbase.io.hfile.Compression$Algorithm$1.getCodec(Compression.java:87)
>        ... 11 more
> [...]
> 2011-10-22 03:15:30,620 DEBUG org.apache.hadoop.hbase.master.handler.DeleteTableHandler: Waiting on region to clear regions in transition; mytable,,1319278131519.6eb6891a8b072402b5064f4cc68c210d. state=OPENING, ts=1319278483001
> 2011-10-22 03:15:31,621 DEBUG org.apache.hadoop.hbase.master.handler.DeleteTableHandler: Waiting on region to clear regions in transition;
> mytable,,1319278131519.6eb6891a8b072402b5064f4cc68c210d. state=OPENING, ts=1319278483001
> [repeat message above indefinitely every 1s]
> {code}
> I tried restarting HBase, no luck.  How do I get rid of this table so I can recreate it without {{COMPRESSION => LZO}}?
> h2. Workaround
> Change the schema for each family, restart HBase, drop the table.
> {code}
> hbase(main):004:0> alter 'mytable', {NAME => 'fam1', COMPRESSION => 'NONE'}
> 0 row(s) in 0.1160 seconds
> hbase(main):005:0> alter 'mytable', {NAME => 'fam2', COMPRESSION => 'NONE'}
> 0 row(s) in 0.0480 seconds
> hbase(main):007:0> drop 'mytable'
> ^C
> [hung forever]
> {code}
> [restart HBase]  :(
> {code}
> hbase(main):001:0> disable 'mytable'
> 0 row(s) in 2.5010 seconds
> hbase(main):002:0> drop 'mytable'
> 0 row(s) in 1.1240 seconds
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira