一、HDFS
永久性数据结构
1.1 namde的目录结构
[root@datanode1 name]# cd /data0/hadoop/dfs/name/current/ [root@datanode1 current]# ls edits edits.new fsimage fstime VERSION [root@datanode1 current]# ls -l 总用量 56 -rw-rw-r--. 1 hadoop hadoop 789 1月 15 16:59 edits -rw-rw-r--. 1 hadoop hadoop 1049088 1月 15 18:00 edits.new -rw-rw-r--. 1 hadoop hadoop 14557 1月 14 18:47 fsimage -rw-rw-r--. 1 hadoop hadoop 8 1月 14 18:47 fstime -rw-rw-r--. 1 hadoop hadoop 100 1月 14 18:47 VERSION
1.1.2 VERSION文件是一个JAVA属性,包含正在运行的HDFS的版本信息
[root@datanode1 current]# cat VERSION #Thu Jan 14 18:47:15 CST 2016 namespaceID=688384215 cTime=0 storageType=NAME_NODE layoutVersion=-32
layoutVersion是一个负整数,描述HDFS持久数据结构(也称布局)的版本,但该版本号与hadoop发布包的版本号无关。只要布局变更,版本号便会递增(如,版本号-18之后是-19),此时,HDFS也需升级。否则,磁盘仍然使用旧版本布局,新版本的namenode或datanode无法正常工作。
namespaceIT:是文件系统唯一标识符,是在文件系统首次格式化时设置的。
cTime:标记了namenode存储系统的创建时间。对于刚刚格式化的存储系统,这个属性值为0
storageType:说明该存储目录包含有namenode的数据结构
1.1.3 文件系统映像和编辑日志
文件系统客户端执行写操作时(如创建和移动文件),这些操作,首先被记录到编辑日志中。namenode在内存中维护文件系统的元数据;当编辑日志被修改时,相关元数据信息也需要更新。内存中元数支技客户端的读请求。
每次执行写操作后,且向客户端发送成功代码之前,编辑日志需要更新和同步。当namenode向多个目录 写数时,只有在所有写操作均执行完毕之后方可返回代码,以确保任何操作不都不会因为机器故障而丢失。
fsimage:是文件系统元数据一个永久检查点。如果namenode发生故障,可以先把fsimage文件载入到内存重构新近的元数据,再执行编辑日志 记录各项操作
fsimage包含文件系统中所有目录和文件inode的序列化信息。每个inode是一个文件或目录的元数据的内存部描述方式。对于文件来说,包含信息有“复本级别”(replication level),修改时间和访问时间,访问许可,块大小,组成一个文件块等;对于目录来说,包含有修改时间,访问许可和配额元数据等信息。
数据块存储在datanode中,但fsimage文件不描述datanode,取而代之的是,namenode将这种块映射关系放在内存中。当datanode加入集群时,namenode向datanode索取块列表以建立映射关系;namnode还将定期征询datanode以确保它拥有最新的块映射。
运行辅助namenode,为主namenode内存中的文件系统元数创建检查点
(1)辅助namenode请求主namenode停止使用edits文件,暂时将新的写操作记录到一个新文件中。
(2)辅助namenode从主namenode获取fsimage和edits文件(采用HTTP GET)
(3)辅助namenode将fsimage文件载入内存,逐一执行edits文件中操作,创建新fsimages文件。
(4)辅助namenode将新fsimage文件发送回主namenode(使用HTTP POST)
(5)主namenode用从辅助namenode接收的fsimage文件替换旧的fsimage文件;用步聚1所产生的edits文件替换旧edits文件。同时,还更新ftime文件来记录检查点执行时间。
创建检查点的触发条件接爱两个配置参数控制。
(1)辅助namenode每隔一小时(由fs.checkpoint.period属性设置 ,以秒为单位)
(2)当编辑日志大小时到达64MB(由fs.checkpoint.size属性设置,以字节为单位)时,即使未到一小时也会创建检查点。系统每隔5分钟检查一次编辑日志大小。
本文出自 “散人” 博客,请务必保留此出处http://zouqingyun.blog.51cto.com/782246/1736088
原文:http://zouqingyun.blog.51cto.com/782246/1736088