我们知道,HDFS中的文件是由数据块Block组成的,并且为了提高容错性,每个数据块Block都会在不同数据节点DataNode上有若干副本Replica。那么,什么是Block?什么又是Replica?
首先,我们看下Block的定义,如下:
/**************************************************
* A Block is a Hadoop FS primitive, identified by a
* long.
*
**************************************************/
@InterfaceAudience.Private
@InterfaceStability.Evolving
public class Block implements Writable, Comparable<Block> {
public static final String BLOCK_FILE_PREFIX = "blk_";
public static final String METADATA_EXTENSION = ".meta";
//....省略部分代码
private long blockId;
private long numBytes;
private long generationStamp;
//....省略部分代码
}
Block实际上是HDFS文件数据块在HDFS元数据或者文件树中的一种表现形式。它有三个重要字段,均是long类型的,数据块艾迪blockId、数据块字节数numBytes、数据块时间戳generationStamp。另外,BLOCK_FILE_PREFIX表明了数