HBASE-20831 Copy master doc into branch-2.1 and edit to make it suit 2.1.0

Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/61d70604
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/61d70604
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/61d70604

Branch: refs/heads/branch-2
Commit: 61d706044e674866f96aee8d5cf74d0e72dddfc1
Parents: 4653d4a
Author: zhangduo <[email protected]>
Authored: Wed Jul 4 21:40:52 2018 +0800
Committer: zhangduo <[email protected]>
Committed: Thu Jul 5 15:01:43 2018 +0800

----------------------------------------------------------------------
 pom.xml                                         |  14 +-
 src/main/asciidoc/_chapters/amv2.adoc           | 173 ++++
 .../asciidoc/_chapters/appendix_acl_matrix.adoc |   1 +
 .../appendix_contributing_to_documentation.adoc |   6 +-
 .../appendix_hbase_incompatibilities.adoc       | 714 +++++++++++++++
 .../_chapters/appendix_hfile_format.adoc        |   2 +-
 src/main/asciidoc/_chapters/architecture.adoc   | 253 +++--
 src/main/asciidoc/_chapters/backup_restore.adoc | 912 -------------------
 src/main/asciidoc/_chapters/community.adoc      |  54 +-
 src/main/asciidoc/_chapters/compression.adoc    |  22 +-
 src/main/asciidoc/_chapters/configuration.adoc  |  60 +-
 src/main/asciidoc/_chapters/datamodel.adoc      |  35 +
 src/main/asciidoc/_chapters/developer.adoc      | 127 ++-
 src/main/asciidoc/_chapters/external_apis.adoc  | 109 +--
 .../asciidoc/_chapters/getting_started.adoc     |  57 +-
 src/main/asciidoc/_chapters/hbase-default.adoc  |   2 +-
 src/main/asciidoc/_chapters/hbase_mob.adoc      |   4 -
 src/main/asciidoc/_chapters/images              |   2 +-
 src/main/asciidoc/_chapters/ops_mgt.adoc        | 280 +++++-
 src/main/asciidoc/_chapters/performance.adoc    |   2 -
 src/main/asciidoc/_chapters/pv2.adoc            | 163 ++++
 src/main/asciidoc/_chapters/schema_design.adoc  |  33 +-
 src/main/asciidoc/_chapters/security.adoc       |  13 +-
 src/main/asciidoc/_chapters/shell.adoc          |   8 +-
 src/main/asciidoc/_chapters/tracing.adoc        |   6 +-
 .../asciidoc/_chapters/troubleshooting.adoc     | 131 ++-
 src/main/asciidoc/_chapters/unit_testing.adoc   |   2 -
 src/main/asciidoc/_chapters/upgrading.adoc      | 405 ++++++++
 src/main/asciidoc/book.adoc                     |   4 +-
 src/main/asciidoc/images                        |   2 +-
 src/main/site/asciidoc/acid-semantics.adoc      | 118 ---
 src/main/site/asciidoc/bulk-loads.adoc          |  23 -
 src/main/site/asciidoc/cygwin.adoc              | 197 ----
 src/main/site/asciidoc/export_control.adoc      |  44 -
 src/main/site/asciidoc/index.adoc               |  75 --
 src/main/site/asciidoc/metrics.adoc             | 102 ---
 src/main/site/asciidoc/old_news.adoc            | 121 ---
 src/main/site/asciidoc/pseudo-distributed.adoc  |  23 -
 src/main/site/asciidoc/replication.adoc         |  22 -
 src/main/site/asciidoc/resources.adoc           |  27 -
 src/main/site/asciidoc/sponsors.adoc            |  36 -
 .../site/custom/project-info-report.properties  | 303 ------
 src/main/site/resources/.htaccess               |   8 -
 src/main/site/resources/book/.empty             |   1 -
 src/main/site/resources/css/site.css            | 118 ---
 src/main/site/resources/doap_Hbase.rdf          |  57 --
 src/main/site/resources/images/architecture.gif | Bin 15461 -> 0 bytes
 .../resources/images/backup-app-components.png  | Bin 24366 -> 0 bytes
 .../resources/images/backup-cloud-appliance.png | Bin 30114 -> 0 bytes
 .../images/backup-dedicated-cluster.png         | Bin 24950 -> 0 bytes
 .../resources/images/backup-intra-cluster.png   | Bin 19348 -> 0 bytes
 src/main/site/resources/images/bc_basic.png     | Bin 239294 -> 0 bytes
 src/main/site/resources/images/bc_config.png    | Bin 124066 -> 0 bytes
 src/main/site/resources/images/bc_l1.png        | Bin 91603 -> 0 bytes
 .../site/resources/images/bc_l2_buckets.png     | Bin 143801 -> 0 bytes
 src/main/site/resources/images/bc_stats.png     | Bin 111566 -> 0 bytes
 src/main/site/resources/images/big_h_logo.png   | Bin 2286 -> 0 bytes
 src/main/site/resources/images/big_h_logo.svg   | 139 ---
 .../images/data_block_diff_encoding.png         | Bin 54479 -> 0 bytes
 .../resources/images/data_block_no_encoding.png | Bin 46836 -> 0 bytes
 .../images/data_block_prefix_encoding.png       | Bin 35271 -> 0 bytes
 src/main/site/resources/images/favicon.ico      | Bin 1150 -> 0 bytes
 src/main/site/resources/images/hadoop-logo.jpg  | Bin 9443 -> 0 bytes
 src/main/site/resources/images/hbase_logo.png   | Bin 2997 -> 0 bytes
 src/main/site/resources/images/hbase_logo.svg   |  78 --
 .../resources/images/hbase_logo_with_orca.png   | Bin 11618 -> 0 bytes
 .../resources/images/hbase_logo_with_orca.xcf   | Bin 84265 -> 0 bytes
 .../images/hbase_logo_with_orca_large.png       | Bin 21196 -> 0 bytes
 .../images/hbase_replication_diagram.jpg        | Bin 52298 -> 0 bytes
 .../resources/images/hbasecon2015.30percent.png | Bin 8684 -> 0 bytes
 .../images/hbasecon2016-stack-logo.jpg          | Bin 32105 -> 0 bytes
 .../resources/images/hbasecon2016-stacked.png   | Bin 24924 -> 0 bytes
 src/main/site/resources/images/hbasecon2017.png | Bin 3982 -> 0 bytes
 .../site/resources/images/hbaseconasia2017.png  | Bin 23656 -> 0 bytes
 src/main/site/resources/images/hfile.png        | Bin 33661 -> 0 bytes
 src/main/site/resources/images/hfilev2.png      | Bin 57858 -> 0 bytes
 .../resources/images/jumping-orca_rotated.png   | Bin 52812 -> 0 bytes
 .../resources/images/jumping-orca_rotated.xcf   | Bin 77560 -> 0 bytes
 .../images/jumping-orca_rotated_12percent.png   | Bin 2401 -> 0 bytes
 .../images/jumping-orca_rotated_25percent.png   | Bin 4780 -> 0 bytes
 .../images/jumping-orca_transparent_rotated.xcf | Bin 135399 -> 0 bytes
 .../resources/images/region_split_process.png   | Bin 338255 -> 0 bytes
 .../site/resources/images/region_states.png     | Bin 99146 -> 0 bytes
 .../resources/images/replication_overview.png   | Bin 207537 -> 0 bytes
 .../resources/images/timeline_consistency.png   | Bin 88301 -> 0 bytes
 .../1.5-HBASE/maven-fluido-skin-1.5-HBASE.jar   | Bin 344936 -> 0 bytes
 .../1.5-HBASE/maven-fluido-skin-1.5-HBASE.pom   | 718 ---------------
 .../maven-fluido-skin/maven-metadata-local.xml  |  12 -
 src/main/site/site.xml                          | 131 ---
 src/main/site/xdoc/acid-semantics.xml           | 235 -----
 src/main/site/xdoc/bulk-loads.xml               |  34 -
 src/main/site/xdoc/coc.xml                      |  92 --
 src/main/site/xdoc/cygwin.xml                   | 245 -----
 src/main/site/xdoc/export_control.xml           |  59 --
 src/main/site/xdoc/index.xml                    | 109 ---
 src/main/site/xdoc/metrics.xml                  | 150 ---
 src/main/site/xdoc/old_news.xml                 |  92 --
 src/main/site/xdoc/poweredbyhbase.xml           | 398 --------
 src/main/site/xdoc/pseudo-distributed.xml       |  42 -
 src/main/site/xdoc/replication.xml              |  35 -
 src/main/site/xdoc/resources.xml                |  45 -
 src/main/site/xdoc/sponsors.xml                 |  50 -
 src/main/site/xdoc/supportingprojects.xml       | 161 ----
 src/site/asciidoc/acid-semantics.adoc           | 118 +++
 src/site/asciidoc/bulk-loads.adoc               |  22 +
 src/site/asciidoc/cygwin.adoc                   | 196 ++++
 src/site/asciidoc/export_control.adoc           |  44 +
 src/site/asciidoc/index.adoc                    |  75 ++
 src/site/asciidoc/metrics.adoc                  | 101 ++
 src/site/asciidoc/old_news.adoc                 | 120 +++
 src/site/asciidoc/pseudo-distributed.adoc       |  22 +
 src/site/asciidoc/replication.adoc              |  22 +
 src/site/asciidoc/resources.adoc                |  26 +
 src/site/asciidoc/sponsors.adoc                 |  35 +
 src/site/custom/project-info-report.properties  | 303 ++++++
 src/site/resources/.htaccess                    |   8 +
 src/site/resources/book/.empty                  |   1 +
 src/site/resources/css/site.css                 | 118 +++
 src/site/resources/doap_Hbase.rdf               |  57 ++
 src/site/resources/images/architecture.gif      | Bin 0 -> 15461 bytes
 .../resources/images/backup-app-components.png  | Bin 0 -> 24366 bytes
 .../resources/images/backup-cloud-appliance.png | Bin 0 -> 30114 bytes
 .../images/backup-dedicated-cluster.png         | Bin 0 -> 24950 bytes
 .../resources/images/backup-intra-cluster.png   | Bin 0 -> 19348 bytes
 src/site/resources/images/bc_basic.png          | Bin 0 -> 239294 bytes
 src/site/resources/images/bc_config.png         | Bin 0 -> 124066 bytes
 src/site/resources/images/bc_l1.png             | Bin 0 -> 91603 bytes
 src/site/resources/images/bc_l2_buckets.png     | Bin 0 -> 143801 bytes
 src/site/resources/images/bc_stats.png          | Bin 0 -> 111566 bytes
 src/site/resources/images/big_h_logo.png        | Bin 0 -> 2286 bytes
 src/site/resources/images/big_h_logo.svg        | 139 +++
 .../images/data_block_diff_encoding.png         | Bin 0 -> 54479 bytes
 .../resources/images/data_block_no_encoding.png | Bin 0 -> 46836 bytes
 .../images/data_block_prefix_encoding.png       | Bin 0 -> 35271 bytes
 src/site/resources/images/favicon.ico           | Bin 0 -> 1150 bytes
 src/site/resources/images/hadoop-logo.jpg       | Bin 0 -> 9443 bytes
 src/site/resources/images/hbase_logo.png        | Bin 0 -> 2997 bytes
 src/site/resources/images/hbase_logo.svg        |  78 ++
 .../resources/images/hbase_logo_with_orca.png   | Bin 0 -> 11618 bytes
 .../resources/images/hbase_logo_with_orca.xcf   | Bin 0 -> 84265 bytes
 .../images/hbase_logo_with_orca_large.png       | Bin 0 -> 21196 bytes
 .../images/hbase_replication_diagram.jpg        | Bin 0 -> 52298 bytes
 .../resources/images/hbasecon2015.30percent.png | Bin 0 -> 8684 bytes
 .../images/hbasecon2016-stack-logo.jpg          | Bin 0 -> 32105 bytes
 .../resources/images/hbasecon2016-stacked.png   | Bin 0 -> 24924 bytes
 src/site/resources/images/hbasecon2017.png      | Bin 0 -> 3982 bytes
 src/site/resources/images/hbaseconasia2017.png  | Bin 0 -> 23656 bytes
 src/site/resources/images/hfile.png             | Bin 0 -> 33661 bytes
 src/site/resources/images/hfilev2.png           | Bin 0 -> 57858 bytes
 .../resources/images/jumping-orca_rotated.png   | Bin 0 -> 52812 bytes
 .../resources/images/jumping-orca_rotated.xcf   | Bin 0 -> 77560 bytes
 .../images/jumping-orca_rotated_12percent.png   | Bin 0 -> 2401 bytes
 .../images/jumping-orca_rotated_25percent.png   | Bin 0 -> 4780 bytes
 .../images/jumping-orca_transparent_rotated.xcf | Bin 0 -> 135399 bytes
 .../resources/images/region_split_process.png   | Bin 0 -> 338255 bytes
 src/site/resources/images/region_states.png     | Bin 0 -> 99146 bytes
 .../resources/images/replication_overview.png   | Bin 0 -> 207537 bytes
 .../resources/images/timeline_consistency.png   | Bin 0 -> 88301 bytes
 .../1.5-HBASE/maven-fluido-skin-1.5-HBASE.jar   | Bin 0 -> 344936 bytes
 .../1.5-HBASE/maven-fluido-skin-1.5-HBASE.pom   | 718 +++++++++++++++
 .../maven-fluido-skin/maven-metadata-local.xml  |  12 +
 src/site/site.xml                               | 131 +++
 src/site/xdoc/acid-semantics.xml                | 235 +++++
 src/site/xdoc/bulk-loads.xml                    |  34 +
 src/site/xdoc/coc.xml                           |  92 ++
 src/site/xdoc/cygwin.xml                        | 245 +++++
 src/site/xdoc/export_control.xml                |  59 ++
 src/site/xdoc/index.xml                         | 109 +++
 src/site/xdoc/metrics.xml                       | 150 +++
 src/site/xdoc/old_news.xml                      |  92 ++
 src/site/xdoc/poweredbyhbase.xml                | 398 ++++++++
 src/site/xdoc/pseudo-distributed.xml            |  41 +
 src/site/xdoc/replication.xml                   |  35 +
 src/site/xdoc/resources.xml                     |  45 +
 src/site/xdoc/sponsors.xml                      |  50 +
 src/site/xdoc/supportingprojects.xml            | 161 ++++
 176 files changed, 6435 insertions(+), 5353 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/61d70604/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index b0a53c8..4db89bd 100755
