hbase-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gautam <gautamkows...@gmail.com>
Subject Re: Increasing write throughput..
Date Fri, 07 Nov 2014 16:26:08 GMT
Thanks for the comment.

ALTER 'msg', { MEMSTORE_FLUSHSIZE => '256MB' }

Now I get ~256MB memstore flushes. Although this still hasn't
increased the write throughput..

This is the stable state request counts per RS :
http://postimg.org/image/gbb5nf6d1

Avg regions per node: ~100

The table is constantly being major And minor compacted although i'v
turned off major compactions (hbase.hregion.majorcompaction  = 0)

What should I look at next?

Cheers,
-Gautam.




On Thu, Nov 6, 2014 at 1:45 AM, Qiang Tian <tianq01@gmail.com> wrote:
> just in case...did you set memstore flush size via HTableDescriptor?
>
>
> On Thu, Nov 6, 2014 at 8:52 AM, Gautam <gautamkowshik@gmail.com> wrote:
>
>> Thanks Anoop, Ted for the replies. This helped me understand Hbase's
>> write path a lot more.
>>
>> After going through the literature and your comments on "what triggers
>> memstore flushes",
>>
>> Did the following :
>>
>>  - Added 4 nodes ( all 8+4 = 12 RSs have 48000M heap each)
>>  - changed hbase.regionserver.maxlogs  = 150 (default 32)
>>  - hbase.hregion.memstore.flush.size = 536870912 ( as before )
>>  - hbase.hstore.blockingStoreFiles = 120
>>  - merged tiny/empty regions and brought down regions to 30% for this
>> table ( before: 1646 , after merge: ~600 )
>>  - lowerLimit/ upperLimit on memstore are defaults (0.38 , 0.4) , RS
>> MAX_HEAP_SIZE = 48000M
>>
>>
>> Snapshot of the HMaster RSs with req per sec [1]. Snapshot of hbase
>> tables: [2]. The region count per RS is now around 100 (evenly
>> distributed) and so are the requests per sec.
>>
>> Based on the memstore size math, the flush size should now be =
>> 48000*0.4/100 = 192M ? I still consistently see the memstore flushes
>> at ~128M.. it barely ever goes above that number. Also uploaded last
>> 1000 lines of RS log after above settings + restart [3]
>>
>> Here's the verbatim hbase-site.xml [4]
>>
>>
>> Cheers,
>> -Gautam.
>>
>> ====
>> [1] - postimg.org/image/t2cxb18sh
>> [2] - postimg.org/image/v3zaz9571
>> [3] - pastebin.com/HXK4s8zR
>> [4] - pastebin.com/av9XxecY
>>
>>
>>
>> On Sun, Nov 2, 2014 at 5:46 PM, Anoop John <anoop.hbase@gmail.com> wrote:
>> > You have ~280 regions per RS.
>> > And ur memstore size % is 40% and heap size 48GB
>> > This mean the heap size for memstore is 48 * 0.4 = 19.2GB  ( I am just
>> > considering the upper water mark alone)
>> >
>> > If u have to consider all 280 regions each with 512 MB heap you need much
>> > more size of heap.   And your writes are distributed to all regions
>> right?
>> >
>> > So you will be seeing flushes because of global heap pressure.
>> >
>> > Increasing the xmx and flush size alone wont help.  You need to consider
>> > the regions# and writes
>> >
>> > When you tune this the next step will be to tune the HLog and its
>> rolling.
>> > That depends on your cell size as well.
>> > By default when we reach 95% size of HDFS block size, we roll to a new
>> HLog
>> > file. And by default when we reach 32 Log files, we force flushes.  FYI.
>> >
>> > -Anoop-
>> >
>> >
>> > On Sat, Nov 1, 2014 at 10:54 PM, Ted Yu <yuzhihong@gmail.com> wrote:
>> >
>> >> Please read 9.7.7.2. MemStoreFlush under
>> >> http://hbase.apache.org/book.html#regions.arch
>> >>
>> >> Cheers
>> >>
>> >> On Fri, Oct 31, 2014 at 11:16 AM, Gautam Kowshik <
>> gautamkowshik@gmail.com>
>> >> wrote:
>> >>
>> >> > - Sorry bout the raw image upload, here’s the tsdb snapshot :
>> >> > http://postimg.org/image/gq4nf96x9/
>> >> > - Hbase version 98.1 (CDH 5.1 distro)
>> >> > - hbase-site pastebin : http://pastebin.com/fEctQ3im
>> >> > - this table ‘msg' has been pre-split with 240 regions and writes
are
>> >> > evenly distributed into 240 buckets. ( the bucket is a prefix to the
>> row
>> >> > key ) . These regions are well spread across the 8 RSs. Although over
>> >> time
>> >> > these 240 have split and now become 2440 .. each region server has
>> ~280
>> >> > regions.
>> >> > - last 500 lines of log from one RS : http://pastebin.com/8MwYMZPb
Al
>> >> > - no hot regions from what i can tell.
>> >> >
>> >> > One of my main concerns was why even after setting the memstore flush
>> >> size
>> >> > to 512M is it still flushing at 128M. Is there a setting i’v missed
?
>> I’l
>> >> > try to get more details as i find them.
>> >> >
>> >> > Thanks and Cheers,
>> >> > -Gautam.
>> >> >
>> >> > On Oct 31, 2014, at 10:47 AM, Stack <stack@duboce.net> wrote:
>> >> >
>> >> > > What version of hbase (later versions have improvements in write
>> >> > > throughput, especially when many writing threads).  Post a pastebin
>> of
>> >> > > regionserver log in steadystate if you don't mind.  About how
many
>> >> > writers
>> >> > > going into server at a time?  How many regions on server.  All
being
>> >> > > written to at same rate or you have hotties?
>> >> > > Thanks,
>> >> > > St.Ack
>> >> > >
>> >> > > On Fri, Oct 31, 2014 at 10:22 AM, Gautam <gautamkowshik@gmail.com>
>> >> > wrote:
>> >> > >
>> >> > >> I'm trying to increase write throughput of our hbase cluster.
we'r
>> >> > >> currently doing around 7500 messages per sec per node. I think
we
>> have
>> >> > room
>> >> > >> for improvement. Especially since the heap is under utilized
and
>> >> > memstore
>> >> > >> size doesn't seem to fluctuate much between regular and peak
>> ingestion
>> >> > >> loads.
>> >> > >>
>> >> > >> We mainly have one large table that we write most of the data
to.
>> >> Other
>> >> > >> tables are mainly opentsdb and some relatively small summary
>> tables.
>> >> > This
>> >> > >> table is read in batch once a day but otherwise is mostly
serving
>> >> writes
>> >> > >> 99% of the time. This large table has 1 CF and get's flushed
at
>> around
>> >> > >> ~128M fairly regularly like below..
>> >> > >>
>> >> > >> {log}
>> >> > >>
>> >> > >> 2014-10-31 16:56:09,499 INFO
>> >> > org.apache.hadoop.hbase.regionserver.HRegion:
>> >> > >> Finished memstore flush of ~128.2 M/134459888, currentsize=879.5
>> >> > K/900640
>> >> > >> for region
>> >> > >>
>> >> >
>> >>
>> msg,00102014100515impression\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x002014100515040200049358\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x004138647301\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0002e5a329d2171149bcc1e83ed129312b\x00\x00\x00\x00,1413909604591.828e03c0475b699278256d4b5b9638a2.
>> >> > >> in 640ms, sequenceid=16861176169, compaction requested=true
>> >> > >>
>> >> > >> {log}
>> >> > >>
>> >> > >> Here's a pastebin of my hbase site : http://pastebin.com/fEctQ3im
>> >> > >>
>> >> > >> What i'v tried..
>> >> > >> -  turned of major compactions , and handling these manually.
>> >> > >> -  bumped up heap Xmx from 24G to 48 G
>> >> > >> -  hbase.hregion.memstore.flush.size = 512M
>> >> > >> - lowerLimit/ upperLimit on memstore are defaults (0.38 ,
0.4)
>> since
>> >> the
>> >> > >> global heap has enough space to accommodate the default
>> percentages.
>> >> > >> - Currently running Hbase 98.1 on an 8 node cluster that's
scaled
>> up
>> >> to
>> >> > >> 128GB RAM.
>> >> > >>
>> >> > >>
>> >> > >> There hasn't been any appreciable increase in write perf.
Still
>> >> hovering
>> >> > >> around the 7500 per node write throughput number. The flushes
still
>> >> > seem to
>> >> > >> be hapenning at 128M (instead of the expected 512)
>> >> > >>
>> >> > >> I'v attached a snapshot of the memstore size vs. flushQueueLen.
the
>> >> > block
>> >> > >> caches are utilizing the extra heap space but not the memstore.
The
>> >> > flush
>> >> > >> Queue lengths have increased which leads me to believe that
it's
>> >> > flushing
>> >> > >> way too often without any increase in throughput.
>> >> > >>
>> >> > >> Please let me know where i should dig further. That's a long
email,
>> >> > thanks
>> >> > >> for reading through :-)
>> >> > >>
>> >> > >>
>> >> > >>
>> >> > >> Cheers,
>> >> > >> -Gautam.
>> >> > >>
>> >> >
>> >> >
>> >>
>>
>>
>>
>> --
>> "If you really want something in this life, you have to work for it.
>> Now, quiet! They're about to announce the lottery numbers..."
>>



-- 
"If you really want something in this life, you have to work for it.
Now, quiet! They're about to announce the lottery numbers..."

Mime
View raw message