[ 
https://issues.apache.org/jira/browse/HADOOP-2585?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Konstantin Shvachko updated HADOOP-2585:
----------------------------------------

    Attachment: SecondaryStorage.patch

The main features in this patch.
# "-importCheckpoint" argument is introduced for the name-node startup. Started 
with this argument 
#- The name-node will try to load image from the directory specified in 
"fs.checkpoint.dir" and save it to 
name-node storage directory(s) set in "dfs.name.dir;
#- The name-node will fail if a legal image is contained in "dfs.name.dir";
#- The name-node verifies that the image in "fs.checkpoint.dir" is consistent, 
but does not modify it in any way.
# secondary node storage directory structure is standardized to match the 
primary node directory structure.
As a consequence we get protection
#- from accidentally starting multiple secondary nodes in the same directory
#- starting primary and secondary in the same directory.
#- The primary can be started directly with the checkpointed storage if 
necessary.
# The checkpoint directory contains now 2 last images: "current" has the most 
recent image, and
"previous.checkpoint" has the previous one, which (as I understand it) was 
proposed in HADOOP-2987.
# When the checkpoint starts the name-node sends a CheckpointSignature to the 
secondary which contains all 
important information about the name space: layout version, namespaceID, 
creation time, and length of the edits log file.
Information if verified by both nodes, and serves as a confirmation that a) the 
image is merged correctly, and
b) that the name-node is receiving the right image when it downloads it back 
from the secondary.
We can later extend it this class with fsimage crcs.
# ClientProtocol is changed as a result of that. rollEditLog() returns the 
signature instead of just the length of the edits file.
# The primary and Secondary nodes used to have 2 separate servlets for 
transferring images.
The problem was that the primary and the secondary were the same 
web-application in the servlet container.
I registered secondary under "webapps/secondary" and unified the 
GetImageServlet so that it is used for both nodes.
# All logic related to image transferring servlet moved from the NameNode class 
directly to FSImage.
# I fixed the bug described in HADOOP-3069.
# TestCheckpoint is substantially modified to cover all new cases of failure.
Particularly, I included the test case for HADOOP-3069, which fails with old 
code and does not with the new one.
# StringUtils is extended with getStringCollection(String str) method which 
splits of comma delimited string 
and returns a collection rather than an array of Strings as getStrings() does.

> Automatic namespace recovery from the secondary image.
> ------------------------------------------------------
>
>                 Key: HADOOP-2585
>                 URL: https://issues.apache.org/jira/browse/HADOOP-2585
>             Project: Hadoop Core
>          Issue Type: New Feature
>          Components: dfs
>    Affects Versions: 0.15.0
>            Reporter: Konstantin Shvachko
>         Attachments: SecondaryStorage.patch
>
>
> Hadoop has a three way (configuration controlled) protection from loosing the 
> namespace image.
> # image can be replicated on different hard-drives of the same node;
> # image can be replicated on a nfs mounted drive on an independent node;
> # a stale replica of the image is created during periodic checkpointing and 
> stored on the secondary name-node.
> Currently during startup the name-node examines all configured storage 
> directories, selects the
> most up to date image, reads it, merges with the corresponding edits, and 
> writes to the new image back 
> into all storage directories. Everything is done automatically.
> If due to multiple hardware failures none of those images on mounted hard 
> drives (local or remote) 
> are available the secondary image although stale (up to one hour old by 
> default) can be still 
> used in order to recover the majority of the file system data.
> Currently one can reconstruct a valid name-node image from the secondary one 
> manually.
> It would be nice to support an automatic recovery.

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

Reply via email to