Signed-off-by: Viraj Jasani <vjasani@apache.org>
This commit is contained in:
parent
ed1a75905c
commit
b2d329b5d8
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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")) {
|
||||||
|
|
Loading…
Reference in New Issue