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

Edward Bortnikov commented on HDFS-7244:
----------------------------------------

Colin,

As a matter of fact, Daryn Sharp is working on committing HDFS-6658 and the 
subtasks to the trunk. This is a fairly self-contained and stable code, of 
independent value. I'd suggest to check it in independently. Daryn - please 
chime in, you are the committer. 

> Reduce Namenode memory using Flyweight pattern
> ----------------------------------------------
>
>                 Key: HDFS-7244
>                 URL: https://issues.apache.org/jira/browse/HDFS-7244
>             Project: Hadoop HDFS
>          Issue Type: Improvement
>          Components: namenode
>            Reporter: Amir Langer
>
> Using the flyweight pattern can dramatically reduce memory usage in the 
> Namenode. The pattern also abstracts the actual storage type and allows the 
> decision of whether it is off-heap or not and what is the serialisation 
> mechanism to be configured per deployment. 
> The idea is to move all BlockInfo data (as a first step) to this storage 
> using the Flyweight pattern. The cost to doing it will be in higher latency 
> when accessing/modifying a block. The idea is that this will be offset with a 
> reduction in memory and in the case of off-heap, a dramatic reduction in 
> memory (effectively, memory used for BlockInfo would reduce to a very small 
> constant value).
> This reduction will also have an huge impact on the latency as GC pauses will 
> be reduced considerably and may even end up with better latency results than 
> the original code.
> I wrote a stand-alone project as a proof of concept, to show the pattern, the 
> data structure we can use and what will be the performance costs of this 
> approach.
> see [Slab|https://github.com/langera/slab]
> and [Slab performance 
> results|https://github.com/langera/slab/wiki/Performance-Results].
> Slab abstracts the storage, gives several storage implementations and 
> implements the flyweight pattern for the application (Namenode in our case).
> The stages to incorporate Slab into the Namenode is outlined in the sub-tasks 
> JIRAs.



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

Reply via email to