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

ramkrishna.s.vasudevan commented on HBASE-14921:
------------------------------------------------


Did the testing with compacting memstore. 
Based on our write path offheaping work we had arrived at certain config params 
and gc tuning.
Onheap case : Xmx : 32  G
Offheap case Xmx : 12 G
Offheap memory for memstore : 32 G

global memstore size : 0.42
GC - G1GC
"-XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:InitiatingHeapOccupancyPercent=60 
-XX:G1HeapWastePercent=20  -XX:G1MixedGCCountTarget=8"

PE :  ./hbase org.apache.hadoop.hbase.PerformanceEvaluation --nomapred 
--presplit=50 --size=150 --columns=50 --valueSize=200 --writeToWAL=false 
--bloomFilter=NONE --inmemoryCompaction=false/true  randomWrite 50

We were able to run and get results for the default memstore (onheap), default 
memstore(offheap), Pipelinememstore (Internal impl where all segments are 
flushed with no in memory compaction) - flatten to ARRAY_MAP and flatten to 
CHUNK_MAP.

But with compacting memstore we are not able to run and get results as with the 
offheap case 12G is just not enough because we have duplicates while doing in 
memory compaction. The segments are read once again to create a compacted 
segment and it is creating lot of garbage and more memory need.

With onheap case I increased the heap size to 50G (as with 32G I was not able 
to run) still the compaction was taking lot of memory and most importantly the 
disk flushes and disk compactions were getting piled up and finally got 'Too 
many open files' exception.

So I copied the latest trunk patch and gave a run and it had other exception 
due to invalid region size settings as it was going negative. 
{code}
2016-07-22 16:14:51,066 ERROR 
[RpcServer.FifoWFPBQ.default.handler=60,queue=0,port=16041-inmemoryCompactions-1469184056544]
 regionserver.HRegion: Asked to modify this region's 
(TestTable,00000000000000000005033136,1469184040624.26d47b5614da8885fd0768b66a5d6457.)
 memstoreSize to a negative value which is incorrect. Current 
memstoreSize=33534312, delta=-33570288
java.lang.Exception
        at 
org.apache.hadoop.hbase.regionserver.HRegion.addAndGetGlobalMemstoreSize(HRegion.java:1125)
        at 
org.apache.hadoop.hbase.regionserver.RegionServicesForStores.addAndGetGlobalMemstoreSize(RegionServicesForStores.java:72)
        at 
org.apache.hadoop.hbase.regionserver.CompactionPipeline.swap(CompactionPipeline.java:111)
        at 
org.apache.hadoop.hbase.regionserver.CompactingMemStore.swapCompactedSegments(CompactingMemStore.java:208)
        at 
org.apache.hadoop.hbase.regionserver.MemStoreCompactor.doCompaction(MemStoreCompactor.java:173)
        at 
org.apache.hadoop.hbase.regionserver.MemStoreCompactor.start(MemStoreCompactor.java:114)
        at 
org.apache.hadoop.hbase.regionserver.CompactingMemStore.flushInMemory(CompactingMemStore.java:311)
        at 
org.apache.hadoop.hbase.regionserver.CompactingMemStore$InMemoryFlushRunnable.run(CompactingMemStore.java:384)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
{code}

So in order to avoid compaction I just ensure that only flattening happens 
(because in the default case that is what you are trying to do). Even here the 
problem is that since only the flush happens on the tail part we keep 
pressurizing the memstore and we have lot of blocked regions. Also the tail 
flush is creating lot of small files and this is leading to more compactions 
and hence  again getting 'Too  many file open' exception. 

When i did the above change to the offheap memstore (allow only flattening) 
case the problem is similar but here the tests are taking longer time to 
complete as every time only a small portion of the memstore is getting flushed 
out. 

So we feel that if we go only with flattening then we should ensure that entire 
segments in pipeline has to be flushed.


> Memory optimizations
> --------------------
>
>                 Key: HBASE-14921
>                 URL: https://issues.apache.org/jira/browse/HBASE-14921
>             Project: HBase
>          Issue Type: Sub-task
>    Affects Versions: 2.0.0
>            Reporter: Eshcar Hillel
>            Assignee: Anastasia Braginsky
>         Attachments: CellBlocksSegmentInMemStore.pdf, 
> CellBlocksSegmentinthecontextofMemStore(1).pdf, HBASE-14921-V01.patch, 
> HBASE-14921-V02.patch, HBASE-14921-V03.patch, HBASE-14921-V04-CA-V02.patch, 
> HBASE-14921-V04-CA.patch, HBASE-14921-V05-CAO.patch, 
> HBASE-14921-V06-CAO.patch, InitialCellArrayMapEvaluation.pdf, 
> IntroductiontoNewFlatandCompactMemStore.pdf
>
>
> Memory optimizations including compressed format representation and offheap 
> allocations



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to