--- a/pom.xml
+++ b/pom.xml
@@ -856,7 +856,7 @@
               <exclude>.svn/**</exclude>
               <exclude>**/.settings/**</exclude>
               <exclude>**/patchprocess/**</exclude>
-              <exclude>src/main/site/resources/repo/**</exclude>
+              <exclude>src/site/resources/repo/**</exclude>
               <exclude>**/dependency-reduced-pom.xml</exclude>
               <exclude>**/rat.txt</exclude>
               <!-- exclude the shaded protobuf files -->
@@ -1136,8 +1136,8 @@
           </dependency>
         </dependencies>
         <configuration>
-          <siteDirectory>${basedir}/src/main/site</siteDirectory>
-          
<customBundle>${basedir}/src/main/site/custom/project-info-report.properties</customBundle>
+          <siteDirectory>${basedir}/src/site</siteDirectory>
+          
<customBundle>${basedir}/src/site/custom/project-info-report.properties</customBundle>
           <inputEncoding>UTF-8</inputEncoding>
           <outputEncoding>UTF-8</outputEncoding>
         </configuration>
@@ -1217,7 +1217,7 @@
               
<outputDirectory>${project.reporting.outputDirectory}/</outputDirectory>
               <resources>
                 <resource>
-                  <directory>${basedir}/src/main/site/resources/</directory>
+                  <directory>${basedir}/src/site/resources/</directory>
                   <includes>
                     <include>.htaccess</include>
                   </includes>
