This package provides support for atomic transactions. Transactions can
span multiple regions. Transaction writes are applied when committing a
transaction. At commit time, the transaction is examined to see if it
can be applied while still maintaining atomicity. This is done by
looking for conflicts with the transactions that committed while the
current transaction was running. This technique is known as optimistic
concurrency control (OCC) because it relies on the assumption that
transactions will mostly not have conflicts with each other.
For more details on OCC, see the paper On Optimistic Methods for Concurrency Control
by Kung and Robinson available
here .
To enable transactions, modify hbase-site.xml to turn on the
TransactionalRegionServer. This is done by setting
hbase.regionserver.class to
org.apache.hadoop.hbase.ipc.TransactionalRegionInterface and
hbase.regionserver.impl to
org.apache.hadoop.hbase.regionserver.transactional.TransactionalRegionServer
The read set claimed by a transactional scanner is determined from the start and
end keys which the scanner is opened with.
Known Issues
Recovery in the face of hregion server failure
is not fully implemented. Thus, you cannot rely on the transactional
properties in the face of node failure.