Apache HBase

Known Incompatibilities Among HBase Versions

Comprehensive list of breaking changes and incompatibilities between HBase versions, particularly for HBase 2.0.

HBase 2.0 Incompatible Changes

This appendix describes incompatible changes from earlier versions of HBase against HBase 2.0. This list is not meant to be wholly encompassing of all possible incompatibilities. Instead, this content is intended to give insight into some obvious incompatibilities which most users will face coming from HBase 1.x releases.

List of Major Changes for HBase 2.0

  • HBASE-1912- HBCK is an HBase database checking tool for capturing the inconsistency. As an HBase administrator, you should not use HBase version 1.0 hbck tool to check the HBase 2.0 database. Doing so will break the database and throw an exception error.
  • HBASE-16189 and HBASE-18945- You cannot open the HBase 2.0 hfiles through HBase 1.0 version. If you are an admin or an HBase user who is using HBase version 1.x, you must first do a rolling upgrade to the latest version of HBase 1.x and then upgrade to HBase 2.0.
  • HBASE-18240 - Changed the ReplicationEndpoint Interface. It also introduces a new hbase-third party 1.0 that packages all the third party utilities, which are expected to run in the hbase cluster.

Coprocessor API changes

  • HBASE-16769 - Deprecated PB references from MasterObserver and RegionServerObserver.
  • HBASE-17312 - [JDK8] Use default method for Observer Coprocessors. The interface classes of BaseMasterAndRegionObserver, BaseMasterObserver, BaseRegionObserver, BaseRegionServerObserver and BaseWALObserver uses JDK8's 'default' keyword to provide empty and no-op implementations.
  • Interface HTableInterface HBase 2.0 introduces following changes to the methods listed below:

interface CoprocessorEnvironment changes (2)

ChangeResult
Abstract method getTable ( TableName ) has been removed.A client program may be interrupted by NoSuchMethodError exception.
Abstract method getTable ( TableName, ExecutorService ) has been removed.A client program may be interrupted by NoSuchMethodError exception.
  • Public Audience

The following tables describes the coprocessor changes.

class CoprocessorRpcChannel (1)
ChangeResult
This class has become interface.A client program may be interrupted by IncompatibleClassChangeError or InstantiationError exception depending on the usage of this class.
Class CoprocessorHost<E>

Classes that were Audience Private but were removed.

ChangeResult
Type of field coprocessors has been changed from java.util.SortedSet<E> to org.apache.hadoop.hbase.util.SortedList<E>.A client program may be interrupted by NoSuchFieldError exception.

MasterObserver

HBase 2.0 introduces following changes to the MasterObserver interface.

interface MasterObserver (14)
ChangeResult
Abstract method voidpostCloneSnapshot ( ObserverContext<MasterCoprocessorEnvironment>, HBaseProtos.SnapshotDescription, HTableDescriptor ) has been removed from this interface.A client program may be interrupted by NoSuchMethodError exception.
Abstract method voidpostCreateTable ( ObserverContext<MasterCoprocessorEnvironment>, HTableDescriptor, HRegionInfo[ ] ) has been removed from this interface.A client program may be interrupted by NoSuchMethodErrorexception.
Abstract method voidpostDeleteSnapshot (ObserverContext<MasterCoprocessorEnvironment>, HBaseProtos.SnapshotDescription ) has been removed from this interface.A client program may be interrupted by NoSuchMethodErrorexception.
Abstract method voidpostGetTableDescriptors ( ObserverContext<MasterCoprocessorEnvironment>, List<HTableDescriptor> ) has been removed from this interface.A client program may be interrupted by NoSuchMethodErrorexception.
Abstract method voidpostModifyTable ( ObserverContext<MasterCoprocessorEnvironment>, TableName, HTableDescriptor ) has been removed from this interface.A client program may be interrupted by NoSuchMethodErrorexception.
Abstract method voidpostRestoreSnapshot ( ObserverContext<MasterCoprocessorEnvironment>, HBaseProtos.SnapshotDescription, HTableDescriptor ) has been removed from this interface.A client program may be interrupted by NoSuchMethodErrorexception.
Abstract method voidpostSnapshot ( ObserverContext<MasterCoprocessorEnvironment>, HBaseProtos.SnapshotDescription, HTableDescriptor ) has been removed from this interface.A client program may be interrupted by NoSuchMethodErrorexception.
Abstract method voidpreCloneSnapshot ( ObserverContext<MasterCoprocessorEnvironment>, HBaseProtos.SnapshotDescription, HTableDescriptor ) has been removed from this interface.A client program may be interrupted by NoSuchMethodErrorexception.
Abstract method voidpreCreateTable ( ObserverContext<MasterCoprocessorEnvironment>, HTableDescriptor, HRegionInfo[ ] ) has been removed from this interface.A client program may be interrupted by NoSuchMethodErrorexception.
Abstract method voidpreDeleteSnapshot ( ObserverContext<MasterCoprocessorEnvironment>, HBaseProtos.SnapshotDescription ) has been removed from this interface.A client program may be interrupted by NoSuchMethodErrorexception.
Abstract method voidpreGetTableDescriptors ( ObserverContext<MasterCoprocessorEnvironment>, List<TableName>, List<HTableDescriptor> ) has been removed from this interface.A client program may be interrupted by NoSuchMethodErrorexception.
Abstract method voidpreModifyTable ( ObserverContext<MasterCoprocessorEnvironment>, TableName, HTableDescriptor ) has been removed from this interface.A client program may be interrupted by NoSuchMethodErrorexception.
Abstract method voidpreRestoreSnapshot ( ObserverContext<MasterCoprocessorEnvironment>, HBaseProtos.SnapshotDescription, HTableDescriptor ) has been removed from this interface.A client program may be interrupted by NoSuchMethodErrorexception.
Abstract method voidpreSnapshot ( ObserverContext<MasterCoprocessorEnvironment>, HBaseProtos.SnapshotDescription, HTableDescriptor ) has been removed from this interface.A client program may be interrupted by NoSuchMethodErrorexception.

