HBASE-25986 set default value of normalization enabled from hbase site (#3492) (#3372)

Signed-off-by: Viraj Jasani <vjasani@apache.org>
This commit is contained in:
Aman Poonia 2021-07-19 15:30:56 +05:30 committed by GitHub
parent ed1a75905c
commit b2d329b5d8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 35 additions and 13 deletions

View File

@ -280,7 +280,6 @@ public class HTableDescriptor implements WritableComparable<HTableDescriptor> {
String.valueOf(DEFAULT_DEFERRED_LOG_FLUSH)); String.valueOf(DEFAULT_DEFERRED_LOG_FLUSH));
DEFAULT_VALUES.put(DURABILITY, DEFAULT_DURABLITY.name()); //use the enum name DEFAULT_VALUES.put(DURABILITY, DEFAULT_DURABLITY.name()); //use the enum name
DEFAULT_VALUES.put(REGION_REPLICATION, String.valueOf(DEFAULT_REGION_REPLICATION)); DEFAULT_VALUES.put(REGION_REPLICATION, String.valueOf(DEFAULT_REGION_REPLICATION));
DEFAULT_VALUES.put(NORMALIZATION_ENABLED, String.valueOf(DEFAULT_NORMALIZATION_ENABLED));
DEFAULT_VALUES.put(PRIORITY, String.valueOf(DEFAULT_PRIORITY)); DEFAULT_VALUES.put(PRIORITY, String.valueOf(DEFAULT_PRIORITY));
for (String s : DEFAULT_VALUES.keySet()) { for (String s : DEFAULT_VALUES.keySet()) {
RESERVED_KEYWORDS.add(new ImmutableBytesWritable(Bytes.toBytes(s))); RESERVED_KEYWORDS.add(new ImmutableBytesWritable(Bytes.toBytes(s)));
@ -684,7 +683,7 @@ public class HTableDescriptor implements WritableComparable<HTableDescriptor> {
* @return true if region normalization is enabled for this table * @return true if region normalization is enabled for this table
*/ */
public boolean isNormalizationEnabled() { public boolean isNormalizationEnabled() {
return isSomething(NORMALIZATION_ENABLED_KEY, DEFAULT_NORMALIZATION_ENABLED); return isSomething(NORMALIZATION_ENABLED_KEY, false);
} }
/** /**

View File

@ -185,13 +185,13 @@ public class ZooKeeperWatcher implements Watcher, Abortable, Closeable {
/** /**
* Instantiate a ZooKeeper connection and watcher. * Instantiate a ZooKeeper connection and watcher.
* @param identifier string that is passed to RecoverableZookeeper to be used as * @param identifier string that is passed to RecoverableZookeeper to be used as identifier for
* identifier for this instance. Use null for default. * this instance. Use null for default.
* @throws IOException * @throws IOException
* @throws ZooKeeperConnectionException * @throws ZooKeeperConnectionException
*/ */
public ZooKeeperWatcher(Configuration conf, String identifier, public ZooKeeperWatcher(Configuration conf, String identifier, Abortable abortable)
Abortable abortable) throws ZooKeeperConnectionException, IOException { throws ZooKeeperConnectionException, IOException {
this(conf, identifier, abortable, false); this(conf, identifier, abortable, false);
} }

View File

@ -642,6 +642,13 @@ possible configurations would overwhelm and obscure the important.
<description>The minimum size for a region to be considered for a merge, in whole MBs. <description>The minimum size for a region to be considered for a merge, in whole MBs.
</description> </description>
</property> </property>
<property>
<name>hbase.table.normalization.enabled</name>
<value>false</value>
<description>This config is used to set default behaviour of normalizer at table level. To override this at table
level one can set NORMALIZATION_ENABLED at table descriptor level and that property will be honored
</description>
</property>
<property> <property>
<name>hbase.server.thread.wakefrequency</name> <name>hbase.server.thread.wakefrequency</name>
<value>10000</value> <value>10000</value>

View File

@ -205,7 +205,8 @@ import org.mortbay.jetty.servlet.ServletHolder;
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
public class HMaster extends HRegionServer implements MasterServices, Server { public class HMaster extends HRegionServer implements MasterServices, Server {
private static final Log LOG = LogFactory.getLog(HMaster.class.getName()); private static final Log LOG = LogFactory.getLog(HMaster.class.getName());
public static final String HBASE_TABLE_NORMALIZATION_ENABLED =
"hbase.table.normalization.enabled";
/** /**
* Protection against zombie master. Started once Master accepts active responsibility and * Protection against zombie master. Started once Master accepts active responsibility and
* starts taking over responsibilities. Allows a finite time window before giving up ownership. * starts taking over responsibilities. Allows a finite time window before giving up ownership.
@ -381,6 +382,7 @@ public class HMaster extends HRegionServer implements MasterServices, Server {
private long splitPlanCount; private long splitPlanCount;
private long mergePlanCount; private long mergePlanCount;
private boolean defaultNormalizerTableLevel;
/** flag used in test cases in order to simulate RS failures during master initialization */ /** flag used in test cases in order to simulate RS failures during master initialization */
private volatile boolean initializationBeforeMetaAssignment = false; private volatile boolean initializationBeforeMetaAssignment = false;
@ -529,6 +531,7 @@ public class HMaster extends HRegionServer implements MasterServices, Server {
activeMasterManager = null; activeMasterManager = null;
} }
cachedClusterId = new CachedClusterId(conf); cachedClusterId = new CachedClusterId(conf);
this.defaultNormalizerTableLevel = extractDefaultNormalizerValue(conf);
} }
// return the actual infoPort, -1 means disable info server. // return the actual infoPort, -1 means disable info server.
@ -1019,7 +1022,7 @@ public class HMaster extends HRegionServer implements MasterServices, Server {
LOG.info("Closing excess replica of meta region " + r.getRegion()); LOG.info("Closing excess replica of meta region " + r.getRegion());
// send a close and wait for a max of 30 seconds // send a close and wait for a max of 30 seconds
ServerManager.closeRegionSilentlyAndWait(getConnection(), r.getServerName(), ServerManager.closeRegionSilentlyAndWait(getConnection(), r.getServerName(),
r.getRegion(), 30000); r.getRegion(), 30000);
ZKUtil.deleteNode(zkw, zkw.getZNodeForReplica(replicaId)); ZKUtil.deleteNode(zkw, zkw.getZNodeForReplica(replicaId));
} }
} }
@ -1117,6 +1120,11 @@ public class HMaster extends HRegionServer implements MasterServices, Server {
status.setStatus("META assigned."); status.setStatus("META assigned.");
} }
private boolean extractDefaultNormalizerValue(final Configuration configuration) {
String s = configuration.get(HBASE_TABLE_NORMALIZATION_ENABLED);
return Boolean.parseBoolean(s);
}
private void assignMetaZkLess(RegionStates regionStates, RegionState regionState, long timeout, private void assignMetaZkLess(RegionStates regionStates, RegionState regionState, long timeout,
Set<ServerName> previouslyFailedRs) throws IOException, KeeperException { Set<ServerName> previouslyFailedRs) throws IOException, KeeperException {
ServerName currentServer = regionState.getServerName(); ServerName currentServer = regionState.getServerName();
@ -1692,12 +1700,20 @@ public class HMaster extends HRegionServer implements MasterServices, Server {
if (table.isSystemTable()) { if (table.isSystemTable()) {
continue; continue;
} }
boolean normalizationEnabled;
HTableDescriptor tableDescriptor = getTableDescriptors().get(table); HTableDescriptor tableDescriptor = getTableDescriptors().get(table);
if (tableDescriptor != null && !tableDescriptor.isNormalizationEnabled()) { if (tableDescriptor != null) {
LOG.debug("Skipping normalization for table: " + table String defined = tableDescriptor.getValue(HTableDescriptor.NORMALIZATION_ENABLED);
+ ", as it doesn't have auto normalization turned on"); if (defined != null) {
continue; normalizationEnabled = tableDescriptor.isNormalizationEnabled();
} else {
normalizationEnabled = this.defaultNormalizerTableLevel;
}
if (!normalizationEnabled) {
LOG.debug("Skipping table " + table + " because normalization is disabled in its "
+ "table properties and normalization is also disabled at table level by default");
continue;
}
} }
// make one last check that the cluster isn't shutting down before proceeding. // make one last check that the cluster isn't shutting down before proceeding.
if (skipRegionManagementAction("region normalizer")) { if (skipRegionManagementAction("region normalizer")) {