HDFS分布式文件系统设计思想
HDFS设计目标
1)硬件错误是常态,数据保存需要冗余。
2)数据批量读取,Hadoop擅长数据分析而不是事务处理。
3)大规模数据集。
4)简单一致醒模型,降低系统复杂度,文件一次写入多次读取,
5)“数据就近”原则分配数据节点。
HDFS体系结构
NameNode
DataNode
SecondayNameNode
事务日志
映像文件
NameNode
文件系统命名空间
记录每个文件系统数据块在各个DataNode上的位置和副本信息。
协调Client对文件的访问
记录命名空间内的改动
NameNode使用事务日志记录HDFS元数据的变化。使用映像文件存储文件系统的命名空间,文件映射,文件属性等。
DataNode
负责物理节点的存储管理
一次写入,多次读取(不修改)。
文件由数据块(block)组成默认为64MB。
Block应尽量分配在不同的物理节点上。
HDFS读取流程
Client要访问HDFS上的一个文件
1)从NN获取组成这个文件的block位置列表。
2)更具列表知道存储数据快的dn。
3)访问dn获取数据。
4)NN并不参与数据实际传输。
HDFS如何保证集群当中的数据存储可靠性
1)冗余副本
2)机架策略
3)心跳机制
4)安全模式
5) 快照机制
冗余副本
Hdfs默认每个block三个副本(不足三分制动),dn启动时,向nn汇报各数据快信息。
机架策略
集群一般放在不同机架上,
HDFS“机架感知”
一般第一个副本存放在上穿文价的本机架上,如果是本集群外提交,则随机挑选磁盘不太满,cpu不太忙的节点存储。
第二个副本放在与第一个机架不同的节点上,
第三个副本放在与第二个副本相同的节点上。
更多副本:随机。
心跳机制
NN周期从dn接收心跳信息和block报告(3秒一次)
NN根据block报告验证元数据
没按时发送心跳(10分钟)的dn则认为已经lost,并copy其上的block到其他DN。
安全模式
NN启动时会经过“安全模式”阶段
安全模式阶段不会产生写操作,只执行写操作
次阶段NN收集NN的报告,当block达到最小副本数以上时,会被认
为是“安全”的, 当block未达到最小副本数时,该块会被复制知道达到安全。
回收站
删除文件时,将文件放入回收站。
回收站里文件可以快速恢复。
当达到一定阀值时,就被彻底删除,释放占用block。
快照
支持某一时间点的映像,需要时是数据重返这个时间点。