@@ -1236,7 +1236,7 @@
               
<outputDirectory>${project.reporting.outputDirectory}/</outputDirectory>
               <resources>
                 <resource>
-                  <directory>${basedir}/src/main/site/resources/</directory>
+                  <directory>${basedir}/src/site/resources/</directory>
                   <includes>
                     <include>book/**</include>
                   </includes>
@@ -3442,7 +3442,7 @@
             </reports>
           </reportSet>
         </reportSets>
-        <!-- see src/main/site/site.xml for selected reports -->
+        <!-- see src/site/site.xml for selected reports -->
         <configuration>
           <dependencyLocationsEnabled>false</dependencyLocationsEnabled>
         </configuration>
@@ -3677,7 +3677,7 @@
     <repository>
         <id>project.local</id>
         <name>project</name>
-        <url>file:${project.basedir}/src/main/site/resources/repo</url>
+        <url>file:${project.basedir}/src/site/resources/repo</url>
     </repository>
 </repositories>
 </project>

http://git-wip-us.apache.org/repos/asf/hbase/blob/61d70604/src/main/asciidoc/_chapters/amv2.adoc
----------------------------------------------------------------------
diff --git a/src/main/asciidoc/_chapters/amv2.adoc 
b/src/main/asciidoc/_chapters/amv2.adoc
new file mode 100644
index 0000000..49841ce
--- /dev/null
+++ b/src/main/asciidoc/_chapters/amv2.adoc
@@ -0,0 +1,173 @@
+////
+/**
+ *
+ * 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.
+ */
+////
+[[amv2]]
+= AMv2 Description for Devs
+:doctype: book
+:numbered:
+:toc: left
+:icons: font
+:experimental:
+
+The AssignmentManager (AM) in HBase Master manages assignment of Regions over 
a cluster of RegionServers.
+
+The AMv2 project is a redo of Assignment in an attempt at addressing the root 
cause of many of our operational issues in production, namely slow assignment 
and problematic accounting such that Regions are misplaced stuck offline in the 
notorious _Regions-In-Transition (RIT)_ limbo state.
+
+Below are notes for devs on key aspects of AMv2 in no particular order.
+
+== Background
+
+Assignment in HBase 1.x has been problematic in operation. It is not hard to 
see why. Region state is kept at the other end of an RPC in ZooKeeper (Terminal 
states -- i.e. OPEN or CLOSED -- are published to the _hbase:meta_ table). In 
HBase-1.x.x, state has multiple writers with Master and RegionServers all able 
to make state edits concurrently (in _hbase:meta_ table and out on ZooKeeper). 
If clocks are awry or watchers missed, state changes can be skipped or 
overwritten. Locking of HBase Entities -- tables, regions -- is not 
comprehensive so a table operation -- disable/enable -- could clash with a 
region-level operation; a split or merge. Region state is distributed and hard 
to reason about and test. Assignment is slow in operation because each assign 
involves moving remote znodes through transitions. Cluster size tends to top 
out at a couple of hundred thousand regions; beyond this, cluster start/stop 
takes hours and is prone to corruption.
+
+AMv2 (AssignmentManager Version 2) is a refactor 
(https://issues.apache.org/jira/browse/HBASE-14350[HBASE-14350]) of the 
hbase-1.x AssignmentManager putting it up on a 
https://issues.apache.org/jira/browse/HBASE-12439[ProcedureV2 (HBASE-12439)] 
basis. ProcedureV2 (Pv2)__,__ is an awkwardly named system that allows 
describing and running multi-step state machines. It is performant and persists 
all state to a Store which is recoverable post crash. See the companion chapter 
on <<pv2>>, to learn more about the ProcedureV2 system.
+
+In AMv2, all assignment, crash handling, splits and merges are recast as 
Procedures(v2).  ZooKeeper is purged from the mix. As before, the final 
assignment state gets published to _hbase:meta_ for non-Master participants to 
read (all-clients) with intermediate state kept in the local Pv2 WAL-based 
‘store’ but only the active Master, a single-writer, evolves state. The 
Master’s in-memory cluster image is the authority and if disagreement, 
RegionServers are forced to comply. Pv2 adds shared/exclusive locking of all 
core HBase Entities -- namespace, tables, and regions -- to ensure one actor at 
a time access and to prevent operations contending over resources (move/split, 
disable/assign, etc.).
+
+This redo of AM atop of a purposed, performant state machine with all 
operations taking on the common Procedure form with a single state writer only 
moves our AM to a new level of resilience and scale.
+
+== New System
+
+Each Region Assign or Unassign of a Region is now a Procedure. A Move (Region) 
Procedure is a compound of Procedures; it is the running of an Unassign 
Procedure followed by an Assign Procedure. The Move Procedure spawns the Assign 
and Unassign in series and then waits on their completions.
+
+And so on. ServerCrashProcedure spawns the WAL splitting tasks and then the 
reassign of all regions that were hosted on the crashed server as subprocedures.
+
+AMv2 Procedures are run by the Master in a ProcedureExecutor instance. All 
Procedures make use of utility provided by the Pv2 framework.
+
+For example, Procedures persist each state transition to the frameworks’ 
Procedure Store. The default implementation is done as a WAL kept on HDFS. On 
crash, we reopen the Store and rerun all WALs of Procedure transitions to put 
the Assignment State Machine back into the attitude it had just before crash. 
We then continue Procedure execution.
+
+In the new system, the Master is the Authority on all things Assign. Previous 
we were ambiguous; e.g. the RegionServer was in charge of Split operations. 
Master keeps an in-memory image of Region states and servers. If disagreement, 
the Master always prevails; at an extreme it will kill the RegionServer that is 
in disagreement.
+
+A new RegionStateStore class takes care of publishing the terminal Region 
state, whether OPEN or CLOSED, out to the _hbase:meta _table__.__
+
+RegionServers now report their run version on Connection. This version is 
available inside the AM for use running migrating rolling restarts.
+
+== Procedures Detail
+
+=== Assign/Unassign
+
+Assign and Unassign subclass a common RegionTransitionProcedure. There can 
only be one RegionTransitionProcedure per region running at a time since the 
RTP instance takes a lock on the region. The RTP base Procedure has three 
steps; a store the procedure step (REGION_TRANSITION_QUEUE); a dispatch of the 
procedure open or close followed by a suspend waiting on the remote 
regionserver to report successful open or fail (REGION_TRANSITION_DISPATCH) or 
notification that the server fielding the request crashed; and finally 
registration of the successful open/close in hbase:meta 
(REGION_TRANSITION_FINISH).
+
+Here is how the assign of a region 56f985a727afe80a184dac75fbf6860c looks in 
the logs. The assign was provoked by a Server Crash (Process ID 1176 or 
pid=1176 which when it is the parent of a procedure, it is identified as 
ppid=1176). The assign is pid=1179, the second region of the two being assigned 
by this Server Crash.
+
+[source]
+----
+2017-05-23 12:04:24,175 INFO  [ProcExecWrkr-30] procedure2.ProcedureExecutor: 
Initialized subprocedures=[{pid=1178, ppid=1176, 
state=RUNNABLE:REGION_TRANSITION_QUEUE; AssignProcedure 
table=IntegrationTestBigLinkedList, region=bfd57f0b72fd3ca77e9d3c5e3ae48d76, 
target=ve0540.halxg.example.org,16020,1495525111232}, {pid=1179, ppid=1176, 
state=RUNNABLE:REGION_TRANSITION_QUEUE; AssignProcedure 
table=IntegrationTestBigLinkedList, region=56f985a727afe80a184dac75fbf6860c, 
target=ve0540.halxg.example.org,16020,1495525111232}]
+----
+
+Next we start the assign by queuing (‘registering’) the Procedure with the 
framework.
+
+[source]
+----
+2017-05-23 12:04:24,241 INFO  [ProcExecWrkr-30] assignment.AssignProcedure: 
Start pid=1179, ppid=1176, state=RUNNABLE:REGION_TRANSITION_QUEUE; 
AssignProcedure table=IntegrationTestBigLinkedList, 
region=56f985a727afe80a184dac75fbf6860c, 
target=ve0540.halxg.example.org,16020,1495525111232; rit=OFFLINE, 
location=ve0540.halxg.example.org,16020,1495525111232; forceNewPlan=false, 
retain=false
+----
+
+Track the running of Procedures in logs by tracing their process id -- here 
pid=1179.
+
+Next we move to the dispatch phase where we update hbase:meta table setting 
the region state as OPENING on server ve540. We then dispatch an rpc to ve540 
asking it to open the region. Thereafter we suspend the Assign until we get a 
message back from ve540 on whether it has opened the region successfully (or 
not).
+
+[source]
+----
+2017-05-23 12:04:24,494 INFO  [ProcExecWrkr-38] assignment.RegionStateStore: 
pid=1179 updating hbase:meta 
row=IntegrationTestBigLinkedList,H\xE3@\x8D\x964\x9D\xDF\x8F@9\x0F\xC8\xCC\xC2,1495566261066.56f985a727afe80a184dac75fbf6860c.,
 regionState=OPENING, 
regionLocation=ve0540.halxg.example.org,16020,1495525111232
+2017-05-23 12:04:24,498 INFO  [ProcExecWrkr-38] 
assignment.RegionTransitionProcedure: Dispatch pid=1179, ppid=1176, 
state=RUNNABLE:REGION_TRANSITION_DISPATCH; AssignProcedure 
table=IntegrationTestBigLinkedList, region=56f985a727afe80a184dac75fbf6860c, 
target=ve0540.halxg.example.org,16020,1495525111232; rit=OPENING, 
location=ve0540.halxg.example.org,16020,1495525111232
+----
+
+Below we log the incoming report that the region opened successfully on ve540. 
The Procedure is woken up (you can tell it the procedure is running by the name 
of the thread, its a ProcedureExecutor thread, ProcExecWrkr-9).  The woken up 
Procedure updates state in hbase:meta to denote the region as open on ve0540. 
It then reports finished and exits.
+
+[source]
+----
+2017-05-23 12:04:26,643 DEBUG 
[RpcServer.default.FPBQ.Fifo.handler=46,queue=1,port=16000] 
assignment.RegionTransitionProcedure: Received report OPENED seqId=11984985, 
pid=1179, ppid=1176, state=RUNNABLE:REGION_TRANSITION_DISPATCH; AssignProcedure 
table=IntegrationTestBigLinkedList, region=56f985a727afe80a184dac75fbf6860c, 
target=ve0540.halxg.example.org,16020,1495525111232; rit=OPENING, 
location=ve0540.halxg.example.org,16020,1495525111232                           
                                                                                
                                                            2017-05-23 
12:04:26,643 INFO  [ProcExecWrkr-9] assignment.RegionStateStore: pid=1179 
updating hbase:meta 
row=IntegrationTestBigLinkedList,H\xE3@\x8D\x964\x9D\xDF\x8F@9\x0F\xC8\xCC\xC2,1495566261066.56f985a727afe80a184dac75fbf6860c.,
 regionState=OPEN, openSeqNum=11984985, 
regionLocation=ve0540.halxg.example.org,16020,1495525111232
+2017-05-23 12:04:26,836 INFO  [ProcExecWrkr-9] procedure2.ProcedureExecutor: 
Finish suprocedure pid=1179, ppid=1176, state=SUCCESS; AssignProcedure 
table=IntegrationTestBigLinkedList, region=56f985a727afe80a184dac75fbf6860c, 
target=ve0540.halxg.example.org,16020,1495525111232
+----
+Unassign looks similar given it is based on the base 
RegionTransitionProcedure. It has the same state transitions and does basically 
the same steps but with different state name (CLOSING, CLOSED).
+
+Most other procedures are subclasses of a Pv2 StateMachine implementation. We 
have both Table and Region focused StateMachines types.
+
+== UI
+
+Along the top-bar on the Master, you can now find a ‘Procedures&Locks’ tab 
which takes you to a page that is ugly but useful. It dumps currently running 
procedures and framework locks. Look at this when you can’t figure what stuff 
is stuck; it will at least identify problematic procedures (take the pid and 
grep the logs…). Look for ROLLEDBACK or pids that have been RUNNING for a 
long time.
+
+== Logging
+
+Procedures log their process ids as pid= and their parent ids (ppid=) 
everywhere. Work has been done so you can grep the pid and see history of a 
procedure operation.
+
+== Implementation Notes
+
+In this section we note some idiosyncrasies of operation as an attempt at 
saving you some head-scratching.
+
+=== Region Transition RPC and RS Heartbeat can arrive at ~same time on Master
+
+Reporting Region Transition on a RegionServer is now a RPC distinct from RS 
heartbeating (‘RegionServerServices’ Service). An heartbeat and a status 
update can arrive at the Master at about the same time. The Master will update 
its internal state for a Region but this same state is checked when heartbeat 
processing. We may find the unexpected; i.e. a Region just reported as CLOSED 
so heartbeat is surprised to find region OPEN on the back of the RS report. In 
the new system, all slaves must cow to the Masters’ understanding of cluster 
state; the Master will kill/close any misaligned entities.
+
+To address the above, we added a lastUpdate for in-memory Master state. Let a 
region state have some vintage before we act on it (one second currently).
+
+=== Master as RegionServer or as RegionServer that just does system tables
+
+AMv2 enforces current master branch default of HMaster carrying system tables 
only; i.e. the Master in an HBase cluster acts also as a RegionServer only it 
is the exclusive host for tables such as _hbase:meta_, _hbase:namespace_, etc., 
the core system tables. This is causing a couple of test failures as AMv1, 
though it is not supposed to, allows moving hbase:meta off Master while AMv2 
does not.
+
+== New Configs
+
+These configs all need doc on when you’d change them.
+
+=== hbase.procedure.remote.dispatcher.threadpool.size
+
+Defaults 128
+
+=== hbase.procedure.remote.dispatcher.delay.msec
+
+Default 150ms
+
+=== hbase.procedure.remote.dispatcher.max.queue.size
+
+Default 32
+
+=== hbase.regionserver.rpc.startup.waittime
+
+Default 60 seconds.
+
+== Tools
+
+HBASE-15592 Print Procedure WAL Content
+
+Patch in https://issues.apache.org/jira/browse/HBASE-18152[HBASE-18152] [AMv2] 
Corrupt Procedure WAL file; procedure data stored out of order 
https://issues.apache.org/jira/secure/attachment/12871066/reading_bad_wal.patch[https://issues.apache.org/jira/secure/attachment/12871066/reading_bad_wal.patch]
+
+=== MasterProcedureSchedulerPerformanceEvaluation
+
+Tool to test performance of locks and queues in procedure scheduler 
independently from other framework components. Run this after any substantial 
changes in proc system. Prints nice output:
+
+----
+******************************************
+Time - addBack     : 5.0600sec
+Ops/sec - addBack  : 1.9M
+Time - poll        : 19.4590sec
+Ops/sec - poll     : 501.9K
+Num Operations     : 10000000
+
+Completed          : 10000006
+Yield              : 22025876
+
+Num Tables         : 5
+Regions per table  : 10
+Operations type    : both
+Threads            : 10
+******************************************
+Raw format for scripts
+
+RESULT [num_ops=10000000, ops_type=both, num_table=5, regions_per_table=10, 
threads=10, num_yield=22025876, time_addback_ms=5060, time_poll_ms=19459]
+----

http://git-wip-us.apache.org/repos/asf/hbase/blob/61d70604/src/main/asciidoc/_chapters/appendix_acl_matrix.adoc
----------------------------------------------------------------------
diff --git a/src/main/asciidoc/_chapters/appendix_acl_matrix.adoc 
b/src/main/asciidoc/_chapters/appendix_acl_matrix.adoc
index d5ea076..cb17346 100644
--- a/src/main/asciidoc/_chapters/appendix_acl_matrix.adoc
+++ b/src/main/asciidoc/_chapters/appendix_acl_matrix.adoc
@@ -160,6 +160,7 @@ In case the table goes out of date, the unit tests which 
check for accuracy of p
 |                  | getUserPermissions(global level) | global(A)
 |                  | getUserPermissions(namespace level) | global(A)\|NS(A)
 |                  | getUserPermissions(table level) | 
global(A)\|NS(A)\|TableOwner\|table(A)\|CF(A)\|CQ(A)
+|                  | hasPermission(table level) | global(A)\|SelfUserCheck
 | RegionServer | stopRegionServer | superuser\|global(A)
 |              | mergeRegions | superuser\|global(A)
 |              | rollWALWriterRequest | superuser\|global(A)

http://git-wip-us.apache.org/repos/asf/hbase/blob/61d70604/src/main/asciidoc/_chapters/appendix_contributing_to_documentation.adoc
----------------------------------------------------------------------
diff --git 
a/src/main/asciidoc/_chapters/appendix_contributing_to_documentation.adoc 
b/src/main/asciidoc/_chapters/appendix_contributing_to_documentation.adoc
index 6570c9c..a603c16 100644
--- a/src/main/asciidoc/_chapters/appendix_contributing_to_documentation.adoc
+++ b/src/main/asciidoc/_chapters/appendix_contributing_to_documentation.adoc
@@ -119,7 +119,7 @@ JIRA and add a version number to the name of the new patch.
 
 === Editing the HBase Website
 
-The source for the HBase website is in the HBase source, in the 
_src/main/site/_ directory.
+The source for the HBase website is in the HBase source, in the _src/site/_ 
directory.
 Within this directory, source for the individual pages is in the _xdocs/_ 
directory,
 and images referenced in those pages are in the _resources/images/_ directory.
 This directory also stores images used in the HBase Reference Guide.
@@ -216,7 +216,7 @@ link:http://www.google.com[Google]
 ----
 image::sunset.jpg[Alt Text]
 ----
-(put the image in the src/main/site/resources/images directory)
+(put the image in the src/site/resources/images directory)
 | An inline image | The image with alt text, as part of the text flow |
 ----
 image:sunset.jpg [Alt Text]
@@ -389,7 +389,7 @@ Inline images cannot have titles. They are generally small 
images like GUI butto
 image:sunset.jpg[Alt Text]
 ----
 
-When doing a local build, save the image to the 
_src/main/site/resources/images/_ directory.
+When doing a local build, save the image to the _src/site/resources/images/_ 
directory.
 When you link to the image, do not include the directory portion of the path.
 The image will be copied to the appropriate target location during the build 
of the output.
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/61d70604/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 0000000..d450f04
--- /dev/null
+++ b/src/main/asciidoc/_chapters/appendix_hbase_incompatibilities.adoc
@@ -0,0 +1,714 @@
+////
+/**
+ *
+ * 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]
+== Known Incompatibilities Among HBase Versions
+:doctype: book
+:numbered:
+:toc: left
+:icons: font
+:experimental:
+:toc: left
+:source-language: java
+
+== 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 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
+
+* 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)
+
+[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<E>
+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<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)
+[cols="1,1", frame="all"]
+|===
+| Change | Result
+| 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)
+[cols="1,1", frame="all"]
+|===
+| Change | Result
+| 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
+[cols="1,1", frame="all"]
+|===
+| Change | Result
+| 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
+[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<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:
+[cols="1,1", frame="all"]
+|===
+| Change | Result
+| 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)
+[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<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)
+[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<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
+[cols="1,1", frame="all"]
+|===
+| Change | Result
+| 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
+[cols="1,1", frame="all"]
+|===
+| Change | Result
+| 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;
+[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<HColumnDescriptor>.| A client program 
may be interrupted by NoSuchMethodError exception.
+|===
+
+HColumnDescriptor in 1.0.0
+{code}
[email protected]
[email protected]
+public class HColumnDescriptor implements 
WritableComparable<HColumnDescriptor> {
+{code}
+
+HColumnDescriptor in 2.0
+{code}
[email protected]
+@Deprecated // remove it in 3.0
+public class HColumnDescriptor implements ColumnFamilyDescriptor, 
Comparable<HColumnDescriptor> {
+{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<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)
+[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<String>  (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<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;
+[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<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)
+[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<Cell>, 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<String,RegionState>  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<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;
+[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<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

http://git-wip-us.apache.org/repos/asf/hbase/blob/61d70604/src/main/asciidoc/_chapters/appendix_hfile_format.adoc
----------------------------------------------------------------------
diff --git a/src/main/asciidoc/_chapters/appendix_hfile_format.adoc 
b/src/main/asciidoc/_chapters/appendix_hfile_format.adoc
index ba82499..0f37beb 100644
--- a/src/main/asciidoc/_chapters/appendix_hfile_format.adoc
+++ b/src/main/asciidoc/_chapters/appendix_hfile_format.adoc
@@ -94,7 +94,7 @@ The version of HBase introducing the above features reads 
both version 1 and 2 H
 A version 2 HFile is structured as follows:
 
 .HFile Version 2 Structure
-image:hfilev2.png[HFile Version 2]
+image::hfilev2.png[HFile Version 2]
 
 ==== Unified version 2 block format
 

Reply via email to