Go to file
Apekshit Sharma 0c883a23c5 HBASE-17732 Coprocessor Design Improvements
------------------------------------------------------
TL;DR
------------------------------------------------------
We are moving from Inheritence
- Observer *is* Coprocessor
- FooService *is* CoprocessorService
To Composition
- Coprocessor *has* Observer
- Coprocessor *has* Service

------------------------------------------------------
Design Changes
------------------------------------------------------
- Adds four new interfaces - MasterCoprocessor, RegionCoprocessor, RegionServierCoprocessor,
  WALCoprocessor
- These new *Coprocessor interfaces have a get*Observer() function for each observer type
  supported by them.
- Added Coprocessor#getService() to base interface. All extending *Coprocessor interfaces will
  get it from the base interface.
- Added BulkLoadObserver hooks to RegionCoprocessorHost instad of SecureBulkLoadManager doing its
  own trickery.
- CoprocessorHost#find*() fuctions: Too many testing hooks digging into CP internals.
  Deleted if can, else marked @VisibleForTesting.

------------------------------------------------------
Backward Compatibility
------------------------------------------------------
- Old coprocessors implementing *Observer won't get loaded (no backward compatibility guarantees).
- Third party coprocessors only implementing Coprocessor will not get loaded (just like Observers).
- Old coprocessors implementing CoprocessorService (for master/region host)
  /SingletonCoprocessorService (for RegionServer host) will continue to work with 2.0.
- Added test to ensure backward compatibility of CoprocessorService/SingletonCoprocessorService
- Note that if a coprocessor implements both observer and service in same class, its service
  component will continue to work but it's observer component won't work.

------------------------------------------------------
Notes
------------------------------------------------------
Did a side-by-side comparison of CPs in master and after patch. These coprocessors which were just
CoprocessorService earlier, needed a home in some coprocessor in new design. For most it was clear
since they were using a particular type of environment. Some were tricky.

- JMXListener - MasterCoprocessor and RSCoprocessor (because jmx listener makes sense for
  processes?)
- RSGroupAdminEndpoint --> MasterCP
- VisibilityController -> MasterCP and RegionCP

These were converted to RegionCoprocessor because they were using RegionCoprocessorEnvironment
which can only come from a RegionCPHost.
- AggregateImplementation
- BaseRowProcessorEndpoint
- BulkDeleteEndpoint
- Export
- RefreshHFilesEndpoint
- RowCountEndpoint
- MultiRowMutationEndpoint
- SecureBulkLoadEndpoint
- TokenProvider

