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));
DEFAULT_VALUES.put(DURABILITY, DEFAULT_DURABLITY.name()); //use the enum name
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));
for (String s : DEFAULT_VALUES.keySet()) {
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
*/
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.
* @param identifier string that is passed to RecoverableZookeeper to be used as
* identifier for this instance. Use null for default.
* @param identifier string that is passed to RecoverableZookeeper to be used as identifier for
* this instance. Use null for default.
* @throws IOException
* @throws ZooKeeperConnectionException
*/
public ZooKeeperWatcher(Configuration conf, String identifier,
Abortable abortable) throws ZooKeeperConnectionException, IOException {
public ZooKeeperWatcher(Configuration conf, String identifier, Abortable abortable)
throws ZooKeeperConnectionException, IOException {
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>
</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>
<name>hbase.server.thread.wakefrequency</name>
<value>10000</value>

View File

@ -205,7 +205,8 @@ import org.mortbay.jetty.servlet.ServletHolder;
@SuppressWarnings("deprecation")
public class HMaster extends HRegionServer implements MasterServices, Server {
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
* 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 mergePlanCount;
private boolean defaultNormalizerTableLevel;
/** flag used in test cases in order to simulate RS failures during master initialization */
private volatile boolean initializationBeforeMetaAssignment = false;
@ -529,6 +531,7 @@ public class HMaster extends HRegionServer implements MasterServices, Server {
activeMasterManager = null;
}
cachedClusterId = new CachedClusterId(conf);
this.defaultNormalizerTableLevel = extractDefaultNormalizerValue(conf);
}
// return the actual infoPort, -1 means disable info server.
@ -1117,6 +1120,11 @@ public class HMaster extends HRegionServer implements MasterServices, Server {
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,
Set<ServerName> previouslyFailedRs) throws IOException, KeeperException {
ServerName currentServer = regionState.getServerName();
@ -1692,13 +1700,21 @@ public class HMaster extends HRegionServer implements MasterServices, Server {
if (table.isSystemTable()) {
continue;
}
boolean normalizationEnabled;
HTableDescriptor tableDescriptor = getTableDescriptors().get(table);
if (tableDescriptor != null && !tableDescriptor.isNormalizationEnabled()) {
LOG.debug("Skipping normalization for table: " + table
+ ", as it doesn't have auto normalization turned on");
if (tableDescriptor != null) {
String defined = tableDescriptor.getValue(HTableDescriptor.NORMALIZATION_ENABLED);
if (defined != null) {
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.
if (skipRegionManagementAction("region normalizer")) {
return false;