nkeywal created HBASE-7220: ------------------------------ Summary: Creating a table with 3000 regions on 2 nodes fails after 1 hour Key: HBASE-7220 URL: https://issues.apache.org/jira/browse/HBASE-7220 Project: HBase Issue Type: Bug Components: metrics, Performance, regionserver Affects Versions: 0.96.0 Environment: small test cluster. not reproducible on a local cluster (needs a network). Reporter: nkeywal
I'm trying to create a table with 3000 regions on two regions servers, from the shell. It's ok on trunk a standalone config. It's ok on 0.94 It's not ok on trunk: it fails after around 1 hour. If I remove all the code related to metrics in HRegion, the 3000 regions are created in 3 minutes (twice faster than the 0.94). On trunk, the region server spends its time in "waitForWork", while the master is in the tcp connection related code. It's a 1Gb network. I haven't looked at the metric code itself. Patch used to remove the metrics from HRegion: {noformat} index c70e9ab..6677e65 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java @@ -364,7 +364,7 @@ public class HRegion implements HeapSize { // , Writable{ private HTableDescriptor htableDescriptor = null; private RegionSplitPolicy splitPolicy; - private final MetricsRegion metricsRegion; + private final MetricsRegion metricsRegion = null; /** * Should only be used for testing purposes @@ -388,7 +388,7 @@ public class HRegion implements HeapSize { // , Writable{ this.coprocessorHost = null; this.scannerReadPoints = new ConcurrentHashMap<RegionScanner, Long>(); - this.metricsRegion = new MetricsRegion(new MetricsRegionWrapperImpl(this)); + //this.metricsRegion = new MetricsRegion(new MetricsRegionWrapperImpl(this)); } /** @@ -451,7 +451,7 @@ public class HRegion implements HeapSize { // , Writable{ this.regiondir = getRegionDir(this.tableDir, encodedNameStr); this.scannerReadPoints = new ConcurrentHashMap<RegionScanner, Long>(); - this.metricsRegion = new MetricsRegion(new MetricsRegionWrapperImpl(this)); + //this.metricsRegion = new MetricsRegion(new MetricsRegionWrapperImpl(this)); /* * timestamp.slop provides a server-side constraint on the timestamp. This @@ -1024,7 +1024,7 @@ public class HRegion implements HeapSize { // , Writable{ status.setStatus("Running coprocessor post-close hooks"); this.coprocessorHost.postClose(abort); } - this.metricsRegion.close(); + //this.metricsRegion.close(); status.markComplete("Closed"); LOG.info("Closed " + this); return result; @@ -2331,11 +2331,11 @@ public class HRegion implements HeapSize { // , Writable{ if (noOfPuts > 0) { // There were some Puts in the batch. double noOfMutations = noOfPuts + noOfDeletes; - this.metricsRegion.updatePut(); + //this.metricsRegion.updatePut(); } if (noOfDeletes > 0) { // There were some Deletes in the batch. - this.metricsRegion.updateDelete(); + //this.metricsRegion.updateDelete(); } if (!success) { for (int i = firstIndex; i < lastIndexExclusive; i++) { @@ -4270,7 +4270,7 @@ public class HRegion implements HeapSize { // , Writable{ // do after lock - this.metricsRegion.updateGet(); + //this.metricsRegion.updateGet(); return results; } @@ -4657,7 +4657,7 @@ public class HRegion implements HeapSize { // , Writable{ closeRegionOperation(); } - this.metricsRegion.updateAppend(); + //this.metricsRegion.updateAppend(); if (flush) { @@ -4795,7 +4795,7 @@ public class HRegion implements HeapSize { // , Writable{ mvcc.completeMemstoreInsert(w); } closeRegionOperation(); - this.metricsRegion.updateIncrement(); + //this.metricsRegion.updateIncrement(); } if (flush) { {noformat} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira