You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@hbase.apache.org by Tianying Chang <ty...@gmail.com> on 2015/06/18 21:38:29 UTC

Could not clone a snapshot, complaining the table already exist, although the table does not exist

Hi,

I am trying to trying to clone a table from a snapshot, but it always fail
with below error. That table does not exist, although I was trying to clone
the same table, but failed.  I feel that a reference to that table still
exist somewhere. Any hint what is going wrong?

Thanks
Tian-Ying



015-06-18 19:32:49,524 ERROR
org.apache.hadoop.hbase.master.snapshot.SnapshotManager: Couldn't clone the
snapshot={ ss=ss_tsdb table=tsdb type=SKIPFLUSH } on table=tsdb
org.apache.hadoop.hbase.TableExistsException: tsdb
at
org.apache.hadoop.hbase.master.handler.CreateTableHandler.<init>(CreateTableHandler.java:104)
at
org.apache.hadoop.hbase.master.snapshot.CloneSnapshotHandler.<init>(CloneSnapshotHandler.java:76)
at
org.apache.hadoop.hbase.master.snapshot.SnapshotManager.cloneSnapshot(SnapshotManager.java:640)
at
org.apache.hadoop.hbase.master.snapshot.SnapshotManager.restoreSnapshot(SnapshotManager.java:702)
at org.apache.hadoop.hbase.master.HMaster.restoreSnapshot(HMaster.java:2172)
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:320)
at
org.apache.hadoop.hbase.ipc.HBaseServer$Handler.run(HBaseServer.java:1426)

Re: Could not clone a snapshot, complaining the table already exist, although the table does not exist

Posted by Ted Yu <yu...@gmail.com>.
Possibly the error was caused by orphaned ZK node for table 'tsdb'.
See CreateTableHandler.prepare().

After cleaning the orphaned znode, you should be able to create the table.

Cheers

On Thu, Jun 18, 2015 at 12:44 PM, Tianying Chang <ty...@gmail.com> wrote:

> actually, I found even when I try to create this table, it also failed with
> it already exist! What does HBase check to see if a table already exist? I
> did scan .META. , which also does not show this table.
>
>
>
> hbase(main):009:0> list
> TABLE
> tsdb-uid
> 1 row(s) in 0.0100 seconds
>
> hbase(main):010:0> create 'tsdb', {NAME => 't', BLOOMFILTER => 'ROW',
> REPLICATION_SCOPE => '1', VERSIONS => '1', COMPRESSION => 'SNAPPY'}
>
> ERROR: Table already exists: tsdb!
>
> Here is some help for this command:
> Create table; pass table name, a dictionary of specifications per
> column family, and optionally a dictionary of table configuration.
> Dictionaries are described below in the GENERAL NOTES section.
> Examples:
>
>   hbase> create 't1', {NAME => 'f1', VERSIONS => 5}
>   hbase> create 't1', {NAME => 'f1'}, {NAME => 'f2'}, {NAME => 'f3'}
>   hbase> # The above in shorthand would be the following:
>   hbase> create 't1', 'f1', 'f2', 'f3'
>   hbase> create 't1', {NAME => 'f1', VERSIONS => 1, TTL => 2592000,
> BLOCKCACHE => true}
>   hbase> create 't1', 'f1', {SPLITS => ['10', '20', '30', '40']}
>   hbase> create 't1', 'f1', {SPLITS_FILE => 'splits.txt'}
>   hbase> # Optionally pre-split the table into NUMREGIONS, using
>   hbase> # SPLITALGO ("HexStringSplit", "UniformSplit" or classname)
>   hbase> create 't1', 'f1', {NUMREGIONS => 15, SPLITALGO =>
> 'HexStringSplit'}
>
> On Thu, Jun 18, 2015 at 12:38 PM, Tianying Chang <ty...@gmail.com>
> wrote:
>
> > Hi,
> >
> > I am trying to trying to clone a table from a snapshot, but it always
> fail
> > with below error. That table does not exist, although I was trying to
> clone
> > the same table, but failed.  I feel that a reference to that table still
> > exist somewhere. Any hint what is going wrong?
> >
> > Thanks
> > Tian-Ying
> >
> >
> >
> > 015-06-18 19:32:49,524 ERROR
> > org.apache.hadoop.hbase.master.snapshot.SnapshotManager: Couldn't clone
> the
> > snapshot={ ss=ss_tsdb table=tsdb type=SKIPFLUSH } on table=tsdb
> > org.apache.hadoop.hbase.TableExistsException: tsdb
> > at
> >
> org.apache.hadoop.hbase.master.handler.CreateTableHandler.<init>(CreateTableHandler.java:104)
> > at
> >
> org.apache.hadoop.hbase.master.snapshot.CloneSnapshotHandler.<init>(CloneSnapshotHandler.java:76)
> > at
> >
> org.apache.hadoop.hbase.master.snapshot.SnapshotManager.cloneSnapshot(SnapshotManager.java:640)
> > at
> >
> org.apache.hadoop.hbase.master.snapshot.SnapshotManager.restoreSnapshot(SnapshotManager.java:702)
> > at
> > org.apache.hadoop.hbase.master.HMaster.restoreSnapshot(HMaster.java:2172)
> > 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:320)
> > at
> >
> org.apache.hadoop.hbase.ipc.HBaseServer$Handler.run(HBaseServer.java:1426)
> >
>

