From dafaa06a94b2c94a77bd1abb7cbd2c6c80674c79 Mon Sep 17 00:00:00 2001 From: Thiriguna Bharat Rao Date: Tue, 17 Apr 2018 21:46:52 +0530 Subject: [PATCH 1/2] Added a new appendix section for hbase incompatibilities --- .../appendix_hbase_incompatibilities.adoc | 692 +++++++++++++++++++++ src/main/asciidoc/book.adoc | 1 + 2 files changed, 693 insertions(+) create mode 100644 src/main/asciidoc/_chapters/appendix_hbase_incompatibilities.adoc diff --git a/src/main/asciidoc/_chapters/appendix_hbase_incompatibilities.adoc b/src/main/asciidoc/_chapters/appendix_hbase_incompatibilities.adoc new file mode 100644 index 0000000000..ad12b02e3a --- /dev/null +++ b/src/main/asciidoc/_chapters/appendix_hbase_incompatibilities.adoc @@ -0,0 +1,692 @@ +//// +/** + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +//// + +[appendix] +== HBASE Incompatibilities +:doctype: book +:numbered: +:toc: left +:icons: font +:experimental: +:toc: left +:source-language: java + +This appendix describes the incompatibility changes for different versions of HBase. +[[HBase 2.0 Incompatibility Changes]] +[[General information]] +=== General information + +* You can perform a rolling upgrade from HBase 1.2 to HBase 2.0 without any downtime on a secured cluster. If you are on 1.x has to first upgrade (rolling upgrade supported) to latest version in 1.x and then to 2.0. +* If you are an administrator, you cannot manage a 2.0 cluster with 1.x client version. +* HBase replication from 2.0 to 1.x and 1.x to 2.0 works as expected without any interruption. +* Lot of changes to InterfaceAudience and Private classes and many of them are removed in HBase 2.0. + +[[List of Major Changes]] +====List of Major Changes +* HBASE-1912- HBCK is a 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]] +==== 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 (2) + +==== [−] interface CoprocessorEnvironment changes (2) + +[cols="1,1", frame="all"] +|=== +| Change | Result +| 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) +[cols="1,1", frame="all"] +|=== +| Change | Result +| 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 +Classes that were Audience Private but were removed. +[cols="1,1", frame="all"] +|=== +| Change | Result +| Type of field coprocessors has been changed from java.util.SortedSet to org.apache.hadoop.hbase.util.SortedList.| A client program may be interrupted by NoSuchFieldError exception. +|=== + + +==== MasterObserver +HBase 2.0 introduces following changes to the MasterObserver interface. + +====[−] interface MasterObserver (14) +[cols="1,1", frame="all"] +|=== +| Change | Result +| Abstract method voidpostCloneSnapshot ( ObserverContext, HBaseProtos.SnapshotDescription, HTableDescriptor ) has been removed from this interface.| A client program may be interrupted by NoSuchMethodError exception. +| Abstract method voidpostCreateTable ( ObserverContext, HTableDescriptor, HRegionInfo[ ] ) has been removed from this interface.| A client program may be interrupted by NoSuchMethodErrorexception. +| Abstract method voidpostDeleteSnapshot (ObserverContext, HBaseProtos.SnapshotDescription ) has been removed from this interface.| A client program may be interrupted by NoSuchMethodErrorexception. +| Abstract method voidpostGetTableDescriptors ( ObserverContext, List ) has been removed from this interface.| A client program may be interrupted by NoSuchMethodErrorexception. +| Abstract method voidpostModifyTable ( ObserverContext, TableName, HTableDescriptor ) has been removed from this interface.| A client program may be interrupted by NoSuchMethodErrorexception. +| Abstract method voidpostRestoreSnapshot ( ObserverContext, HBaseProtos.SnapshotDescription, HTableDescriptor ) has been removed from this interface.| A client program may be interrupted by NoSuchMethodErrorexception. +| Abstract method voidpostSnapshot ( ObserverContext, HBaseProtos.SnapshotDescription, HTableDescriptor ) has been removed from this interface.| A client program may be interrupted by NoSuchMethodErrorexception. +| Abstract method voidpreCloneSnapshot ( ObserverContext, HBaseProtos.SnapshotDescription, HTableDescriptor ) has been removed from this interface.| A client program may be interrupted by NoSuchMethodErrorexception. +| Abstract method voidpreCreateTable ( ObserverContext, HTableDescriptor, HRegionInfo[ ] ) has been removed from this interface.| A client program may be interrupted by NoSuchMethodErrorexception. +| Abstract method voidpreDeleteSnapshot ( ObserverContext, HBaseProtos.SnapshotDescription ) has been removed from this interface.| A client program may be interrupted by NoSuchMethodErrorexception. +| Abstract method voidpreGetTableDescriptors ( ObserverContext, List, List ) has been removed from this interface.| A client program may be interrupted by NoSuchMethodErrorexception. +| Abstract method voidpreModifyTable ( ObserverContext, TableName, HTableDescriptor ) has been removed from this interface.| A client program may be interrupted by NoSuchMethodErrorexception. +| Abstract method voidpreRestoreSnapshot ( ObserverContext, HBaseProtos.SnapshotDescription, HTableDescriptor ) has been removed from this interface.| A client program may be interrupted by NoSuchMethodErrorexception. +| Abstract method voidpreSnapshot ( ObserverContext, 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) +[cols="1,1", frame="all"] +|=== +| Change | Result +| Abstract method voidpostCloseRegionOperation ( ObserverContext, HRegion.Operation ) has been removed from this interface.| A client program may be interrupted by NoSuchMethodError exception. +| Abstract method voidpostCompactSelection ( ObserverContext, Store, ImmutableList ) has been removed from this interface.| A client program may be interrupted by NoSuchMethodError exception. +| Abstract method voidpostCompactSelection ( ObserverContext, Store, ImmutableList, CompactionRequest ) has been removed from this interface.| A client program may be interrupted by NoSuchMethodError exception. +| Abstract method voidpostGetClosestRowBefore ( ObserverContext, byte[ ], byte[ ], Result ) has been removed from this interface.| A client program may be interrupted by NoSuchMethodError exception. +| Abstract method DeleteTrackerpostInstantiateDeleteTracker ( ObserverContext, DeleteTracker ) has been removed from this interface.| A client program may be interrupted by NoSuchMethodError exception. +| Abstract method voidpostSplit ( ObserverContext, HRegion, HRegion ) has been removed from this interface.| A client program may be interrupted by NoSuchMethodError exception. +| Abstract method voidpostStartRegionOperation ( ObserverContext, HRegion.Operation ) has been removed from this interface.| A client program may be interrupted by NoSuchMethodError exception. +| Abstract method StoreFile.ReaderpostStoreFileReaderOpen ( ObserverContext, 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, HRegionInfo, HLogKey, WALEdit ) has been removed from this interface.| A client program may be interrupted by NoSuchMethodError exception. +| Abstract method InternalScannerpreFlushScannerOpen ( ObserverContext, Store, KeyValueScanner, InternalScanner ) has been removed from this interface.| A client program may be interrupted by NoSuchMethodError exception. +| Abstract method voidpreGetClosestRowBefore ( ObserverContext, byte[ ], byte[ ], Result ) has been removed from this interface.| A client program may be interrupted by NoSuchMethodError exception. +| Abstract method StoreFile.ReaderpreStoreFileReaderOpen ( ObserverContext, 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, 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 +[cols="1,1", frame="all"] +|=== +| Change | Result +| Abstract method voidpostWALWrite ( ObserverContext, HRegionInfo, HLogKey, WALEdit ) has been removed from this interface.| A client program may be interrupted by NoSuchMethodError exception. +| Abstract method booleanpreWALWrite ( ObserverContext, 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 +[cols="1,1", frame="all"] +====[−]OnlineRegions.getFromOnlineRegions ( String p1 ) [abstract] : HRegion +org/apache/hadoop/hbase/regionserver/OnlineRegions.getFromOnlineRegions:(Ljava/lang/String;)Lorg/apache/hadoop/hbase/regionserver/HRegion; +[cols="1,1", frame="all"] +|=== +| Change | Result +| 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; +[cols="1,1", frame="all"] +|=== +| Change | Result +| 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 +[cols="1,1", frame="all"] +|=== +| Change | Result +| 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; +[cols="1,1", frame="all"] +|=== +| Change | Result +| 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) +[cols="1,1", frame="all"] +|=== +| Change | Result +| 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 +[cols="1,1", frame="all"] +|=== +| Change | Result +| 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. +|=== + +2. Following abstract methods have been removed: + +====[−]interface PriorityFunction (2) +[cols="1,1", frame="all"] +|=== +| Change | Result +| 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) +[cols="1,1", frame="all"] +|=== +| Change | Result +| Type of field CurCall has been changed from java.lang.ThreadLocal to java.lang.ThreadLocal.| 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 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: +[cols="1,1", frame="all"] +|=== +| Change | Result +| Abstract method Paircall ( 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) +[cols="1,1", frame="all"] +|=== +| Change | Result +| 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: +[cols="1,1", frame="all"] +|=== +| Change | Result +| 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; +[cols="1,1", frame="all"] +|=== +| Change | Result +| 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; +[cols="1,1", frame="all"] +|=== +| Change | Result +| 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; +[cols="1,1", frame="all"] +|=== +| Change | Result +| 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; +[cols="1,1", frame="all"] +|=== +| Change | Result +| 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) +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) +[cols="1,1", frame="all"] +|=== +| Change | Result +| 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 +[cols="1,1", frame="all"] +|=== +| Change | Result +| Return value type has been changed from void to java.util.concurrent.Future.| 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 +[cols="1,1", frame="all"] +|=== +| Change | Result +| Return value type has been changed from void to java.util.concurrent.Future.| 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 +[cols="1,1", frame="all"] +|=== +| Change | Result +| Return value type has been changed from void to java.util.concurrent.Future.| 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; +[cols="1,1", frame="all"] +|=== +| Change | Result +| 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; +[cols="1,1", frame="all"] +|=== +| Change | Result +| 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) +[cols="1,1", frame="all"] +|=== +| Change | Result +| Removed super-interface org.apache.hadoop.io.WritableComparable.| A client program may be interrupted by NoSuchMethodError exception. +|=== + +HColumnDescriptor in 1.0.0 +{code} +@InterfaceAudience.Public +@InterfaceStability.Evolving +public class HColumnDescriptor implements WritableComparable { +{code} + +HColumnDescriptor in 2.0 +{code} +@InterfaceAudience.Public +@Deprecated // remove it in 3.0 +public class HColumnDescriptor implements ColumnFamilyDescriptor, Comparable { +{code} + +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) +[cols="1,1", frame="all"] +|=== +| Change | Result +| Removed super-interface org.apache.hadoop.io.WritableComparable.| 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) +[cols="1,1", frame="all"] +|=== +| Change | Result +| 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 (1) +org/apache/hadoop/hbase/HTableDescriptor.getCoprocessors:()Ljava/util/List; +[cols="1,1", frame="all"] +|=== +| Change | Result +| Return value type has been changed from java.util.List 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 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; +[cols="1,1", frame="all"] +|=== +| Change | Result +| 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) +[cols="1,1", frame="all"] +|=== +| Change | Result +| 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 )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) +[cols="1,1", frame="all"] +|=== +| Change | Result +| This class has been removed.| A client program may be interrupted by NoClassDefFoundErrorexception. +|=== + +==== class class LockTimeoutException (1) +[cols="1,1", frame="all"] +|=== +| Change | Result +| 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) +|=== +| Change | Result +| 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) +[cols="1,1", frame="all"] +|=== +| Change | Result +| 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) +[cols="1,1", frame="all"] +|=== +| Change | Result +| 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 +[cols="1,1", frame="all"] +|=== +| Change | Result +| 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 +[cols="1,1", frame="all"] +|=== +| Change | Result +| 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 +[cols="1,1", frame="all"] +|=== +| Change | Result +| 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 +[cols="1,1", frame="all"] +|=== +| Change | Result +| 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) +[cols="1,1", frame="all"] +|=== +| Change | Result +| 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 +[cols="1,1", frame="all"] +|=== +| Change | Result +| 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) +[cols="1,1", frame="all"] +|=== +| Change | Result +| Abstract method boolean nextRaw ( List, int ) has been removed from this interface.| A client program may be interrupted by NoSuchMethodError exception. +|=== + +====StoreFile changes: +====[−] class StoreFile (1) +[cols="1,1", frame="all"] +|=== +| Change | Result +| 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 1 +org/apache/hadoop/hbase/ClusterStatus.getRegionsInTransition:()Ljava/util/Map; +[cols="1,1", frame="all"] +|=== +| Change | Result +|Return value type has been changed from java.util.Map to java.util.List.| 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; +[cols="1,1", frame="all"] +|=== +| Change | Result +| 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; +[cols="1,1", frame="all"] +|=== +| Change | Result +| 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 +[cols="1,1", frame="all"] +|=== +| Change | Result +| 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; +[cols="1,1", frame="all"] +|=== +| Change | Result +| 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 +[cols="1,1", frame="all"] +|=== +| Change | Result +| 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 *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 + + + + diff --git a/src/main/asciidoc/book.adoc b/src/main/asciidoc/book.adoc index c05eed36ce..0c26856bfd 100644 --- a/src/main/asciidoc/book.adoc +++ b/src/main/asciidoc/book.adoc @@ -95,3 +95,4 @@ include::_chapters/asf.adoc[] include::_chapters/orca.adoc[] include::_chapters/tracing.adoc[] include::_chapters/rpc.adoc[] +include::_chapters/appendix_hbase_incompatibilities.adoc[] -- 2.14.2 From d194b76f1296d8d64ff3ec6066c898709208a423 Mon Sep 17 00:00:00 2001 From: Thiriguna Bharat Rao Date: Tue, 17 Apr 2018 21:57:11 +0530 Subject: [PATCH 2/2] fix the whitespace errors --- src/main/asciidoc/_chapters/appendix_hbase_incompatibilities.adoc | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/main/asciidoc/_chapters/appendix_hbase_incompatibilities.adoc b/src/main/asciidoc/_chapters/appendix_hbase_incompatibilities.adoc index ad12b02e3a..dabd89aa5c 100644 --- a/src/main/asciidoc/_chapters/appendix_hbase_incompatibilities.adoc +++ b/src/main/asciidoc/_chapters/appendix_hbase_incompatibilities.adoc @@ -686,7 +686,3 @@ org/apache/hadoop/hbase/security/access/AccessControlClient.revoke:(Lorg/apache/ * 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 - - - - -- 2.14.2