RegionObserver

HBase 2.0 introduces following changes to the RegionObserver interface.

interface RegionObserver (13)
ChangeResult
Abstract method voidpostCloseRegionOperation ( ObserverContext<RegionCoprocessorEnvironment>, HRegion.Operation ) has been removed from this interface.A client program may be interrupted by NoSuchMethodError exception.
Abstract method voidpostCompactSelection ( ObserverContext<RegionCoprocessorEnvironment>, Store, ImmutableList<StoreFile> ) has been removed from this interface.A client program may be interrupted by NoSuchMethodError exception.
Abstract method voidpostCompactSelection ( ObserverContext<RegionCoprocessorEnvironment>, Store, ImmutableList<StoreFile>, CompactionRequest ) has been removed from this interface.A client program may be interrupted by NoSuchMethodError exception.
Abstract method voidpostGetClosestRowBefore ( ObserverContext<RegionCoprocessorEnvironment>, byte[ ], byte[ ], Result ) has been removed from this interface.A client program may be interrupted by NoSuchMethodError exception.
Abstract method DeleteTrackerpostInstantiateDeleteTracker ( ObserverContext<RegionCoprocessorEnvironment>, DeleteTracker ) has been removed from this interface.A client program may be interrupted by NoSuchMethodError exception.
Abstract method voidpostSplit ( ObserverContext<RegionCoprocessorEnvironment>, HRegion, HRegion ) has been removed from this interface.A client program may be interrupted by NoSuchMethodError exception.
Abstract method voidpostStartRegionOperation ( ObserverContext<RegionCoprocessorEnvironment>, HRegion.Operation ) has been removed from this interface.A client program may be interrupted by NoSuchMethodError exception.
Abstract method StoreFile.ReaderpostStoreFileReaderOpen ( ObserverContext<RegionCoprocessorEnvironment>, FileSystem, Path, FSDataInputStreamWrapper, long, CacheConfig, Reference, StoreFile.Reader ) has been removed from this interface.A client program may be interrupted by NoSuchMethodError exception.
Abstract method voidpostWALRestore ( ObserverContext<RegionCoprocessorEnvironment>, HRegionInfo, HLogKey, WALEdit ) has been removed from this interface.A client program may be interrupted by NoSuchMethodError exception.
Abstract method InternalScannerpreFlushScannerOpen ( ObserverContext<RegionCoprocessorEnvironment>, Store, KeyValueScanner, InternalScanner ) has been removed from this interface.A client program may be interrupted by NoSuchMethodError exception.
Abstract method voidpreGetClosestRowBefore ( ObserverContext<RegionCoprocessorEnvironment>, byte[ ], byte[ ], Result ) has been removed from this interface.A client program may be interrupted by NoSuchMethodError exception.
Abstract method StoreFile.ReaderpreStoreFileReaderOpen ( ObserverContext<RegionCoprocessorEnvironment>, FileSystem, Path, FSDataInputStreamWrapper, long, CacheConfig, Reference, StoreFile.Reader ) has been removed from this interface.A client program may be interrupted by NoSuchMethodError exception.
Abstract method voidpreWALRestore ( ObserverContext<RegionCoprocessorEnvironment>, HRegionInfo, HLogKey, WALEdit ) has been removed from this interface.A client program may be interrupted by NoSuchMethodError exception.

WALObserver

HBase 2.0 introduces following changes to the WALObserver interface.

interface WALObserver
ChangeResult
Abstract method voidpostWALWrite ( ObserverContext<WALCoprocessorEnvironment>, HRegionInfo, HLogKey, WALEdit ) has been removed from this interface.A client program may be interrupted by NoSuchMethodError exception.
Abstract method booleanpreWALWrite ( ObserverContext<WALCoprocessorEnvironment>, HRegionInfo, HLogKey, WALEdit ) has been removed from this interface.A client program may be interrupted by NoSuchMethodError exception.

Miscellaneous

HBase 2.0 introduces changes to the following classes:

hbase-server-1.0.0.jar, OnlineRegions.class package org.apache.hadoop.hbase.regionserver

OnlineRegions.getFromOnlineRegions ( String p1 ) [abstract] : HRegion

org/apache/hadoop/hbase/regionserver/OnlineRegions.getFromOnlineRegions:(Ljava/lang/String;)Lorg/apache/hadoop/hbase/regionserver/HRegion;

ChangeResult
Return value type has been changed from Region to Region.This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.

hbase-server-1.0.0.jar, RegionCoprocessorEnvironment.class package org.apache.hadoop.hbase.coprocessor

RegionCoprocessorEnvironment.getRegion ( ) [abstract] : HRegion

org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.getRegion:()Lorg/apache/hadoop/hbase/regionserver/HRegion;

ChangeResult
Return value type has been changed from org.apache.hadoop.hbase.regionserver.HRegion to org.apache.hadoop.hbase.regionserver.Region.This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.

