Return-Path: X-Original-To: apmail-hbase-dev-archive@www.apache.org Delivered-To: apmail-hbase-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 33D4010B44 for ; Thu, 1 Aug 2013 18:11:17 +0000 (UTC) Received: (qmail 2163 invoked by uid 500); 1 Aug 2013 18:11:16 -0000 Delivered-To: apmail-hbase-dev-archive@hbase.apache.org Received: (qmail 1894 invoked by uid 500); 1 Aug 2013 18:11:15 -0000 Mailing-List: contact dev-help@hbase.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@hbase.apache.org Delivered-To: mailing list dev@hbase.apache.org Received: (qmail 1885 invoked by uid 99); 1 Aug 2013 18:11:14 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 01 Aug 2013 18:11:14 +0000 X-ASF-Spam-Status: No, hits=2.7 required=5.0 tests=HTML_MESSAGE,MISSING_HEADERS,RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of vladrodionov@gmail.com designates 209.85.128.41 as permitted sender) Received: from [209.85.128.41] (HELO mail-qe0-f41.google.com) (209.85.128.41) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 01 Aug 2013 18:11:08 +0000 Received: by mail-qe0-f41.google.com with SMTP id a11so1317438qen.14 for ; Thu, 01 Aug 2013 11:10:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:cc :content-type; bh=dte3SamKguwDR87iojbv1AfeDabE8IW8pE/HsM24S9g=; b=S14cV2+uYvYyxdSs0vpI8vTt6IERvvt2UGgGKM/h4YDzpptn9Udvr49nOdl74vW8Jg PecKNRtfBadmuanY9r+i6DxwCfeNHjm/+auUJUhvZpY7ljYFs8KbMRkPB3X3A8852+0O JLavUsW7zcRmHil47DPzs8cm833XBd+0GawsHy7X9wWarw9oPiPqqfiWSffeSUdI3gp6 WOZ2uUY9OAfdPH2ZIrg7XIS291ZWV6W/zeQ4US2cWydhL7M/wvXez3dy9C4BECHhFvtG AopbTTq7tpnndYyy/pHpJtaQdrhyt0ef3quNToDuINcEd07jtL3jNXXWVHITks3M9Pxb j70A== MIME-Version: 1.0 X-Received: by 10.49.117.165 with SMTP id kf5mt5017750qeb.9.1375380647918; Thu, 01 Aug 2013 11:10:47 -0700 (PDT) Received: by 10.49.18.98 with HTTP; Thu, 1 Aug 2013 11:10:47 -0700 (PDT) In-Reply-To: References: <1375217418.48997.YahooMailNeo@web140603.mail.bf1.yahoo.com> Date: Thu, 1 Aug 2013 11:10:47 -0700 Message-ID: Subject: Re: HBase read perfomnance and HBase client From: Vladimir Rodionov Cc: "dev@hbase.apache.org" , lars hofhansl Content-Type: multipart/alternative; boundary=047d7b66effbf3f7bb04e2e6c23c X-Virus-Checked: Checked by ClamAV on apache.org --047d7b66effbf3f7bb04e2e6c23c Content-Type: text/plain; charset=ISO-8859-1 2x1Gb bonded, I think. This is our standard config. On Thu, Aug 1, 2013 at 10:27 AM, Michael Segel wrote: > Network? 1GbE or 10GbE? > > Sent from a remote device. Please excuse any typos... > > Mike Segel > > On Jul 31, 2013, at 9:27 PM, "Vladimir Rodionov" > wrote: > > > Some final numbers : > > > > Test config: > > > > HBase 0.94.6 > > blockcache=true, block size = 64K, KV size = 62 bytes (raw). > > > > 5 Clients: 96GB, 16(32) CPUs (2.2Ghz), CentOS 5.7 > > 1 RS Server: the same config. > > > > Local network with ping between hosts: 0.1 ms > > > > > > 1. HBase client hits the wall at ~ 50K per sec regardless of # of CPU, > > threads, IO pool size and other settings. > > 2. HBase server was able to sustain 170K per sec (with 64K block size). > All > > from block cache. KV size = 62 bytes (very small). This is for single Get > > op, 60 threads per client, 5 clients (on different hosts) > > 3. Multi - get hits the wall at the same 170K-200K per sec. Batch size > > tested: 30, 100. The same performance absolutely as with batch size = 1. > > Multi get has some internal issues on RegionServer side. May be excessive > > locking or some thing else. > > > > > > > > > > > > On Tue, Jul 30, 2013 at 2:01 PM, Vladimir Rodionov > > wrote: > > > >> 1. SCR are enabled > >> 2. Single Configuration for all table did not work well, but I will try > it > >> again > >> 3. With Nagel I had 0.8ms avg, w/o - 0.4ms - I see the difference > >> > >> > >> On Tue, Jul 30, 2013 at 1:50 PM, lars hofhansl > wrote: > >> > >>> With Nagle's you'd see something around 40ms. You are not saying 0.8ms > >>> RTT is bad, right? Are you seeing ~40ms latencies? > >>> > >>> This thread has gotten confusing. > >>> > >>> I would try these: > >>> * one Configuration for all tables. Or even use a single > >>> HConnection/Threadpool and use the HTable(byte[], HConnection, > >>> ExecutorService) constructor > >>> * disable Nagle's: set both ipc.server.tcpnodelay and > >>> hbase.ipc.client.tcpnodelay to true in hbase-site.xml (both client > *and* > >>> server) > >>> * increase hbase.client.ipc.pool.size in client's hbase-site.xml > >>> * enable short circuit reads (details depend on exact version of > Hadoop). > >>> Google will help :) > >>> > >>> -- Lars > >>> > >>> > >>> ----- Original Message ----- > >>> From: Vladimir Rodionov > >>> To: dev@hbase.apache.org > >>> Cc: > >>> Sent: Tuesday, July 30, 2013 1:30 PM > >>> Subject: Re: HBase read perfomnance and HBase client > >>> > >>> This hbase.ipc.client.tcpnodelay (default - false) explains poor single > >>> thread performance and high latency ( 0.8ms in local network)? > >>> > >>> > >>> On Tue, Jul 30, 2013 at 1:22 PM, Vladimir Rodionov > >>> wrote: > >>> > >>>> One more observation: One Configuration instance per HTable gives 50% > >>>> boost as compared to single Configuration object for all HTable's - > from > >>>> 20K to 30K > >>>> > >>>> > >>>> On Tue, Jul 30, 2013 at 1:17 PM, Vladimir Rodionov < > >>> vladrodionov@gmail.com > >>>>> wrote: > >>>> > >>>>> This thread dump has been taken when client was sending 60 requests > in > >>>>> parallel (at least, in theory). There are 50 server handler threads. > >>>>> > >>>>> > >>>>> On Tue, Jul 30, 2013 at 1:15 PM, Vladimir Rodionov < > >>>>> vladrodionov@gmail.com> wrote: > >>>>> > >>>>>> Sure, here it is: > >>>>>> > >>>>>> http://pastebin.com/8TjyrKRT > >>>>>> > >>>>>> epoll is not only to read/write HDFS but to connect/listen to > clients > >>> as > >>>>>> well? > >>>>>> > >>>>>> > >>>>>> On Tue, Jul 30, 2013 at 12:31 PM, Jean-Daniel Cryans < > >>>>>> jdcryans@apache.org> wrote: > >>>>>> > >>>>>>> Can you show us what the thread dump looks like when the threads > are > >>>>>>> BLOCKED? There aren't that many locks on the read path when reading > >>>>>>> out of the block cache, and epoll would only happen if you need to > >>> hit > >>>>>>> HDFS, which you're saying is not happening. > >>>>>>> > >>>>>>> J-D > >>>>>>> > >>>>>>> On Tue, Jul 30, 2013 at 12:16 PM, Vladimir Rodionov > >>>>>>> wrote: > >>>>>>>> I am hitting data in a block cache, of course. The data set is > very > >>>>>>> small > >>>>>>>> to fit comfortably into block cache and all request are directed > to > >>>>>>> the > >>>>>>>> same Region to guarantee single RS testing. > >>>>>>>> > >>>>>>>> To Ted: > >>>>>>>> > >>>>>>>> Yes, its CDH 4.3 . What the difference between 94.10 and 94.6 with > >>>>>>> respect > >>>>>>>> to read performance? > >>>>>>>> > >>>>>>>> > >>>>>>>> On Tue, Jul 30, 2013 at 12:06 PM, Jean-Daniel Cryans < > >>>>>>> jdcryans@apache.org>wrote: > >>>>>>>> > >>>>>>>>> That's a tough one. > >>>>>>>>> > >>>>>>>>> One thing that comes to mind is socket reuse. It used to come up > >>> more > >>>>>>>>> more often but this is an issue that people hit when doing loads > >>> of > >>>>>>>>> random reads. Try enabling tcp_tw_recycle but I'm not > guaranteeing > >>>>>>>>> anything :) > >>>>>>>>> > >>>>>>>>> Also if you _just_ want to saturate something, be it CPU or > >>> network, > >>>>>>>>> wouldn't it be better to hit data only in the block cache? This > >>> way > >>>>>>> it > >>>>>>>>> has the lowest overhead? > >>>>>>>>> > >>>>>>>>> Last thing I wanted to mention is that yes, the client doesn't > >>> scale > >>>>>>>>> very well. I would suggest you give the asynchbase client a run. > >>>>>>>>> > >>>>>>>>> J-D > >>>>>>>>> > >>>>>>>>> On Tue, Jul 30, 2013 at 11:23 AM, Vladimir Rodionov > >>>>>>>>> wrote: > >>>>>>>>>> I have been doing quite extensive testing of different read > >>>>>>> scenarios: > >>>>>>>>>> > >>>>>>>>>> 1. blockcache disabled/enabled > >>>>>>>>>> 2. data is local/remote (no good hdfs locality) > >>>>>>>>>> > >>>>>>>>>> and it turned out that that I can not saturate 1 RS using one > >>>>>>>>> (comparable in CPU power and RAM) client host: > >>>>>>>>>> > >>>>>>>>>> I am running client app with 60 read threads active (with > >>>>>>> multi-get) > >>>>>>>>> that is going to one particular RS and > >>>>>>>>>> this RS's load is 100 -150% (out of 3200% available) - it means > >>>>>>> that > >>>>>>>>> load is ~5% > >>>>>>>>>> > >>>>>>>>>> All threads in RS are either in BLOCKED (wait) or in IN_NATIVE > >>>>>>> states > >>>>>>>>> (epoll) > >>>>>>>>>> > >>>>>>>>>> I attribute this to the HBase client implementation which seems > >>>>>>> to be > >>>>>>>>> not scalable (I am going dig into client later on today). > >>>>>>>>>> > >>>>>>>>>> Some numbers: The maximum what I could get from Single get (60 > >>>>>>> threads): > >>>>>>>>> 30K per sec. Multiget gives ~ 75K (60 threads) > >>>>>>>>>> > >>>>>>>>>> What are my options? I want to measure the limits and I do not > >>>>>>> want to > >>>>>>>>> run Cluster of clients against just ONE Region Server? > >>>>>>>>>> > >>>>>>>>>> RS config: 96GB RAM, 16(32) CPU > >>>>>>>>>> Client : 48GB RAM 8 (16) CPU > >>>>>>>>>> > >>>>>>>>>> Best regards, > >>>>>>>>>> Vladimir Rodionov > >>>>>>>>>> Principal Platform Engineer > >>>>>>>>>> Carrier IQ, www.carrieriq.com > >>>>>>>>>> e-mail: vrodionov@carrieriq.com > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> Confidentiality Notice: The information contained in this > >>> message, > >>>>>>>>> including any attachments hereto, may be confidential and is > >>>>>>> intended to be > >>>>>>>>> read only by the individual or entity to whom this message is > >>>>>>> addressed. If > >>>>>>>>> the reader of this message is not the intended recipient or an > >>> agent > >>>>>>> or > >>>>>>>>> designee of the intended recipient, please note that any review, > >>> use, > >>>>>>>>> disclosure or distribution of this message or its attachments, in > >>>>>>> any form, > >>>>>>>>> is strictly prohibited. If you have received this message in > >>> error, > >>>>>>> please > >>>>>>>>> immediately notify the sender and/or > Notifications@carrieriq.comand > >>>>>>>>> delete or destroy any copy of this message and its attachments. > >> > --047d7b66effbf3f7bb04e2e6c23c--