Question

I am trying to migrate opentsdb to use hbase 0.92, since for some reason hbase 0.90.x, which uses a branch-versioned hadoop core jar, does not play well with any release of hadoop. Sadly after I configured and hooked up everything, I constantly got the following error in hbase's log

2012-05-02 21:48:25,725 WARN org.apache.hadoop.hbase.regionserver.HRegion: No such column family in batch put
org.apache.hadoop.hbase.regionserver.NoSuchColumnFamilyException: Column family t does not exist in region tsdb,,1335994142141.79b560b1ba606c2f9eef533ddc31e86e. in table {NAME => 'tsdb', FAMILIES => [{NAME => 'id', BLOOMFILTER => 'NONE',REPLICATION_SCOPE => '0', COMPRESSION => 'NONE', VERSIONS => '3', TTL => '2147483647', MIN_VERSIONS => '0', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}, {NAME => 'name', BLOOMFILTER => 'NONE', REPLICATION_SCOPE => '', COMPRESSION => 'NONE', VERSIONS => '3', TTL => '2147483647', MIN_VERSIONS => '0', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}]}
        at org.apache.hadoop.hbase.regionserver.HRegion.checkFamily(HRegion.java:3907)
        at org.apache.hadoop.hbase.regionserver.HRegion.checkFamilies(HRegion.java:2184)
        at org.apache.hadoop.hbase.regionserver.HRegion.doMiniBatchPut(HRegion.java:1790)
        at org.apache.hadoop.hbase.regionserver.HRegion.put(HRegion.java:1723)
        at org.apache.hadoop.hbase.regionserver.HRegionServer.multi(HRegionServer.java:3062)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.hadoop.hbase.ipc.WritableRpcEngine$Server.call(WritableRpcEngine.java:364)
        at org.apache.hadoop.hbase.ipc.HBaseServer$Handler.run(HBaseServer.java:1326)

when I searched through opentsdb's frontend UI, I got this error

org.hbase.async.NoSuchColumnFamilyException: org.apache.hadoop.hbase.regionserver.NoSuchColumnFamilyException: Column family t does not exist in region tsdb,,1335994142141.79b560b1ba606c2f9eef533ddc31e86e. in table {NAME => 'tsdb', FAMILIES => [{NAME => 'id', BLOOMFILTER => 'NONE', REPLICATION_SCOPE => '0', COMPRESSION => 'NONE', VERSIONS => '3', TTL => '2147483647', MIN_VERSIONS => '0', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}, {NAME => 'name', BLOOMFILTER => 'NONE', REPLICATION_SCOPE => '0', COMPRESSION => 'NONE', VERSIONS => '3', TTL => '2147483647', MIN_VERSIONS => '0', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}]}

    at org.apache.hadoop.hbase.regionserver.HRegion.checkFamily(HRegion.java:3907)
    at org.apache.hadoop.hbase.regionserver.HRegion.getScanner(HRegion.java:1422)
    at org.apache.hadoop.hbase.regionserver.HRegion.getScanner(HRegion.java:1401)
    at org.apache.hadoop.hbase.regionserver.HRegionServer.openScanner(HRegionServer.java:2054)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.hadoop.hbase.ipc.WritableRpcEngine$Server.call(WritableRpcEngine.java:364)
    at org.apache.hadoop.hbase.ipc.HBaseServer$Handler.run(HBaseServer.java:1326)

Caused by RPC: OpenScannerRequest(table="tsdb", key=[0, 0, 1, 79, -95, 75, -16], family="t", qualifier=null, start_key=[0, 0, 1, 79, -95, 75, -16], stop_key=[0, 0, 1, 79, -95, -68, -9], max_num_kvs=4096, populate_blockcache=true, attempt=1, region=RegionInfo(table="tsdb", region_name="tsdb,,1335994142141.79b560b1ba606c2f9eef533ddc31e86e.", stop_key=""))
    at org.hbase.async.NoSuchColumnFamilyException.make(NoSuchColumnFamilyException.java:56) ~[asynchbase-1.2.0.jar:bead2c4]
    at org.hbase.async.NoSuchColumnFamilyException.make(NoSuchColumnFamilyException.java:32) ~[asynchbase-1.2.0.jar:bead2c4]
    at org.hbase.async.RegionClient.deserializeException(RegionClient.java:1182) ~[asynchbase-1.2.0.jar:bead2c4]
    at org.hbase.async.RegionClient.deserialize(RegionClient.java:1159) ~[asynchbase-1.2.0.jar:bead2c4]
    at org.hbase.async.RegionClient.decode(RegionClient.java:1080) ~[asynchbase-1.2.0.jar:bead2c4]
    at org.hbase.async.RegionClient.decode(RegionClient.java:82) ~[asynchbase-1.2.0.jar:bead2c4]
    at org.jboss.netty.handler.codec.replay.ReplayingDecoder.callDecode(ReplayingDecoder.java:470) ~[netty-3.2.7.jar:na]
    at org.jboss.netty.handler.codec.replay.ReplayingDecoder.messageReceived(ReplayingDecoder.java:443) ~[netty-3.2.7.jar:na]
    at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:80) ~[netty-3.2.7.jar:na]
    at org.hbase.async.RegionClient.handleUpstream(RegionClient.java:936) ~[asynchbase-1.2.0.jar:bead2c4]
    at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) ~[netty-3.2.7.jar:na]
    at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559) ~[netty-3.2.7.jar:na]
    at org.hbase.async.HBaseClient$RegionClientPipeline.sendUpstream(HBaseClient.java:1974) ~[asynchbase-1.2.0.jar:bead2c4]
    at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:274) [netty-3.2.7.jar:na]
    at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:261) [netty-3.2.7.jar:na]
    at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:351) [netty-3.2.7.jar:na]
    at org.jboss.netty.channel.socket.nio.NioWorker.processSelectedKeys(NioWorker.java:282) [netty-3.2.7.jar:na]
    at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:202) [netty-3.2.7.jar:na]
    at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108) [netty-3.2.7.jar:na]
    at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:44) [netty-3.2.7.jar:na]
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [na:1.6.0_24]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [na:1.6.0_24]
    at java.lang.Thread.run(Thread.java:662) [na:1.6.0_24]

Is it because asynchbase-1.2 does not play well with hbase 0.92. Can someone please help?

Was it helpful?

Solution

I'm not sure how you did this, but this clearly shows that you incorrectly created the tables. OpenTSDB needs two tables, tsdb and tsdb-uid (names are configurable). The tsdb table has a single column family, t, and tsdb-uid has two: name and id.

From the excerpt above, it is clear that your tsdb table has the column families of tsdb-uid:

{NAME => 'tsdb', FAMILIES => [{NAME => 'id', ...}, {NAME => 'name', ...}]}

Use OpenTSDB's src/create_table.sh script to create the tables. With it you can't get it wrong.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top