hbase-server-1.0.0.jar, RegionCoprocessorHost.class package org.apache.hadoop.hbase.regionserver

RegionCoprocessorHost.postAppend ( Append append, Result result ) : void

org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.postAppend:(Lorg/apache/hadoop/hbase/client/Append;Lorg/apache/hadoop/hbase/client/Result;)V

ChangeResult
Return value type has been changed from void to org.apache.hadoop.hbase.client.Result.This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.
RegionCoprocessorHost.preStoreFileReaderOpen ( FileSystem fs, Path p, FSDataInputStreamWrapper in, long size,CacheConfig cacheConf, Reference r ) : StoreFile.Reader

org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.preStoreFileReaderOpen:(Lorg/apache/hadoop/fs/FileSystem;Lorg/apache/hadoop/fs/Path;Lorg/apache/hadoop/hbase/io/FSDataInputStreamWrapper;JLorg/apache/hadoop/hbase/io/hfile/CacheConfig;Lorg/apache/hadoop/hbase/io/Reference;)Lorg/apache/hadoop/hbase/regionserver/StoreFile$Reader;

ChangeResult
Return value type has been changed from StoreFile.Reader to StoreFileReader.This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.

IPC

Scheduler changes:

  1. Following methods became abstract:

package org.apache.hadoop.hbase.ipc

class RpcScheduler (1)
ChangeResult
Abstract method void dispatch ( CallRunner ) has been removed from this class.A client program may be interrupted by NoSuchMethodError exception.

hbase-server-1.0.0.jar, RpcScheduler.class package org.apache.hadoop.hbase.ipc

RpcScheduler.dispatch ( CallRunner p1 ) [abstract] : void 1

org/apache/hadoop/hbase/ipc/RpcScheduler.dispatch:(Lorg/apache/hadoop/hbase/ipc/CallRunner;)V

ChangeResult
Return value type has been changed from void to boolean.This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.
  1. Following abstract methods have been removed:
interface PriorityFunction (2)
ChangeResult
Abstract method longgetDeadline ( RPCProtos.RequestHeader, Message ) has been removed from this interface.A client program may be interrupted by NoSuchMethodError exception.
Abstract method int getPriority ( RPCProtos.RequestHeader, Message ) has been removed from this interface.A client program may be interrupted by NoSuchMethodError exception.

Server API changes:

class RpcServer (12)
ChangeResult
Type of field CurCall has been changed from java.lang.ThreadLocal<RpcServer.Call> to java.lang.ThreadLocal<RpcCall>.A client program may be interrupted by NoSuchFieldError exception.
This class became abstract.A client program may be interrupted by InstantiationError exception.
Abstract method int getNumOpenConnections ( ) has been added to this class.This class became abstract and a client program may be interrupted by InstantiationError exception.
Field callQueueSize of type org.apache.hadoop.hbase.util.Counter has been removed from this class.A client program may be interrupted by NoSuchFieldError exception.
Field connectionList of type java.util.List<RpcServer.Connection> has been removed from this class.A client program may be interrupted by NoSuchFieldError exception.
Field maxIdleTime of type int has been removed from this class.A client program may be interrupted by NoSuchFieldError exception.
Field numConnections of type int has been removed from this class.A client program may be interrupted by NoSuchFieldError exception.
Field port of type int has been removed from this class.A client program may be interrupted by NoSuchFieldError exception.
Field purgeTimeout of type long has been removed from this class.A client program may be interrupted by NoSuchFieldError exception.
Field responder of type RpcServer.Responder has been removed from this class.A client program may be interrupted by NoSuchFieldError exception.
Field socketSendBufferSize of type int has been removed from this class.A client program may be interrupted by NoSuchFieldError exception.
Field thresholdIdleConnections of type int has been removed from this class.A client program may be interrupted by NoSuchFieldError exception.

Following abstract method has been removed:

ChangeResult
Abstract method Pair<Message,CellScanner>call ( BlockingService, Descriptors.MethodDescriptor, Message, CellScanner, long, MonitoredRPCHandler ) has been removed from this interface.A client program may be interrupted by NoSuchMethodError exception.

Replication and WAL changes:

HBASE-18733: WALKey has been purged completely in HBase 2.0. Following are the changes to the WALKey:

classWALKey (8)
ChangeResult
Access level of field clusterIds has been changed from protected to private.A client program may be interrupted by IllegalAccessError exception.
Access level of field compressionContext has been changed from protected to private.A client program may be interrupted by IllegalAccessError exception.
Access level of field encodedRegionName has been changed from protected to private.A client program may be interrupted by IllegalAccessError exception.
Access level of field tablename has been changed from protectedto private.A client program may be interrupted by IllegalAccessError exception.
Access level of field writeTime has been changed from protectedto private.A client program may be interrupted by IllegalAccessError exception.

Following fields have been removed:

ChangeResult
Field LOG of type org.apache.commons.logging.Log has been removed from this class.A client program may be interrupted by NoSuchFieldError exception.
Field VERSION of type WALKey.Version has been removed from this class.A client program may be interrupted by NoSuchFieldError exception.
Field logSeqNum of type long has been removed from this class.A client program may be interrupted by NoSuchFieldError exception.

Following are the changes to the WALEdit.class: hbase-server-1.0.0.jar, WALEdit.class package org.apache.hadoop.hbase.regionserver.wal

WALEdit.getCompaction ( Cell kv ) [static] : WALProtos.CompactionDescriptor (1)

