Professional Documents
Culture Documents
2013-07-29
DataNode
namenode namenode
DataNode
DataNode DataNode
DataNode ID
Hadoop
HADOOP_HOME/conf/hdfs-site.xml
<property>
<name>dfs.data.dir</name>
<value>/usr/local/hadoop/data1,/usr/local/hadoop/data2</value>
</property>
/usr/local/hadoop/data1/usr/local/hadoop/data2
2
drwxr-xr-x 6 hadoop hadoop 4096 4 26 15:11 .
drwxr-xr-x 24 hadoop hadoop 4096 4 19 14:26 ..
drwxrwxr-x 2 hadoop hadoop 4096 4 26 13:57 blocksBeingWritten
drwxrwxr-x 2 hadoop hadoop 4096 4 26 13:57 current
drwxrwxr-x 2 hadoop hadoop 4096 4 3 14:10 detach
-rw-rw-r-- 1 hadoop hadoop 157 4 3 14:10 storage
drwxrwxr-x 2 hadoop hadoop 4096 4 26 13:56 tmp
storage
in_use.lock
current current
detach snapshottmp
DataNode tmp
current
subdir0 subdir63
HDFS
HDFS
4 18 17:19 blk_8027040652559443757
4 18 17:19 blk_8027040652559443757_1055.meta
4 18 17:42 blk_-8559958631634410715
4 18 17:42 blk_-8559958631634410715_1071.meta
6 14 15:36 dncp_block_verification.log.curr
6 14 15:36 VERSION
80270406525594437578559958631634410715
ID 10551071
current
3
VERSION
dncp_block_verification.log.curr DataNode
DataNode HDFS
FORMAT("-format")
REGULAR("-regular")
UPGRADE("-upgrade")
ROLLBACK("-rollback")
FINALIZE("-finalize")
IMPORT("-importCheckpoint") Checkpoint
Hadoop
http://wiki.apache.org/hadoop/Hadoop_Upgradeupgrade
rollback
finalize
importCheckpoint NameNode
//
Hadoop
DataNode
// DataNode DataStorage
VERSION
NameNode DataNode
DataNode current
previous.tmp snapshot current VERSION
previous.tmp
current previous.tmp
current VERSION
previous.tmp previous
HDFS
previous
5
DataNode
DataNode
Hadoop Storage
DataNode block
Datanode block
_blk block .meta
meta file blokcFileName_generationStamp.meta
HDFS storage storage
Datanode storage Namenode storage storage
StorageInfo 3
public int layoutVersion; // Version read from the stored file.
public int namespaceID; // namespace id of the storage
public long cTime;
// creation timestamp
NON_EXISTENT
NOT_FORMATTED
COMPLETE_UPGRADEprevious.tmp current
RECOVER_UPGRADEprevious.tmp current
COMPLETE_FINALIZEfinalized.tmp current
7
StorageDirectory
current
previous
previous.tmp
removed.tmp
finalized.tmp
lastcheckpoint.tmp NameNode
previous.checkpoint NameNode
doRecover
RECOVER_UPGRADE
1. current->previous.tmp
2. current
3. previous.tmp->previous
StorageDirectory in_use.lock
/StorageDirectory lock
unlock
Storage StorageDirectory Storage
Block Block
blk_3148782637964391313
blk_3148782637964391313_242812.meta
blockId 3148782637964391313242812
numBytesBlock
current detach
snapshot
current
10
FSDir HDFS
FSDir Block
Storage FSDir
FSDir FSDir getBlockInfo
Block getVolumeMap
Block DatanodeBlockInfo
FSVolume Storagedetach
FSVolume
FSVolume
recoverDetachedBlocks detach Storage
detach detach
FSVolume FSVolume
Block FSVolume Block
FSVolumeSet FSVolume
HDFS chunk FSDataset
ActiveFileActiveFile
ActiveFile
11
FSDatasetFSDataset
FSDatasetInterfaceFSDatasetInterface DataNode
FSDataset
FSVolumeSet volumes;
private HashMap<Block,ActiveFile> ongoingCreates = new HashMap<Block,ActiveFile>();
private HashMap<Block,DatanodeBlockInfo> volumeMap = new HashMap<Block,
DatanodeBlockInfo>();;
block BlockWriteStreams
isRecovery
block
block writeToBlock
ActiveFile
ongoingCreates
BlockWriteStreams
ActiveFile
ActiveFile threads
blk_3148782637964391313 DataNode Block ID
3148782637964391313 DataNode tmp/blk_3148782637964391313
meta tmp/blk_3148782637964391313_XXXXXX.meta
XXXXXX
isRecovery true
finalizeBlock
detached
writeToBlock
interrupt
ongoingCreates
/
ActiveFile ongoingCreates
public void updateBlock(Block oldblock, Block newblock) throws IOException;
block
updateBlock
updateBlock tryUpdateBlock tryUpdateBlock
block
public void validateBlockMetadata(Block b) throws IOException;
block
DataNode
14