Commit Graph

2305 Commits

Author SHA1 Message Date
Toshihiro Suzuki 3775464981
HBASE-25242 Add Increment/Append support to RowMutations (#2711)
Signed-off-by: Duo Zhang <zhangduo@apache.org>
Signed-off-by: Andrew Purtell <apurtell@apache.org>
2020-11-27 03:53:19 +09:00
Mate Szalay-Beko 1dbfe96d69 HBASE-25263 Various improvements of column family encryption
This PR is a follow-up of HBASE-25181 (#2539), where several issues were
discussed on the PR:

1. Currently we use PBKDF2WithHmacSHA1 key generation algorithm to generate a
secret key for HFile / WalFile encryption, when the user is defining a string
encryption key in the hbase shell. This algorithm is not secure enough and
not allowed in certain environments (e.g. on FIPS compliant clusters). We are
changing it to PBKDF2WithHmacSHA384. It will not break backward-compatibility,
as even the tables created by the shell using the new algorithm will be able
to load (e.g. during bulkload / replication) the HFiles serialized with the
key generated by an old algorithm, as the HFiles themselves already contain
the key necessary for their decryption.

Smaller issues fixed by this commit:

2. Improve the documentation e.g. with the changes introduced by HBASE-25181
and also by some points discussed on the Jira ticket of HBASE-25263.

3. In EncryptionUtil.createEncryptionContext the various encryption config
checks should throw IllegalStateExceptions instead of RuntimeExceptions.

4. Test cases in TestEncryptionTest.java should be broken down into smaller
tests.

5. TestEncryptionDisabled.java should use ExpectedException JUnit rule to
validate exceptions.

closes #2676

Signed-off-by: Peter Somogyi <psomogyi@apache.org>
2020-11-26 16:57:12 +01:00
niuyulin 751b4f040e HBASE-24872 refactor valueOf PoolType (#2250)
Signed-off-by: Huaxiang Sun <huaxiangsun@apache.com>
2020-11-26 12:50:59 +01:00
Jonathan M Hsieh 35a2875dc1 HBASE-24827 BackPort HBASE-11554 Remove Reusable poolmap Rpc client type. (#2208)
Co-authored-by: niuyulin <niuyulin@xiaomi.com>
Signed-off-by: stack <stack@apache.org>
2020-11-26 11:22:40 +01:00
Andrew Purtell 1b6399a480
HBASE-24640 [branch-2] Purge use of VisibleForTesting (#2696)
Signed-off-by: Nick Dimiduk <ndimiduk@apache.org>
2020-11-25 14:15:32 -08:00
stack 73086f25e6 HBASE-25291 Document how to enable the meta replica load balance mode for the client and clean up around hbase:meta read replicas
hbase-client/src/main/java/org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSelector.java
hbase-client/src/main/java/org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSelectorFactory.java
hbase-client/src/main/java/org/apache/hadoop/hbase/client/CatalogReplicaLoadBalanceSimpleSelector.java
hbase-client/src/main/java/org/apache/hadoop/hbase/client/CatalogReplicaMode.java
 Make the leading license comment opener align on all these new
 files.... one star rather than two.

hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/CatalogReplicationSource.java
 Add some comment better situating the catalogreplicationsource
 specialization.

hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceManager.java
 Add comment how this differs from replicationsource factory and why no
 need to keep offset up in zk.

src/main/asciidoc/_chapters/architecture.adoc
 Clean up the read replica of META doc. Introduce the new read replica
 liveness on META and the new 'LoadBalance' feature (with warnings).
 General edit.
2020-11-20 15:49:00 -08:00
Huaxiang Sun 920cf9faf4 HBASE-25126 Add load balance logic in hbase-client to distribute read load over meta replica regions
It adds load balance support for meta lookup in AsyncTableRegionLocator.
The existing meta replica mode is renamed as "HedgedRead", client sends scan request to the primary meta replica region first,
if response is not back within a configured amount of time, it will send scan requests to all meta replica regions and
take the first response. On top of the existing mode, a new mode "LoadBalance" is introduced. In this mode, client first
choose a meta replica region to send scan request. If the response is stale, it may send the request to another meta replica region or
the primary region. In this mode, meta scan requests are load balanced across all replica regions with the primary mode as
the ultimate source of truth.

Two new config knobs are added:

1. hbase.locator.meta.replicas.mode
   Valid options are "None", "HedgedRead" and "LoadBalance", they are case insensitive. The default mode is "None".

2. hbase.locator.meta.replicas.mode.loadbalance.selector
   The load balance alogrithm to select a meta replica to send the requests.
   Only org.apache.hadoop.hbase.client.CatalogReplicaLoadBalanceReplicaSimpleSelector.class
   is supported for now, which is the default as well. The algorithm works as follows:
      a. Clients select a randome meta replica region to send the requests if there is no entry for the location in the stale
         location cache.
      b. If the location from one meta replica region is stale, a stale entry will be created in the statle location cache
         for the region.
      c. Clients select the primary meta region if the location is in the stale location cache.
      d. The stale location cache entries time out in 3 seconds.

If there is no "hbase.locator.meta.replicas.mode" configured, it will check the config knob "hbase.meta.replicas.use".
If "hbase.meta.replicas.use" is configured, the mode will be set to "HedgedRead".

For branch-2 support, it introduces support for ReversedScan over a specific non-default replica region, this is mainly
for load balance meta scan among all its replica regions.

Remove ConnectionImplementation#setUseMetaReplicas()
2020-11-20 10:45:24 -08:00
Michael Stack 47ad207664 HBASE-25280 [meta replicas] ArrayIndexOutOfBoundsException in ZKConnectionRegistry (#2652)
Signed-off-by: Duo Zhang <zhangduo@apache.org>
Signed-off-by: Huaxiang Sun <huaxiangsun@apache.com>
2020-11-20 00:31:43 -08:00
Duo Zhang b19df076a4
HBASE-25272 Support scan on a specific replica (#2645)
Signed-off-by: stack <stack@apache.org>
Signed-off-by: Huaxiang Sun <huaxiangsun@apache.org>
2020-11-12 21:25:53 +08:00
Mate Szalay-Beko 9fe62c3ec6
HBASE-25181 Add options for disabling column family encryption and choosing hash algorithm for wrapped encryption keys.
Prior to this patch hbase always used the MD5 hash algorithm to store a hash for encryption keys.
This hash is needed to verify the secret key of the subject. (e.g. making
sure that the same secrey key is used during encrypted HFile read and write).
The MD5 algorithm is considered weak, and can not be used in some
(e.g. FIPS compliant) clusters.

In this patch we:
- add a config parameter to globally enable/disable column family encryption (def enabled)
- introduce a backward compatible way of specifying the hash algorithm.
  This enable us to use newer and more secure hash algorithms like SHA-384
  or SHA-512 (which are FIPS compliant).
- add a config parameter to fail if an hfile is encountered that uses a
  different hash algorithm than the one currently configured to ease validation after
  migrating key hash algorithms (def disabled)

Closes #2539

Signed-off-by: Sean Busbey <busbey@apache.org>
Signed-off-by: Esteban Gutierrez <esteban@apache.org>
(cherry picked from commit 6a5c928539)
2020-11-09 14:15:22 -06:00
Michael Stack df0009d879
HBASE-25238 Upgrading HBase from 2.2.0 to 2.3.x fails because of “Message missing required fields: state” (#2625)
Make protobuf fields add post-2.0.0 release marked 'required' instead
be 'optional' so migrations from 2.0.x to 2.1+ or 2.2+ succeeds.
2020-11-05 08:36:55 -08:00
niuyulin 770098128a HBASE-25210 RegionInfo.isOffline is now a duplication with RegionInfo.isSplit (#2580)
Signed-off-by: Duo Zhang <zhangduo@apache.org>
Signed-off-by: stack <stack@apache.org>
2020-11-04 08:11:00 -08:00
bsglz 3a45fc17e5
HBASE-24967 The table.jsp cost long time to load if the table include closed regions (#2613) 2020-11-01 21:11:15 +08:00
niuyulin bfe92ea53b HBASE-25201 YouAreDeadException should be moved to hbase-server module (#2581)
Signed-off-by: Duo Zhang <zhangduo@apache.org>
2020-10-28 15:02:30 +08:00
niuyulin 1bf68514ea HBASE-25176 MasterStoppedException should be moved to hbase-client module (#2538)
Signed-off-by: Duo Zhang <zhangduo@apache.org>
2020-10-28 15:02:20 +08:00
bsglz dd6974fda8
HBASE-24875 Remove the force param for unassign since it dose not take effect any more (#2254)
Modified compared to main branch to deprecate obviated MasterObserver interface methods instead of remove them.

Signed-off-by: Sean Busbey <busbey@apache.org>
(cherry picked from commit c5ca191921)

 Conflicts:
	hbase-client/src/main/java/org/apache/hadoop/hbase/client/AdminOverAsyncAdmin.java
	hbase-server/src/test/java/org/apache/hadoop/hbase/rsgroup/VerifyingRSGroupAdmin.java
	hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestWithDisabledAuthorization.java
2020-10-13 16:29:03 -05:00
Duo Zhang 4df536e31d HBASE-25121 Refactor MetaTableAccessor.addRegionsToMeta and its usage places (#2476)
Signed-off-by: stack <stack@apache.org>
2020-10-05 22:05:01 +08:00
SteNicholas 7db2a88a7d HBASE-25120 Remove the deprecated annotation for MetaTableAccessor.getScanForTableName (#2493)
Signed-off-by: Duo Zhang <zhangduo@apache.org>
2020-10-02 23:00:42 +08:00
Sanjeet Nishad 219b7afd9e
HBASE-24981 Enable table replication fails from 1.x to 2.x if table already exist at peer
Closes #2353

Signed-off-by: stack <stack@apache.org>
Signed-off-by: Viraj Jasani <vjasani@apache.org>
Signed-off-by: Pankaj Kumar <pankajkumar@apache.org>
2020-10-01 13:36:12 +05:30
Duo Zhang f973a8087f HBASE-25103 Remove ZNodePaths.metaReplicaZNodes (#2464)
Signed-off-by: Huaxiang Sun <huaxiangsun@apache.com>
2020-09-29 15:51:06 +08:00
Joseph295 6b93373a0a
HBASE-25088 CatalogFamilyFormat/MetaTableAccessor.parseRegionInfoFromRegionName incorrectly setEndKey to regionId (#2462)
Signed-off-by: Duo Zhang <zhangduo@apache.org>
2020-09-27 11:05:16 +08:00
王伟 49af9d8e91 HBASE-25073 Should not use XXXService.Interface.class.getSimpleName as stub key prefix in AsyncConnectionImpl (#2443)
Signed-off-by: Duo Zhang <zhangduo@apache.org>
2020-09-23 14:41:03 +08:00
niuyulin 5e910fa0d6
HBASE-25072 Remove the unnecessary System.out.println in MasterRegistry (#2429)
Co-authored-by: niuyulin <niuyulin@xiaomi.com>
Signed-off-by: Jan Hentschel <janh@apache.org>
Signed-off-by: Duo Zhang <zhangduo@apache.org>
Signed-off-by: Viraj Jasani <vjasani@apache.org>
2020-09-20 20:12:29 +02:00
Viraj Jasani 93935e7e25
HBASE-24896 : Jira number correction in comment (ADDENDUM) 2020-09-20 14:37:14 +05:30
stack cef1220590
HBASE-24896 'Stuck' in static initialization creating RegionInfo instance
Closes #2423

Untangle RegionInfo, RegionInfoBuilder, and MutableRegionInfo static
initializations some. Move MutableRegionInfo from inner-class of
RegionInfoBuilder to be (package private) standalone. Undo static
initializing references from RI to RIB.

Co-authored-by: Nick Dimiduk <ndimiduk@apache.org>
Signed-off-by: Bharath Vissapragada <bharathv@apache.org>
Signed-off-by: Duo Zhang <zhangduo@apache.org>
Signed-off-by: Viraj Jasani <vjasani@apache.org>
2020-09-20 14:11:55 +05:30
Duo Zhang fe03a35ea2 HBASE-25066 Use FutureUtils.rethrow in AsyncTableResultScanner to better catch the stack trace (#2420)
Signed-off-by: Guanghao Zhang <zghao@apache.org>
2020-09-20 11:28:01 +08:00
shahrs87 7fe07e90eb
[HBASE-24956] ConnectionManager#locateRegionInMeta waits for user region lock indefinitely. (#2322)
Signed-off-by: Bharath Vissapragada <bharathv@apache.org>
Signed-Off-By: Andrew Purtell <apurtell@apache.org>
Signed-off by: Viraj Jasani <vjasani@apache.org>
Signed-off-by: Michael Stack <stack@apache.org>
Signed-off-by: Guanghao Zhang <zghao@apache.org>
2020-09-17 09:26:35 -07:00
Viraj Jasani 4316dc738c
HBASE-24528 : BalancerDecision queue implementation in HMaster with Admin API (#2411)
* Admin API getLogEntries() for ring buffer use-cases: so far, provides balancerDecision and slowLogResponse
* Refactor RPC call for similar use-cases
* Single RPC API getLogEntries() for both Master.proto and Admin.proto

Closes #2261

Signed-off-by: Andrew Purtell <apurtell@apache.org>
2020-09-17 18:51:42 +05:30
Duo Zhang 7a3bb8aefe HBASE-25037 Lots of thread pool are changed to non daemon after HBASE-24750 which causes trouble when shutting down (#2407)
Signed-off-by: Viraj Jasani <vjasani@apache.org>
2020-09-16 22:03:42 +08:00
niuyulin 79eee6affc
HBASE-25016 addendum: should also close the Table which is returned by calling getMetaHTable
Closes #2393

Signed-off-by: Viraj Jasani <vjasani@apache.org>
2020-09-14 12:40:10 +05:30
niuyulin 67233dcb42
HBASE-25016 Should close ResultScanner in MetaTableAccessor.scanByRegionEncodedName
Closes #2390

Signed-off-by: Viraj Jasani <vjasani@apache.org>
2020-09-13 17:57:30 +05:30
ankitjain64 7df1b92528
HBASE-24764: Add support of adding default peer configs via hbase-site.xml for all replication peers. (#2284)
Signed-off-by: Bharath Vissapragada <bharathv@apache.org>
2020-09-10 10:10:58 -07:00
Duo Zhang 4421012105 HBASE-25005 Refactor CatalogJanitor (#2373)
Signed-off-by: Guanghao Zhang <zghao@apache.org>
2020-09-10 12:15:02 +08:00
Toshihiro Suzuki daccdb19a2
HBASE-24602 Add Increment and Append support to CheckAndMutate (#2363)
Signed-off-by: Duo Zhang <zhangduo@apache.org>
2020-09-08 21:32:35 +09:00
Mohammad Arshad 17eeaef6d9
HBASE-24940: runCatalogJanitor() API should return -1 to indicate already running status
Closes #2331

Signed-off-by: Viraj Jasani <vjasani@apache.org>
2020-09-03 15:57:04 +05:30
Viraj Jasani 859bf3ea9a
HBASE-24968 : Move META_COMPARATOR to subclass MetaCellComparator (#2332)
* Break subclass referencing of MetaCellComparator from superclass CellComparatorImpl
  static initializer by moving META_COMPARATOR to subclass MetaCellComparator

Closes #2329

Signed-off-by: Duo Zhang <zhangduo@apache.org>
2020-08-31 19:51:00 +05:30
Duo Zhang e022094400 HBASE-24964 Remove MetaTableAccessor.tableExists (#2330)
Signed-off-by: Viraj Jasani <vjasani@apache.org>
2020-08-30 19:57:08 +08:00
Bharath Vissapragada bb9121da77
HBASE-24765: Dynamic master discovery (#2314)
This patch adds the ability to discover newly added masters
dynamically on the master registry side. The trigger for the
re-fetch is either periodic (5 mins) or any registry RPC failure.
Master server information is cached in masters to avoid repeated
ZK lookups.

Updates the client side connection metrics to maintain a counter
per RPC type so that clients have visibility into counts grouped
by RPC method name.

I didn't add the method to ZK registry interface since there
is a design discussion going on in splittable meta doc. We can
add it later if needed.

Signed-off-by: Nick Dimiduk <ndimiduk@apache.org>
Signed-off-by: Viraj Jasani <vjasani@apache.org>
Signed-off-by: Duo Zhang <zhangduo@apache.org>
(cherry picked from commit 275a38e153)
2020-08-26 09:13:34 -07:00
Duo Zhang 0be2b6ce55 HBASE-24945 Remove MetaTableAccessor.getRegionCount (#2303)
Signed-off-by: Viraj Jasani <vjasani@apache.org>
2020-08-25 21:33:15 +08:00
Duo Zhang e61a3460a7 HBASE-24942 MergeTableRegionsProcedure should not call clean merge region (#2301)
Signed-off-by: stack <stack@apache.org>
2020-08-25 15:15:46 +08:00
Michael Stack 43494f6c73 HBASE-24918 Make RegionInfo#UNDEFINED IA.Private (#2289)
Mark RegionInfo#UNDEFINED IA.Private and deprecated;
it is for internal use only and likely to be removed in hbase4.

Move MutableRegionInfo out of RegionInfoBuilder and have it as a
stanadlone task; a nice-to-have.

Signed-off-by: Viraj Jasani <vjasani@apache.org>
Signed-off-by: Bharath Vissapragada <bharathv@apache.org>
Signed-off-by: Duo Zhang <zhangduo@apache.org>
2020-08-21 09:26:17 -07:00
mokai a914f2efeb
HBASE-24686 [LOG] Log improvement in Connection#close (#2219)
Signed-off-by: Pankaj Kumar <pankajkumar@apache.org>
Signed-off-by: Viraj Jasani <vjasani@apache.org>
Signed-off-by: Sean Busbey <busbey@apache.org>
2020-08-21 18:58:05 +05:30
Guanghao Zhang 4667a971b1 HBASE-24912 Enlarge MemstoreFlusherChore/CompactionChecker period for unit test (#2285)
Signed-off-by: stack <stack@apache.org>
2020-08-21 12:42:11 +08:00
Nick Dimiduk acfa08cd87 HBASE-24627 Normalize one table at a time
Introduce an additional method to our Admin interface that allow an
operator to selectivly run the normalizer. The IPC protocol supports
general table name select via compound filter.

Signed-off-by: Sean Busbey <busbey@apache.org>
Signed-off-by: Viraj Jasani <vjasani@apache.org>
2020-08-19 09:22:21 -07:00
Viraj Jasani 8ccf643fdc
HBASE-24750 : All ExecutorService should use guava ThreadFactoryBuilder (#2214)
Closes #2196

Signed-off-by: Nick Dimiduk <ndimiduk@apache.org>
Signed-off-by: Ted Yu <tyu@apache.org>
Signed-off-by: niuyulin <nyl353@163.com>
2020-08-12 15:57:53 +05:30
Toshihiro Suzuki 22bf9a38c9
HBASE-24680 Refactor the checkAndMutate code on the server side (#2184)
Signed-off-by: Duo Zhang <zhangduo@apache.org>
Signed-off-by: Josh Elser <elserj@apache.org>
2020-08-10 18:57:17 +09:00
bsglz ebf493f075
HBASE-24694 Support flush a single column family of table (#2218)
Signed-off-by: Wellington Chevreuil <wchevreuil@apache.org>
2020-08-10 10:36:13 +01:00
bsglz 1c45c8c7db
HBASE-24404 Support flush a single column family of region (#2098)
Signed-off-by: Wellington Chevreuil <wchevreuil@apache.org>
2020-07-31 09:31:14 +01:00
Viraj Jasani ce4e692699
HBASE-24718 : Generic NamedQueue framework for multiple use-cases (Refactor SlowLog responses) (#2110)
Closes #2052

Signed-off-by: Wellington Chevreuil <wchevreuil@apache.org>
2020-07-22 11:36:19 +05:30
surbhi 33102a1265 HBASE-22146 Removing a namespace-level space quota does not remove policies against contained tables
Closes #1935

Signed-off-by: Josh Elser <elserj@apache.org>
2020-07-21 21:24:06 -04:00