org/apache/hadoop/hbase/regionserver/wal/WALEdit.getCompaction:(Lorg/apache/hadoop/hbase/Cell;)Lorg/apache/hadoop/hbase/protobuf/generated/WALProtos$CompactionDescriptor;

ChangeResult
Return value type has been changed from org.apache.hadoop.hbase.protobuf.generated.WALProtos.CompactionDescriptor to org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.CompactionDescriptor.This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.

WALEdit.getFlushDescriptor ( Cell cell ) [static] : WALProtos.FlushDescriptor (1)

org/apache/hadoop/hbase/regionserver/wal/WALEdit.getFlushDescriptor:(Lorg/apache/hadoop/hbase/Cell;)Lorg/apache/hadoop/hbase/protobuf/generated/WALProtos$FlushDescriptor;

ChangeResult
Return value type has been changed from org.apache.hadoop.hbase.protobuf.generated.WALProtos.FlushDescriptor to org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.FlushDescriptor.This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.

WALEdit.getRegionEventDescriptor ( Cell cell ) [static] : WALProtos.RegionEventDescriptor (1)

org/apache/hadoop/hbase/regionserver/wal/WALEdit.getRegionEventDescriptor:(Lorg/apache/hadoop/hbase/Cell;)Lorg/apache/hadoop/hbase/protobuf/generated/WALProtos$RegionEventDescriptor;

ChangeResult
Return value type has been changed from org.apache.hadoop.hbase.protobuf.generated.WALProtos.RegionEventDescriptor to org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.RegionEventDescriptor.This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.

Following is the change to the WALKey.class: package org.apache.hadoop.hbase.wal

WALKey.getBuilder ( WALCellCodec.ByteStringCompressor compressor ) : WALProtos.WALKey.Builder 1

org/apache/hadoop/hbase/wal/WALKey.getBuilder:(Lorg/apache/hadoop/hbase/regionserver/wal/WALCellCodec$ByteStringCompressor;)Lorg/apache/hadoop/hbase/protobuf/generated/WALProtos$WALKey$Builder;

ChangeResult
Return value type has been changed from org.apache.hadoop.hbase.protobuf.generated.WALProtos.WALKey.Builder to org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.WALKey.Builder.This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.

Deprecated APIs or coprocessor:

HBASE-16769 - PB references from MasterObserver and RegionServerObserver has been removed.

Admin Interface API changes:

You cannot administer an HBase 2.0 cluster with an HBase 1.0 client that includes RelicationAdmin, ACC, Thrift and REST usage of Admin ops. Methods returning protobufs have been changed to return POJOs instead. pb is not used in the APIs anymore. Returns have changed from void to Future for async methods. HBASE-18106 - Admin.listProcedures and Admin.listLocks were renamed to getProcedures and getLocks. MapReduce makes use of Admin doing following admin.getClusterStatus() to calcluate Splits.

  • Thrift usage of Admin API: compact(ByteBuffer) createTable(ByteBuffer, List<ColumnDescriptor>) deleteTable(ByteBuffer) disableTable(ByteBuffer) enableTable(ByteBuffer) getTableNames() majorCompact(ByteBuffer)

  • REST usage of Admin API: hbase-rest org.apache.hadoop.hbase.rest RootResource getTableList()

TableName\[\] tableNames = servlet.getAdmin().listTableNames();

SchemaResource delete(UriInfo)

  Admin admin = servlet.getAdmin();

update(TableSchemaModel, boolean, UriInfo)

  Admin admin = servlet.getAdmin();

StorageClusterStatusResource get(UriInfo)

  ClusterStatus status = servlet.getAdmin().getClusterStatus();

StorageClusterVersionResource get(UriInfo)

  model.setVersion(servlet.getAdmin().getClusterStatus().getHBaseVersion());

TableResource exists()

return servlet.getAdmin().tableExists(TableName.valueOf(table));

Following are the changes to the Admin interface:

interface Admin (9)
ChangeResult
Abstract method createTableAsync ( HTableDescriptor, byte[ ][ ] ) has been removed from this interface.A client program may be interrupted by NoSuchMethodError exception.
Abstract method disableTableAsync ( TableName ) has been removed from this interface.A client program may be interrupted by NoSuchMethodError exception.
Abstract method enableTableAsync ( TableName ) has been removed from this interface.A client program may be interrupted by NoSuchMethodError exception.
Abstract method getCompactionState ( TableName ) has been removed from this interface.A client program may be interrupted by NoSuchMethodError exception.
Abstract method getCompactionStateForRegion ( byte[ ] ) has been removed from this interface.A client program may be interrupted by NoSuchMethodError exception.
Abstract method isSnapshotFinished ( HBaseProtos.SnapshotDescription ) has been removed from this interface.A client program may be interrupted by NoSuchMethodError exception.
Abstract method snapshot ( String, TableName, HBaseProtos.SnapshotDescription.Type ) has been removed from this interface.A client program may be interrupted by NoSuchMethodError exception.
Abstract method snapshot ( HBaseProtos.SnapshotDescription ) has been removed from this interface.A client program may be interrupted by NoSuchMethodError exception.
Abstract method takeSnapshotAsync ( HBaseProtos.SnapshotDescription ) has been removed from this interface.A client program may be interrupted by NoSuchMethodError exception.

Following are the changes to the Admin.class: hbase-client-1.0.0.jar, Admin.class package org.apache.hadoop.hbase.client

Admin.createTableAsync ( HTableDescriptor p1, byte[ ][ ] p2 ) [abstract] : void 1

