Return-Path: X-Original-To: apmail-hbase-user-archive@www.apache.org Delivered-To: apmail-hbase-user-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id AFE9AD9D1 for ; Sat, 20 Oct 2012 01:16:25 +0000 (UTC) Received: (qmail 5907 invoked by uid 500); 20 Oct 2012 01:16:23 -0000 Delivered-To: apmail-hbase-user-archive@hbase.apache.org Received: (qmail 5861 invoked by uid 500); 20 Oct 2012 01:16:23 -0000 Mailing-List: contact user-help@hbase.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@hbase.apache.org Delivered-To: mailing list user@hbase.apache.org Received: (qmail 5853 invoked by uid 99); 20 Oct 2012 01:16:23 -0000 Received: from minotaur.apache.org (HELO minotaur.apache.org) (140.211.11.9) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 20 Oct 2012 01:16:23 +0000 Received: from localhost (HELO mail-oa0-f41.google.com) (127.0.0.1) (smtp-auth username apurtell, mechanism plain) by minotaur.apache.org (qpsmtpd/0.29) with ESMTP; Sat, 20 Oct 2012 01:16:23 +0000 Received: by mail-oa0-f41.google.com with SMTP id k14so1214157oag.14 for ; Fri, 19 Oct 2012 18:16:22 -0700 (PDT) MIME-Version: 1.0 Received: by 10.182.245.20 with SMTP id xk20mr1881449obc.89.1350695782334; Fri, 19 Oct 2012 18:16:22 -0700 (PDT) Received: by 10.60.170.167 with HTTP; Fri, 19 Oct 2012 18:16:22 -0700 (PDT) In-Reply-To: References: Date: Fri, 19 Oct 2012 18:16:22 -0700 Message-ID: Subject: Re: scaling a low latency service with HBase From: Andrew Purtell To: user@hbase.apache.org Content-Type: multipart/alternative; boundary=14dae93b608e4e3ffd04cc735e17 --14dae93b608e4e3ffd04cc735e17 Content-Type: text/plain; charset=ISO-8859-1 What Amandeep said, and also: You said your working set is randomly distributed but, if frequent invalidation isn't a concern and read accesses are still clustered temporally, an in-memory cache out in front of the cluster would smooth over periods when the disks are busy servicing MR workload or whatever else is going on. Another way of separating workloads. Regarding use of SSDs with HBase, this is an area I intend to get direct experience with soon, and will report back findings as they become available. On Fri, Oct 19, 2012 at 5:22 PM, Amandeep Khurana wrote: > Answers inline > > On Fri, Oct 19, 2012 at 4:31 PM, Dave Latham wrote: > > > I need to scale an internal service / datastore that is currently hosted > on > > an HBase cluster and wanted to ask for advice from anyone out there who > may > > have some to share. The service does simple key value lookups on 20 byte > > keys to 20-40 byte values. It currently has about 5 billion entries > > (200GB), and processes about 40k random reads per second, and about 2k > > random writes per second. It currently delivers a median response at > 2ms, > > 90% at 20ms, 99% at 200ms, 99.5% at 5000ms - but the mean is 58ms which > is > > no longer meeting our needs very well. It is persistent and highly > > available. I need to measure its working set more closely, but I believe > > that around 20-30% (randomly distributed) of the data is accessed each > > day. I want a system that can scale to at least 10x current levels (50 > > billion entries - 2TB, 400k requests per second) and achieve a mean < 5ms > > (ideally 1-2ms) and 99.5% < 50ms response time for reads while > maintaining > > persistence and reasonably high availability (99.9%). Writes would > ideally > > be in the same as range but we could probably tolerate a mean more in the > > 20-30ms range. > > > > Clearly for that latency, spinning disks won't cut it. The current > service > > is running out of an hbase cluster that is shared with many other things > > and when those other things hit the disk and network hard is when it > > degrades. The cluster has hundreds of nodes and this data is fits in a > > small slice of block cache across most of them. The concerns are that > its > > performance is impacted by other loads and that as it continues to grow > > there may not be enough space in the current cluster's shared block > cache. > > > > So I'm looking for something that will serve out of memory (backed by > disk > > for persistence) or from SSDs. A few questions that I would love to hear > > answers for: > > > > - Does HBase sound like a good match as this grows? > > > > Yes. The key to get more predictable performance is to separate out > workloads. What are the other things that are using the same physical > hardware and impacting performance? Have you measure performance when > nothing else is running on the cluster? > > > > - Does anyone have experience running HBase over SSDs? What sort of > > latency and requests per second have you been able to achieve? > > > > I don't believe many people are actually running this in production yet. > Some folks have done some research on this topic and posted blogs (eg: > http://hadoopblog.blogspot.com/2012/05/hadoop-and-solid-state-drives.html) > but there's not a whole lot more than that to go by at this point. > > > > - Is anyone using a row cache on top of (or built into) HBase? I think > > there's been a bit of discussion on occasion but it hasn't gone very far. > > There would be some overhead for each row. It seems that if we were to > > continue to rely on memory + disks this could reduce the memory required. > > - Does anyone have alternate suggestions for such a service? > > > > The biggest recommendation is to separate out the workloads and then start > planning for more hardware or additional components to get better > performance. > > > > Dave > > > -- Best regards, - Andy Problems worthy of attack prove their worth by hitting back. - Piet Hein (via Tom White) --14dae93b608e4e3ffd04cc735e17--