hadoop-common-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tsz Wo (Nicholas), SZE (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HADOOP-3364) Faster image and log edits loading.
Date Fri, 09 May 2008 00:16:55 GMT

    [ https://issues.apache.org/jira/browse/HADOOP-3364?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12595434#action_12595434
] 

Tsz Wo (Nicholas), SZE commented on HADOOP-3364:
------------------------------------------------

fastLoadImage.patch simplifies the image reading codes a lot.  We should do something similar
for writing.  Here are some comments:

# check whether LOG.isDebugEnabled() before calling LOG.debug(...).
# keep NodeIterator private by defining a method BlockInfo.iterater().
# In FSDirectory.closeFile(...), remove local variable fileNode.  Also, do we need "synchronized
(rootDir)" there?
# In FSDirectory.addToParent(...), remove "parentINode = newParent;" and return newParent.
# Make FSImage.uStr final.  Initialize FSImage.uStr.bytes to a large enough array.
# Define a static final field EMPTY_ARRAY = new DatanodeDescriptor[0] in DatanodeDescriptor.
 Then, change "lastLocations = new DatanodeDescriptor[0];" to
lastLocations = DatanodeDescriptor.EMPTY_ARRAY;" in case OP_CLOSE.
# For case OP_SET_GENSTAMP, call in.readLong() directly.
# In FSImage, change saveImage(..., INode current, ...) to saveImage(..., INodeDirectory curDir,
...) since current always is a directory
# In INode, remove isRoot and getParentINode since they are not used.
# Add comments saying that FSDirectory/INodeDirectory.addToParent(...) should only be used
in FSImage.
# Revert the change in LeaseManager.


> Faster image and log edits loading.
> -----------------------------------
>
>                 Key: HADOOP-3364
>                 URL: https://issues.apache.org/jira/browse/HADOOP-3364
>             Project: Hadoop Core
>          Issue Type: Improvement
>          Components: dfs
>    Affects Versions: 0.18.0
>            Reporter: Konstantin Shvachko
>            Assignee: Konstantin Shvachko
>             Fix For: 0.18.0
>
>         Attachments: fastLoadImage.patch
>
>
> This patch optimizes code to provide faster load of fsimage and edits log.
> I implemented ideas mentioned in HADOOP-3022. Namely, removed unnecessary object allocations,
> and implemented optimized loading which avoids unnecessary name-space tree lookups 
> if consecutive files belong to the same parent.
> I changed saveImage algorithm so that it writes first all children of the same directory,
> and then goes inside of its sub-directories. This does not change the format of the image,

> just changes the order of the stored objects. 
> This should make loading faster after the image is saved with the new version.
> The advantages in performance are
> load/save fsimage: 15-20%
> load edits: 5-10%
> In terms of performance I expected somewhat more from this changes.
> Especially for edits, but it turned out that recent changes substantially slowed down
> edits loading. ADD and CLOSE operations first remove existing file with all its blocks,
> then include at back with potentially new blocks, and then ADD additionally replaces
> just inserted inode by inode-under-construction for the same file.
> This is very inefficient, but hard to fix.
> I'll do it in a separate jira.
> Other changes:
> - I combined most of the UTF8 references in one place at least for FSImage.
> - Included log messages about the startup progress with load/save times and file sizes.
> - Removed pre-crc-upgrade code from FSEdits, which was missed by the crc-remove patch.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message