Change-Id: I813145f2bc11815f52ac703563b879962c249764
2017-09-27 12:45:51 -07:00
bin HBASE-18780 Remove HLogPrettyPrinter 2017-09-08 10:22:18 -07:00
conf HBASE-18517 limit max log message width in log4j 2017-08-08 12:10:13 +08:00
dev-support HBASE-18833 Ensure precommit personality is up to date on all active branches 2017-09-20 05:51:42 -05:00
hbase-annotations HBASE-18819 Set version number to 2.0.0-alpha3 from 2.0.0-alpha3-SNAPSHOT 2017-09-14 12:38:46 -07:00
hbase-archetypes HBASE-18819 Set version number to 2.0.0-alpha3 from 2.0.0-alpha3-SNAPSHOT 2017-09-14 12:38:46 -07:00
hbase-assembly HBASE-18820 assembly is missing hbase-permission 2017-09-14 13:25:47 -07:00
hbase-backup HBASE-17732 Coprocessor Design Improvements 2017-09-27 12:45:51 -07:00
hbase-build-configuration HBASE-18819 Set version number to 2.0.0-alpha3 from 2.0.0-alpha3-SNAPSHOT 2017-09-14 12:38:46 -07:00
hbase-checkstyle HBASE-18819 Set version number to 2.0.0-alpha3 from 2.0.0-alpha3-SNAPSHOT 2017-09-14 12:38:46 -07:00
hbase-client HBASE-17732 Coprocessor Design Improvements 2017-09-27 12:45:51 -07:00
hbase-common HBASE-18835 The return type of ExtendedCell#deepClone should be ExtendedCell rather than Cell 2017-09-18 22:38:42 +08:00
hbase-endpoint HBASE-17732 Coprocessor Design Improvements 2017-09-27 12:45:51 -07:00
hbase-examples HBASE-17732 Coprocessor Design Improvements 2017-09-27 12:45:51 -07:00
hbase-external-blockcache HBASE-18819 Set version number to 2.0.0-alpha3 from 2.0.0-alpha3-SNAPSHOT 2017-09-14 12:38:46 -07:00
hbase-hadoop-compat HBASE-18819 Set version number to 2.0.0-alpha3 from 2.0.0-alpha3-SNAPSHOT 2017-09-14 12:38:46 -07:00
hbase-hadoop2-compat HBASE-18819 Set version number to 2.0.0-alpha3 from 2.0.0-alpha3-SNAPSHOT 2017-09-14 12:38:46 -07:00
hbase-it HBASE-17732 Coprocessor Design Improvements 2017-09-27 12:45:51 -07:00
hbase-mapreduce HBASE-17732 Coprocessor Design Improvements 2017-09-27 12:45:51 -07:00
hbase-metrics HBASE-18819 Set version number to 2.0.0-alpha3 from 2.0.0-alpha3-SNAPSHOT 2017-09-14 12:38:46 -07:00
hbase-metrics-api HBASE-18819 Set version number to 2.0.0-alpha3 from 2.0.0-alpha3-SNAPSHOT 2017-09-14 12:38:46 -07:00
hbase-native-client HBASE-14087 Ensure correct ASF headers for docs/code 2015-07-29 14:25:43 -05:00
hbase-prefix-tree HBASE-18819 Set version number to 2.0.0-alpha3 from 2.0.0-alpha3-SNAPSHOT 2017-09-14 12:38:46 -07:00
hbase-procedure HBASE-18819 Set version number to 2.0.0-alpha3 from 2.0.0-alpha3-SNAPSHOT 2017-09-14 12:38:46 -07:00
hbase-protocol HBASE-18819 Set version number to 2.0.0-alpha3 from 2.0.0-alpha3-SNAPSHOT 2017-09-14 12:38:46 -07:00
hbase-protocol-shaded HBASE-18866 clean up warnings about proto syntax 2017-09-22 18:38:11 -05:00
hbase-replication HBASE-18819 Set version number to 2.0.0-alpha3 from 2.0.0-alpha3-SNAPSHOT 2017-09-14 12:38:46 -07:00
hbase-resource-bundle HBASE-18851 Add "BSD" to the acceptable licenses list 2017-09-19 16:32:15 -04:00
hbase-rest HBASE-18880 Failed to start rest server if the value of hbase.rest.threads.max is too small. 2017-09-26 20:39:27 -07:00
hbase-rsgroup HBASE-17732 Coprocessor Design Improvements 2017-09-27 12:45:51 -07:00
hbase-server HBASE-17732 Coprocessor Design Improvements 2017-09-27 12:45:51 -07:00
hbase-shaded HBASE-18836 Note need for explicit javax.el and exclude from shaded artifacts 2017-09-18 09:53:55 -05:00
hbase-shell HBASE-18142 Deletion of a cell deletes the previous versions too 2017-09-19 00:07:22 +08:00
hbase-spark HBASE-18825 Use HStoreFile instead of StoreFile in our own code base and remove unnecessary methods in StoreFile interface 2017-09-25 09:48:33 +08:00
hbase-spark-it HBASE-18819 Set version number to 2.0.0-alpha3 from 2.0.0-alpha3-SNAPSHOT 2017-09-14 12:38:46 -07:00
hbase-testing-util HBASE-18819 Set version number to 2.0.0-alpha3 from 2.0.0-alpha3-SNAPSHOT 2017-09-14 12:38:46 -07:00
hbase-thrift HBASE-17732 Coprocessor Design Improvements 2017-09-27 12:45:51 -07:00
src/main HBASE-17823 Migrate to Apache Yetus Audience Annotations 2017-09-12 23:15:50 -05:00
.gitattributes HBASE-6816. [WINDOWS] line endings on checkout for .sh files 2013-01-23 19:30:14 +00:00
.gitignore HBASE-18670 Add .DS_Store to .gitignore 2017-08-27 18:53:04 +08:00
.pylintrc HBASE-18041 Add .pylintrc to HBase 2017-06-28 12:26:29 -05:00
CHANGES.txt HBASE-5466 Opening a table also opens the metatable and never closes it 2012-02-24 00:55:58 +00:00
LICENSE.txt HBASE-14338 License notification misspells 'Asciidoctor' (Lars Francke) 2015-09-22 09:53:53 -07:00
NOTICE.txt HBASE-17968 Fix NOTICE.txt for src-release 2017-05-01 11:25:44 -04:00
README.txt Updated links in README 2014-09-18 11:58:14 -07:00
pom.xml HBASE-18831 Add explicit dependency on javax.el 2017-09-16 10:38:17 -07:00

README.txt

Apache HBase [1] is an open-source, distributed, versioned, column-oriented
store modeled after Google' Bigtable: A Distributed Storage System for
Structured Data by Chang et al.[2]  Just as Bigtable leverages the distributed
data storage provided by the Google File System, HBase provides Bigtable-like
capabilities on top of Apache Hadoop [3].

To get started using HBase, the full documentation for this release can be
found under the doc/ directory that accompanies this README.  Using a browser,
open the docs/index.html to view the project home page (or browse to [1]).
The hbase 'book' at http://hbase.apache.org/book.html has a 'quick start'
section and is where you should being your exploration of the hbase project.

The latest HBase can be downloaded from an Apache Mirror [4].

The source code can be found at [5]

The HBase issue tracker is at [6]

Apache HBase is made available under the Apache License, version 2.0 [7]

The HBase mailing lists and archives are listed here [8].

The HBase distribution includes cryptographic software. See the export control
notice here [9].

1. http://hbase.apache.org
2. http://research.google.com/archive/bigtable.html
3. http://hadoop.apache.org
4. http://www.apache.org/dyn/closer.cgi/hbase/
5. https://hbase.apache.org/source-repository.html
6. https://hbase.apache.org/issue-tracking.html
7. http://hbase.apache.org/license.html
8. http://hbase.apache.org/mail-lists.html
9. https://hbase.apache.org/export_control.html