Hi, JM & everyone! 

Thanks for your reply!

My java client, use the HTable#put(Put) method with 2M buffer to commit rows.
While the client running for a while, the jvisualvm shows the htable threads 
increasing and the heap size increased too.
Here is the snapshot:


i research the implementation of the HTable#put(Put).
I found the doPut operation is the async, and when one row success, this will 
return.

So, I guess when the HBase server is slower to response the put request.
The hbase client will accumulate so many rows.
And on the other hand, when the put operation failed, the hbase client will 
retry with the recursion submit method.

I think the above two is the reason caused the OOME.


PS:
What do you mean It's not cdh5 specific? I found it from the website 
http://archive.cloudera.com/cdh5/cdh/5/hbase-0.96.1.1-cdh5.0.0/ 
Where can i get the CDH5 source code ? 
CDH5 means hbase 0.96.2?
I'm confused with the CDH5, Apache, Phoenix ... 
What's the relationship among them.

Thanks a lot!

Best regards!




Jingych

From: Jean-Marc Spaggiari
Date: 2014-05-23 09:33
To: user; jingych
Subject: Re: CDH5 hbase client outofmemory
Hi Jingych,


This is the HBase 0.96.2 code. Not CDH5 specific. Do you have more details on 
you OOME? Did you figured why it occured?

JM




2014-05-22 1:20 GMT-04:00 jingych <jing...@neusoft.com>:

Hello, everyone!

I found the CDH5 hbase client swallowed the Outofmemory exception.

It didn't throw out, cause the program couldn't make the correct response to 
process the OOM.

Is't good to catch the client OOM? Why?

The CDH5 hbase client process the throwable code:
private boolean manageError(int originalIndex, Row row, boolean canRetry,
                              Throwable throwable, HRegionLocation location) {
    if (canRetry && throwable != null && throwable instanceof 
DoNotRetryIOException) {
      canRetry = false;
    }

    byte[] region = null;
    if (canRetry && callback != null) {
      region = location == null ? null : 
location.getRegionInfo().getEncodedNameAsBytes();
      canRetry = callback.retriableFailure(originalIndex, row, region, 
throwable);
    }

    if (!canRetry) {
      if (callback != null) {
        if (region == null && location != null) {
          region = location.getRegionInfo().getEncodedNameAsBytes();
        }
        callback.failure(originalIndex, region, row, throwable);
      }
      errors.add(throwable, row, location);
      this.hasError.set(true);
    }

    return canRetry;
  }

This will treat the OOM as the canRetry exception.

Thanks!

Best Regards!




jingych
---------------------------------------------------------------------------------------------------
Confidentiality Notice: The information contained in this e-mail and any 
accompanying attachment(s)
is intended only for the use of the intended recipient and may be confidential 
and/or privileged of
Neusoft Corporation, its subsidiaries and/or its affiliates. If any reader of 
this communication is
not the intended recipient, unauthorized use, forwarding, printing,  storing, 
disclosure or copying
is strictly prohibited, and may be unlawful.If you have received this 
communication in error,please
immediately notify the sender by return e-mail, and delete the original message 
and all copies from
your system. Thank you.
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
Confidentiality Notice: The information contained in this e-mail and any 
accompanying attachment(s) 
is intended only for the use of the intended recipient and may be confidential 
and/or privileged of 
Neusoft Corporation, its subsidiaries and/or its affiliates. If any reader of 
this communication is 
not the intended recipient, unauthorized use, forwarding, printing,  storing, 
disclosure or copying 
is strictly prohibited, and may be unlawful.If you have received this 
communication in error,please 
immediately notify the sender by return e-mail, and delete the original message 
and all copies from 
your system. Thank you. 
---------------------------------------------------------------------------------------------------

Reply via email to