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

stack commented on HBASE-20312:
-------------------------------

I tried to deploy it to get some numbers but go stuck here:

{code}
275291 2018-04-02 21:17:57,569 INFO  [StoreOpener-1588230740-1] 
regionserver.HStore: Memstore class name is 
org.apache.hadoop.hbase.regionserver.DefaultMemStore ; 
parallelPutCountPrintThreshold=50
275292 2018-04-02 21:17:57,576 DEBUG [RS_OPEN_META-regionserver/ve0528:16020-0] 
regionserver.HRegion: Found 1 recovered edits file(s) under 
hdfs://ve0524.halxg.cloudera.com:8020/hbase/data/hbase/meta/1588230740
275293 2018-04-02 21:17:57,579 INFO  [RS_OPEN_META-regionserver/ve0528:16020-0] 
regionserver.HRegion: Replaying edits from 
hdfs://ve0524.halxg.cloudera.com:8020/hbase/data/hbase/meta/1588230740/recovered.edits/0000000000000000918
275294 2018-04-02 21:17:57,586 ERROR [RS_OPEN_META-regionserver/ve0528:16020-0] 
handler.OpenRegionHandler: Failed open of region=hbase:meta,,1.1588230740, 
starting to roll back the global memstore size.
275295 java.lang.NullPointerException
275296   at 
org.apache.hadoop.hbase.regionserver.MemStoreLABImpl.getOrMakeChunk(MemStoreLABImpl.java:273)
275297   at 
org.apache.hadoop.hbase.regionserver.MemStoreLABImpl.copyCellInto(MemStoreLABImpl.java:148)
275298   at 
org.apache.hadoop.hbase.regionserver.MemStoreLABImpl.copyCellInto(MemStoreLABImpl.java:111)
275299   at 
org.apache.hadoop.hbase.regionserver.Segment.maybeCloneWithAllocator(Segment.java:178)
275300   at 
org.apache.hadoop.hbase.regionserver.AbstractMemStore.maybeCloneWithAllocator(AbstractMemStore.java:298)
275301   at 
org.apache.hadoop.hbase.regionserver.AbstractMemStore.add(AbstractMemStore.java:118)
275302   at org.apache.hadoop.hbase.regionserver.HStore.add(HStore.java:716)
275303   at 
org.apache.hadoop.hbase.regionserver.HRegion.restoreEdit(HRegion.java:5554)
275304   at 
org.apache.hadoop.hbase.regionserver.HRegion.replayRecoveredEdits(HRegion.java:4668)
275305   at 
org.apache.hadoop.hbase.regionserver.HRegion.replayRecoveredEditsIfAny(HRegion.java:4464)
275306   at 
org.apache.hadoop.hbase.regionserver.HRegion.initializeRegionInternals(HRegion.java:914)
275307   at 
org.apache.hadoop.hbase.regionserver.HRegion.initialize(HRegion.java:877)
275308   at 
org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:7100)
275309   at 
org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:7058)
275310   at 
org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:7029)
275311   at 
org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:6985)
275312   at 
org.apache.hadoop.hbase.regionserver.HRegion.openHRegion(HRegion.java:6936)
275313   at 
org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler.openRegion(OpenRegionHandler.java:284)
275314   at 
org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler.process(OpenRegionHandler.java:109)
275315   at 
org.apache.hadoop.hbase.executor.EventHandler.run(EventHandler.java:104)
275316   at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
275317   at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
275318   at java.lang.Thread.run(Thread.java:748)
{code}

The RS wouldn't deploy regions. I'll try again in a while when I can start from 
scratch with clean setup.... Thanks.

> CCSMap: A faster, GC-friendly, less memory Concurrent Map for memstore
> ----------------------------------------------------------------------
>
>                 Key: HBASE-20312
>                 URL: https://issues.apache.org/jira/browse/HBASE-20312
>             Project: HBase
>          Issue Type: New Feature
>          Components: regionserver
>            Reporter: Xiang Wang
>            Assignee: Chance Li
>            Priority: Major
>             Fix For: 3.0.0
>
>         Attachments: HBASE-20312-1.3.2.patch, HBASE-20312-master.v1.patch, 
> HBASE-20312-master.v2.patch, HBASE-20312-master.v3.patch, 
> ccsmap-branch-1.1.patch, jira1.png, jira2.png, jira3.png
>
>
> Now hbase use ConcurrentSkipListMap as memstore's data structure.
> Although MemSLAB reduces memory fragment brought by key-value pairs.
> Hundred of millions key-value pairs still make young generation 
> garbage-collection(gc) stop time long.
>  
> These are 2 gc problems of ConcurrentSkipListMap:
> 1. HBase needs 3 objects to store one key-value on expectation. One 
> Index(skiplist's average node height is 1), one Node, and one KeyValue. Too 
> many objects are created for memstore.
> 2. Recent inserted KeyValue and its map structure(Index, Node) are assigned 
> on young generation.The card table (for CMS gc algorithm) or RSet(for G1 gc 
> algorithm) will change frequently on high writing throughput, which makes YGC 
> slow.
>  
> We devleoped a new skip-list map called CompactdConcurrentSkipListMap(CCSMap 
> for short),
> which provides similary features like ConcurrentSkipListMap but get rid of 
> Objects for every key-value pairs.
> CCSMap's memory structure is like this picture:
> !jira1.png!
>  
> One CCSMap consists of a certain number of Chunks. One Chunk consists of a 
> certain number of nodes. One node is corresspding one element. This element's 
> all information and its key-value is encoded on a continuous memory segment 
> without any objects.
> Features:
> 1. all insert,update,delete operations is lock-free on CCSMap.
> 2. Consume less memory, it brings 40% memory saving for 50Byte key-value.
> 3. Faster on small key-value because of better cacheline usage. 20~30% better 
> read/write troughput than ConcurrentSkipListMap for 50Byte key-value.
> CCSMap do not support recyle space when deleting element. But it doesn't 
> matter for hbase because of region flush.
> CCSMap has been running on Alibaba's hbase clusters over 17 months, it cuts 
> down YGC time significantly. here are 2 graph of before and after.
> !jira2.png!
> !jira3.png!
>  
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to