hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "nkeywal (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-7220) Creating a table with 3000 regions on 2 nodes fails after 1 hour
Date Tue, 27 Nov 2012 08:25:59 GMT

    [ https://issues.apache.org/jira/browse/HBASE-7220?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13504448#comment-13504448
] 

nkeywal commented on HBASE-7220:
--------------------------------

Thanks Elliott!

HRegionobjects are created also in the master before being given to regionservers. Do we need
to create the region statistics in this case? There are already the coprocessors that are
taking this into account in the constructor:

{code}
if (rsServices != null) {
  this.rsAccounting = this.rsServices.getRegionServerAccounting();
   // don't initialize coprocessors if not running within a regionserver
   // TODO: revisit if coprocessors should load in other cases
   this.coprocessorHost = new RegionCoprocessorHost(this, rsServices, conf);
}
{code}

                
> 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
>            Reporter: nkeywal
>            Assignee: Elliott Clark
>         Attachments: HBASE-7220-0.patch
>
>
> 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

Mime
View raw message