Re: Could not clone a snapshot, complaining the table already exist, although the table does not exist

Posted by Tianying Chang <ty...@gmail.com>.
actually, I found even when I try to create this table, it also failed with
it already exist! What does HBase check to see if a table already exist? I
did scan .META. , which also does not show this table.



hbase(main):009:0> list
TABLE
tsdb-uid
1 row(s) in 0.0100 seconds

hbase(main):010:0> create 'tsdb', {NAME => 't', BLOOMFILTER => 'ROW',
REPLICATION_SCOPE => '1', VERSIONS => '1', COMPRESSION => 'SNAPPY'}

ERROR: Table already exists: tsdb!

Here is some help for this command:
Create table; pass table name, a dictionary of specifications per
column family, and optionally a dictionary of table configuration.
Dictionaries are described below in the GENERAL NOTES section.
Examples:

  hbase> create 't1', {NAME => 'f1', VERSIONS => 5}
  hbase> create 't1', {NAME => 'f1'}, {NAME => 'f2'}, {NAME => 'f3'}
  hbase> # The above in shorthand would be the following:
  hbase> create 't1', 'f1', 'f2', 'f3'
  hbase> create 't1', {NAME => 'f1', VERSIONS => 1, TTL => 2592000,
BLOCKCACHE => true}
  hbase> create 't1', 'f1', {SPLITS => ['10', '20', '30', '40']}
  hbase> create 't1', 'f1', {SPLITS_FILE => 'splits.txt'}
  hbase> # Optionally pre-split the table into NUMREGIONS, using
  hbase> # SPLITALGO ("HexStringSplit", "UniformSplit" or classname)
  hbase> create 't1', 'f1', {NUMREGIONS => 15, SPLITALGO =>
'HexStringSplit'}

On Thu, Jun 18, 2015 at 12:38 PM, Tianying Chang <ty...@gmail.com> wrote:

> Hi,
>
> I am trying to trying to clone a table from a snapshot, but it always fail
> with below error. That table does not exist, although I was trying to clone
> the same table, but failed.  I feel that a reference to that table still
> exist somewhere. Any hint what is going wrong?
>
> Thanks
> Tian-Ying
>
>
>
> 015-06-18 19:32:49,524 ERROR
> org.apache.hadoop.hbase.master.snapshot.SnapshotManager: Couldn't clone the
> snapshot={ ss=ss_tsdb table=tsdb type=SKIPFLUSH } on table=tsdb
> org.apache.hadoop.hbase.TableExistsException: tsdb
> at
> org.apache.hadoop.hbase.master.handler.CreateTableHandler.<init>(CreateTableHandler.java:104)
> at
> org.apache.hadoop.hbase.master.snapshot.CloneSnapshotHandler.<init>(CloneSnapshotHandler.java:76)
> at
> org.apache.hadoop.hbase.master.snapshot.SnapshotManager.cloneSnapshot(SnapshotManager.java:640)
> at
> org.apache.hadoop.hbase.master.snapshot.SnapshotManager.restoreSnapshot(SnapshotManager.java:702)
> at
> org.apache.hadoop.hbase.master.HMaster.restoreSnapshot(HMaster.java:2172)
> 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:320)
> at
> org.apache.hadoop.hbase.ipc.HBaseServer$Handler.run(HBaseServer.java:1426)
>