Comments inline:
> -----Original Message-----
> From: John Ryan [mailto:[EMAIL PROTECTED]
> Sent: Monday, August 18, 2008 4:49 PM
> To: hbase-user@hadoop.apache.org
> Subject: Deletes in HBase
>
> How do deletes work in HBase? Suppose I have 2 Column Families and a key
> that has entries for both column families. Now I want to delete this key.

You mean you want to delete all the values for that row key?
See HTable.deleteAll({byte[]|String)

> Is a major compaction absolutely essential for this key to be deleted?

No. Essentially a record is written that indicates that a cell, row, or column 
family has been deleted.

> Where I can I follow the code this operation?

All the following paths are prefixed with org.apache.hadoop.hbase:

client.HTable - eventually creates a Java Proxy which has the api specified by

ipc.HRegionInterface

which figures out which region server to send the message to. This call will be 
answered by regionserver.HRegionServer.deleteAll which calles 
regionserver.HRegion.deleteAll for the appropriate region, calling 
HRegion.deleteMultiple, HRegion.update which first appends the change to the 
HLog by calling regionserver.HLog.append, and then stores the information in 
the HStore(s) for the appropriate families by calling regionserver.HStore.add, 
which in turn stores it in the memcache for the HStore by calling 
regionserver.Memcache.add, which calls regionserver.Memcache.add

Now the change has been persisted to the redo log (HLog) and is cached. When 
the cache fills, a cache flush will write the contents of the cache out to disk 
and may result in a minor compaction.

> Now I am assuming that major compaction doesn't take place all the time
> since it may be an expensive operation. Having said that how are the reads
> for this key supressed? Please explain.

Reads are suppressed at the level of HStore, and Memcache. They come across the 
deleted markers and suppress the results that would otherwise have been 
returned.
You would have to follow the call tree for get, getRow, and the various 
scanner.next methods to see how this works. It is very complicated.

Reply via email to