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