org/apache/hadoop/hbase/client/Admin.createTableAsync:(Lorg/apache/hadoop/hbase/HTableDescriptor;[[B)V

ChangeResult
Return value type has been changed from void to java.util.concurrent.Future<java.lang.Void>.This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.
Admin.disableTableAsync ( TableName p1 ) [abstract] : void 1

org/apache/hadoop/hbase/client/Admin.disableTableAsync:(Lorg/apache/hadoop/hbase/TableName;)V

ChangeResult
Return value type has been changed from void to java.util.concurrent.Future<java.lang.Void>.This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.

Admin.enableTableAsync ( TableName p1 ) [abstract] : void 1

org/apache/hadoop/hbase/client/Admin.enableTableAsync:(Lorg/apache/hadoop/hbase/TableName;)V

ChangeResult
Return value type has been changed from void to java.util.concurrent.Future<java.lang.Void>.This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.
Admin.getCompactionState ( TableName p1 ) [abstract] : AdminProtos.GetRegionInfoResponse.CompactionState 1

org/apache/hadoop/hbase/client/Admin.getCompactionState:(Lorg/apache/hadoop/hbase/TableName;)Lorg/apache/hadoop/hbase/protobuf/generated/AdminProtos$GetRegionInfoResponse$CompactionState;

ChangeResult
Return value type has been changed from org.apache.hadoop.hbase.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState to CompactionState.This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.
Admin.getCompactionStateForRegion ( byte[ ] p1 ) [abstract] : AdminProtos.GetRegionInfoResponse.CompactionState 1

org/apache/hadoop/hbase/client/Admin.getCompactionStateForRegion:([B)Lorg/apache/hadoop/hbase/protobuf/generated/AdminProtos$GetRegionInfoResponse$CompactionState;

ChangeResult
Return value type has been changed from org.apache.hadoop.hbase.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState to CompactionState.This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.

HTableDescriptor and HColumnDescriptor changes

HTableDescriptor and HColumnDescriptor has become interfaces and you can create it through Builders. HCD has become CFD. It no longer implements writable interface. package org.apache.hadoop.hbase

class HColumnDescriptor (1)
ChangeResult
Removed super-interface org.apache.hadoop.io.WritableComparable<HColumnDescriptor>.A client program may be interrupted by NoSuchMethodError exception.

HColumnDescriptor in 1.0.0

@InterfaceAudience.Public
@InterfaceStability.Evolving
public class HColumnDescriptor implements WritableComparable<HColumnDescriptor> {

HColumnDescriptor in 2.0

@InterfaceAudience.Public
@Deprecated // remove it in 3.0
public class HColumnDescriptor implements ColumnFamilyDescriptor, Comparable<HColumnDescriptor> {

For META_TABLEDESC, the maker method had been deprecated already in HTD in 1.0.0. OWNER_KEY is still in HTD.

class HTableDescriptor (3)

ChangeResult
Removed super-interface org.apache.hadoop.io.WritableComparable<HTableDescriptor>.A client program may be interrupted by NoSuchMethodError exception.
Field META_TABLEDESC of type HTableDescriptor has been removed from this class.A client program may be interrupted by NoSuchFieldError exception.

hbase-client-1.0.0.jar, HTableDescriptor.class package org.apache.hadoop.hbase

HTableDescriptor.getColumnFamilies ( ) : HColumnDescriptor[ ] (1)

org/apache/hadoop/hbase/HTableDescriptor.getColumnFamilies:()[\Lorg/apache/hadoop/hbase/HColumnDescriptor;

class HColumnDescriptor (1)
ChangeResult
Return value type has been changed from HColumnDescriptor[]to client.ColumnFamilyDescriptor[].This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.
HTableDescriptor.getCoprocessors ( ) : List<String> (1)

org/apache/hadoop/hbase/HTableDescriptor.getCoprocessors:()Ljava/util/List;

ChangeResult
Return value type has been changed from java.util.List<java.lang.String> to java.util.Collection.This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.
  • HBASE-12990 MetaScanner is removed and it is replaced by MetaTableAccessor.

HTableWrapper changes:

hbase-server-1.0.0.jar, HTableWrapper.class package org.apache.hadoop.hbase.client

HTableWrapper.createWrapper ( List<HTableInterface> openTables, TableName tableName, CoprocessorHost.Environment env, ExecutorService pool ) [static] : HTableInterface 1

org/apache/hadoop/hbase/client/HTableWrapper.createWrapper:(Ljava/util/List;Lorg/apache/hadoop/hbase/TableName;Lorg/apache/hadoop/hbase/coprocessor/CoprocessorHost$Environment;Ljava/util/concurrent/ExecutorService;)Lorg/apache/hadoop/hbase/client/HTableInterface;

ChangeResult
Return value type has been changed from HTableInterface to Table.This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.
  • HBASE-12586: Delete all public HTable constructors and delete ConnectionManager#{delete,get}Connection.
  • HBASE-9117: Remove HTablePool and all HConnection pooling related APIs.
  • HBASE-13214: Remove deprecated and unused methods from HTable class Following are the changes to the Table interface:
interface Table (4)
ChangeResult
Abstract method batch ( List<?> ) has been removed from this interface.A client program may be interrupted by NoSuchMethodError exception.
Abstract method batchCallback ( List<?>, Batch.Callback<R> )has been removed from this interface.A client program may be interrupted by NoSuchMethodError exception.
Abstract method getWriteBufferSize ( ) has been removed from this interface.A client program may be interrupted by NoSuchMethodError exception.
Abstract method setWriteBufferSize ( long ) has been removed from this interface.A client program may be interrupted by NoSuchMethodError exception.

Deprecated buffer methods in Table (in 1.0.1) and removed in 2.0.0

  • HBASE-13298- Clarify if Table.{set|get}WriteBufferSize() is deprecated or not.

  • LockTimeoutException and OperationConflictException classes have been removed.

class OperationConflictException (1)

ChangeResult
This class has been removed.A client program may be interrupted by NoClassDefFoundErrorexception.

class class LockTimeoutException (1)

ChangeResult
This class has been removed.A client program may be interrupted by NoClassDefFoundErrorexception.

Filter API changes:

Following methods have been removed: package org.apache.hadoop.hbase.filter

class Filter (2)
ChangeResult
Abstract method getNextKeyHint ( KeyValue ) has been removed from this class.A client program may be interrupted by NoSuchMethodError exception.
Abstract method transform ( KeyValue ) has been removed from this class.A client program may be interrupted by NoSuchMethodError exception.
  • HBASE-12296 Filters should work with ByteBufferedCell.
  • HConnection is removed in HBase 2.0.
  • RegionLoad and ServerLoad internally moved to shaded PB.
class RegionLoad (1)
ChangeResult
Type of field regionLoadPB has been changed from protobuf.generated.ClusterStatusProtos.RegionLoad to shaded.protobuf.generated.ClusterStatusProtos.RegionLoad.A client program may be interrupted by NoSuchFieldError exception.
  • HBASE-15783:AccessControlConstants#OP_ATTRIBUTE_ACL_STRATEGY_CELL_FIRST is not used any more. package org.apache.hadoop.hbase.security.access
interface AccessControlConstants (3)
ChangeResult
Field OP_ATTRIBUTE_ACL_STRATEGY of type java.lang.Stringhas been removed from this interface.A client program may be interrupted by NoSuchFieldError exception.
Field OP_ATTRIBUTE_ACL_STRATEGY_CELL_FIRST of type byte[] has been removed from this interface.A client program may be interrupted by NoSuchFieldError exception.
Field OP_ATTRIBUTE_ACL_STRATEGY_DEFAULT of type byte[] has been removed from this interface.A client program may be interrupted by NoSuchFieldError exception.

ServerLoad returns long instead of int 1

hbase-client-1.0.0.jar, ServerLoad.class package org.apache.hadoop.hbase

ServerLoad.getNumberOfRequests ( ) : int 1

org/apache/hadoop/hbase/ServerLoad.getNumberOfRequests:()I

ChangeResult
Return value type has been changed from int to long.This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.
ServerLoad.getReadRequestsCount ( ) : int 1

org/apache/hadoop/hbase/ServerLoad.getReadRequestsCount:()I

ChangeResult
Return value type has been changed from int to long.This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.
ServerLoad.getTotalNumberOfRequests ( ) : int 1

org/apache/hadoop/hbase/ServerLoad.getTotalNumberOfRequests:()I

ChangeResult
Return value type has been changed from int to long.This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.
ServerLoad.getWriteRequestsCount ( ) : int 1

org/apache/hadoop/hbase/ServerLoad.getWriteRequestsCount:()I

ChangeResult
Return value type has been changed from int to long.This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.
  • HBASE-13636 Remove deprecation for HBASE-4072 (Reading of zoo.cfg)
  • HConstants are removed. HBASE-16040 Remove configuration "hbase.replication"
class HConstants (6)
ChangeResult
Field DEFAULT_HBASE_CONFIG_READ_ZOOKEEPER_CONFIG of type boolean has been removed from this class.A client program may be interrupted by NoSuchFieldError exception.
Field HBASE_CONFIG_READ_ZOOKEEPER_CONFIG of type java.lang.String has been removed from this class.A client program may be interrupted by NoSuchFieldError exception.
Field REPLICATION_ENABLE_DEFAULT of type boolean has been removed from this class.A client program may be interrupted by NoSuchFieldError exception.
Field REPLICATION_ENABLE_KEY of type java.lang.String has been removed from this class.A client program may be interrupted by NoSuchFieldError exception.
Field ZOOKEEPER_CONFIG_NAME of type java.lang.String has been removed from this class.A client program may be interrupted by NoSuchFieldError exception.
Field ZOOKEEPER_USEMULTI of type java.lang.String has been removed from this class.A client program may be interrupted by NoSuchFieldError exception.
  • HBASE-18732: [compat 1-2] HBASE-14047 removed Cell methods without deprecation cycle.
interface Cell 5
ChangeResult
Abstract method getFamily ( ) has been removed from this interface.A client program may be interrupted by NoSuchMethodError exception.
Abstract method getMvccVersion ( ) has been removed from this interface.A client program may be interrupted by NoSuchMethodError exception.
Abstract method getQualifier ( ) has been removed from this interface.A client program may be interrupted by NoSuchMethodError exception.
Abstract method getRow ( ) has been removed from this interface.A client program may be interrupted by NoSuchMethodError exception.
Abstract method getValue ( ) has been removed from this interface.A client program may be interrupted by NoSuchMethodError exception.
  • HBASE-18795:Expose KeyValue.getBuffer() for tests alone. Allows KV#getBuffer in tests only that was deprecated previously.

Region scanner changes:

interface RegionScanner (1)
ChangeResult
Abstract method boolean nextRaw ( List<Cell>, int ) has been removed from this interface.A client program may be interrupted by NoSuchMethodError exception.

StoreFile changes:

class StoreFile (1)
ChangeResult
This class became interface.A client program may be interrupted by IncompatibleClassChangeError or InstantiationError exception dependent on the usage of this class.

Mapreduce changes:

HFile*Format has been removed in HBase 2.0.

ClusterStatus changes:

HBASE-15843: Replace RegionState.getRegionInTransition() Map with a Set hbase-client-1.0.0.jar, ClusterStatus.class package org.apache.hadoop.hbase

ClusterStatus.getRegionsInTransition ( ) : Map<String,RegionState> 1

org/apache/hadoop/hbase/ClusterStatus.getRegionsInTransition:()Ljava/util/Map;

ChangeResult
Return value type has been changed from java.util.Map<java.lang.String,master.RegionState> to java.util.List<master.RegionState>.This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.

Other changes in ClusterStatus include removal of convert methods that were no longer necessary after purge of PB from API.

Purge of PBs from API

PBs have been deprecated in APIs in HBase 2.0.

HBaseSnapshotException.getSnapshotDescription ( ) : HBaseProtos.SnapshotDescription 1

org/apache/hadoop/hbase/snapshot/HBaseSnapshotException.getSnapshotDescription:()Lorg/apache/hadoop/hbase/protobuf/generated/HBaseProtos$SnapshotDescription;

ChangeResult
Return value type has been changed from org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.SnapshotDescription to org.apache.hadoop.hbase.client.SnapshotDescription.This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.
  • HBASE-15609: Remove PB references from Result, DoubleColumnInterpreter and any such public facing class for 2.0. hbase-client-1.0.0.jar, Result.class package org.apache.hadoop.hbase.client
Result.getStats ( ) : ClientProtos.RegionLoadStats 1

org/apache/hadoop/hbase/client/Result.getStats:()Lorg/apache/hadoop/hbase/protobuf/generated/ClientProtos$RegionLoadStats;

ChangeResult
Return value type has been changed from org.apache.hadoop.hbase.protobuf.generated.ClientProtos.RegionLoadStats to RegionLoadStats.This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.

REST changes:

hbase-rest-1.0.0.jar, Client.class package org.apache.hadoop.hbase.rest.client

Client.getHttpClient ( ) : HttpClient 1

org/apache/hadoop/hbase/rest/client/Client.getHttpClient:()Lorg/apache/commons/httpclient/HttpClient

ChangeResult
Return value type has been changed from org.apache.commons.httpclient.HttpClient to org.apache.http.client.HttpClient.This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.

hbase-rest-1.0.0.jar, Response.class package org.apache.hadoop.hbase.rest.client

Response.getHeaders ( ) : Header[ ] 1

org/apache/hadoop/hbase/rest/client/Response.getHeaders:()[\Lorg/apache/commons/httpclient/Header;

ChangeResult
Return value type has been changed from org.apache.commons.httpclient.Header[] to org.apache.http.Header[].This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.

PrettyPrinter changes:

hbase-server-1.0.0.jar, HFilePrettyPrinter.class package org.apache.hadoop.hbase.io.hfile

HFilePrettyPrinter.processFile ( Path file ) : void 1

org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.processFile:(Lorg/apache/hadoop/fs/Path;)V

ChangeResult
Return value type has been changed from void to int.This method has been removed because the return type is part of the method signature. A client program may be interrupted by NoSuchMethodError exception.

AccessControlClient changes:

HBASE-13171 Change AccessControlClient methods to accept connection object to reduce setup time. Parameters have been changed in the following methods:

  • hbase-client-1.2.7-SNAPSHOT.jar, AccessControlClient.class package org.apache.hadoop.hbase.security.access AccessControlClient.getUserPermissions ( Configuration conf, String tableRegex ) [static] : List<UserPermission> *DEPRECATED* org/apache/hadoop/hbase/security/access/AccessControlClient.getUserPermissions:(Lorg/apache/hadoop/conf/Configuration;Ljava/lang/String;)Ljava/util/List;

  • AccessControlClient.grant ( Configuration conf, String namespace, String userName, Permission.Action... actions )[static] : void *DEPRECATED* org/apache/hadoop/hbase/security/access/AccessControlClient.grant:(Lorg/apache/hadoop/conf/Configuration;Ljava/lang/String;Ljava/lang/String;[\Lorg/apache/hadoop/hbase/security/access/Permission$Action;)V

  • AccessControlClient.grant ( Configuration conf, String userName, Permission.Action... actions ) [static] : void *DEPRECATED* org/apache/hadoop/hbase/security/access/AccessControlClient.grant:(Lorg/apache/hadoop/conf/Configuration;Ljava/lang/String;[\Lorg/apache/hadoop/hbase/security/access/Permission$Action;)V

  • AccessControlClient.grant ( Configuration conf, TableName tableName, String userName, byte[ ] family, byte[ ] qual,Permission.Action... actions ) [static] : void *DEPRECATED* org/apache/hadoop/hbase/security/access/AccessControlClient.grant:(Lorg/apache/hadoop/conf/Configuration;Lorg/apache/hadoop/hbase/TableName;Ljava/lang/String;[B[B[\Lorg/apache/hadoop/hbase/security/access/Permission$Action;)V

  • AccessControlClient.isAccessControllerRunning ( Configuration conf ) [static] : boolean *DEPRECATED* org/apache/hadoop/hbase/security/access/AccessControlClient.isAccessControllerRunning:(Lorg/apache/hadoop/conf/Configuration;)Z

  • AccessControlClient.revoke ( Configuration conf, String namespace, String userName, Permission.Action... actions )[static] : void *DEPRECATED* org/apache/hadoop/hbase/security/access/AccessControlClient.revoke:(Lorg/apache/hadoop/conf/Configuration;Ljava/lang/String;Ljava/lang/String;[\Lorg/apache/hadoop/hbase/security/access/Permission$Action;)V

  • AccessControlClient.revoke ( Configuration conf, String userName, Permission.Action... actions ) [static] : void *DEPRECATED* org/apache/hadoop/hbase/security/access/AccessControlClient.revoke:(Lorg/apache/hadoop/conf/Configuration;Ljava/lang/String;[\Lorg/apache/hadoop/hbase/security/access/Permission$Action;)V

  • AccessControlClient.revoke ( Configuration conf, TableName tableName, String username, byte[ ] family, byte[ ] qualifier,Permission.Action... actions ) [static] : void *DEPRECATED* org/apache/hadoop/hbase/security/access/AccessControlClient.revoke:(Lorg/apache/hadoop/conf/Configuration;Lorg/apache/hadoop/hbase/TableName;Ljava/lang/String;[B[B[\Lorg/apache/hadoop/hbase/security/access/Permission$Action;)V

  • HBASE-18731: [compat 1-2] Mark protected methods of QuotaSettings that touch Protobuf internals as IA.Private

Edit on GitHub

On this page

HBase 2.0 Incompatible Changes
List of Major Changes for HBase 2.0
Coprocessor API changes
interface CoprocessorEnvironment changes (2)
class CoprocessorRpcChannel (1)
Class CoprocessorHost<E>
MasterObserver
interface MasterObserver (14)
RegionObserver
interface RegionObserver (13)
WALObserver
interface WALObserver
Miscellaneous
OnlineRegions.getFromOnlineRegions ( String p1 ) [abstract] : HRegion
RegionCoprocessorEnvironment.getRegion ( ) [abstract] : HRegion
RegionCoprocessorHost.postAppend ( Append append, Result result ) : void
RegionCoprocessorHost.preStoreFileReaderOpen ( FileSystem fs, Path p, FSDataInputStreamWrapper in, long size,CacheConfig cacheConf, Reference r ) : StoreFile.Reader
IPC
Scheduler changes:
class RpcScheduler (1)
RpcScheduler.dispatch ( CallRunner p1 ) [abstract] : void 1
interface PriorityFunction (2)
Server API changes:
class RpcServer (12)
Replication and WAL changes:
classWALKey (8)
WALEdit.getCompaction ( Cell kv ) [static] : WALProtos.CompactionDescriptor (1)
WALEdit.getFlushDescriptor ( Cell cell ) [static] : WALProtos.FlushDescriptor (1)
WALEdit.getRegionEventDescriptor ( Cell cell ) [static] : WALProtos.RegionEventDescriptor (1)
WALKey.getBuilder ( WALCellCodec.ByteStringCompressor compressor ) : WALProtos.WALKey.Builder 1
Deprecated APIs or coprocessor:
Admin Interface API changes:
interface Admin (9)
Admin.createTableAsync ( HTableDescriptor p1, byte[ ][ ] p2 ) [abstract] : void 1
Admin.disableTableAsync ( TableName p1 ) [abstract] : void 1
Admin.enableTableAsync ( TableName p1 ) [abstract] : void 1
Admin.getCompactionState ( TableName p1 ) [abstract] : AdminProtos.GetRegionInfoResponse.CompactionState 1
Admin.getCompactionStateForRegion ( byte[ ] p1 ) [abstract] : AdminProtos.GetRegionInfoResponse.CompactionState 1
HTableDescriptor and HColumnDescriptor changes
class HColumnDescriptor (1)
class HTableDescriptor (3)
HTableDescriptor.getColumnFamilies ( ) : HColumnDescriptor[ ] (1)
class HColumnDescriptor (1)
HTableDescriptor.getCoprocessors ( ) : List<String> (1)
HTableWrapper changes:
HTableWrapper.createWrapper ( List<HTableInterface> openTables, TableName tableName, CoprocessorHost.Environment env, ExecutorService pool ) [static] : HTableInterface 1
interface Table (4)
Deprecated buffer methods in Table (in 1.0.1) and removed in 2.0.0
class OperationConflictException (1)
class class LockTimeoutException (1)
Filter API changes:
class Filter (2)
class RegionLoad (1)
interface AccessControlConstants (3)
ServerLoad returns long instead of int 1
ServerLoad.getNumberOfRequests ( ) : int 1
ServerLoad.getReadRequestsCount ( ) : int 1
ServerLoad.getTotalNumberOfRequests ( ) : int 1
ServerLoad.getWriteRequestsCount ( ) : int 1
class HConstants (6)
interface Cell 5
Region scanner changes:
interface RegionScanner (1)
StoreFile changes:
class StoreFile (1)
Mapreduce changes:
ClusterStatus changes:
ClusterStatus.getRegionsInTransition ( ) : Map<String,RegionState> 1
Purge of PBs from API
HBaseSnapshotException.getSnapshotDescription ( ) : HBaseProtos.SnapshotDescription 1
Result.getStats ( ) : ClientProtos.RegionLoadStats 1
REST changes:
Client.getHttpClient ( ) : HttpClient 1
Response.getHeaders ( ) : Header[ ] 1
PrettyPrinter changes:
HFilePrettyPrinter.processFile ( Path file ) : void 1
AccessControlClient changes: