标签:
HDFS支持大文件,以流的方式访问数据,数据分布在数据节点(Data Node),文件的元数据保存在名字节点(Name Node)。名字节点的内存大小,决定了HDFS文件系统可保存的文件数量,所以大量小文件会影响名字节点的性能(尽管名字节点内存都较大)。
默认Block最大为64MB,Block的概念可以使HDFS支持保存比单一磁盘大的文件。
Block包含三个属性:blockId(唯一标识)、numBytes(块大小)、generationStamp(版本号、时间戳)
其中generationStamp用于数据一致性检查,每当数据块后成功添加数据后,都会更新generationStamp,blockId一样,但generationStamp不一样的,表示数据块有无效的。
blockId如果是12345,那么数据库名为blk_12345。
NameNode存储文件目录树,文件/目录的元信息及文件的数据块索引———NameNode第一关系。
第二名字节点(Secondary NameNode,SNN)用于定期合并FSImage和Edit Log的辅助守护进程。合并好的FSImage会替换NameNode上的FSImage并清空Edit Log。
DataNode守护进程:将HDFS Block写入Linux实际文件系统中,or 读取实际文件到HDFS Block。
对于类DatanodeID包含以下成员变量:
NameNode----(握手、注册、数据块上报、心跳)----DataNode
包括命令行接口、Java API等。
与客户端相关的接口:ClientProtocol(NameNode)和ClientDatanodeProtocol。
标签:
原文地址:http://www.cnblogs.com/dorothychai/p/4234357.html