一、Block
HDFS在存储数据的时候是将数据进行切块,分别存储到不同的节点上。
在Hadoop1.0版本中,每一个block默认是64M大小,在Hadoop2.0版本中,每一个block默认是128M大小
400M - 4 - 其中前3块,每一块是128M,第4块是16M
100M - 1 - 文件块按照实际大小100M存储
好处:
1、利于大文件的存储
2、方便传输
3、便于计算
二、NameNode
1、负责datanode的管理以及存储元数据。
2、元数据存在内存(快速查询)和磁盘(崩溃恢复)中。
3、HDFS的结构中,namenode存在单点问题。
4、fsimage - 存储元数据。但是注意fsimage中的元数据和内存中并不一致,也就意味着fsimage中的数据并不是实时数据。
5、edits - 存储HDFS的操作。
6、fstime - 记录上一次的更新时间。
触发更新的条件:
1、文件大小 — 根据配置文件设置的edits log大小 fs.checkpoint.size 默认64MB
2、定时更新 — 根据配置文件设置的时间间隔:fs.checkpoint.period 默认3600秒
重启hdfs的时候也会触发更新 — 在合并过程中,HDFS不对外提供写服务,只提供读服务 — 重启hdfs的时候进行的更新阶段 — 安全模式
三、HDFS的安全模式
安全模式是HDFS的一种工作状态。处于安全模式的状态下,只向客户端提供文件的只读视图,不接受对命名空间的修改;同时NameNode节点也不会进行数据块的复制或者删除,如:复本的数量小于正常水平。
1、只能读不能写。
2、检查复本数量以及总量 --- 导致伪分布式环境下,复本数量必须设置为1。
如果重启hdfs,处于安全模式,等待一会儿,检查完数据都没有问题,自动退出安全模式。
在学习期间,重启hdfs之后如果长期处于安全模式中,说明数据有损坏:
1、强制退出安全模式:hadoop dfsadmin -safemode leave
2、关闭HDFS
3、删除dfs、nm-local-dir、logs
4、重新格式化:hadoop namenode -format
四、SecondaryNameNode不是namenode的热备份,而是进行fsimage和edits的合并