特点:
1. 保存多个副本,且提供容错机制,副本丢失或宕机自动恢复。默认存 3 份。 2. 运行在廉
价的机器上。 3. 适合大数据的处理。HDFS 默认会将文件分割成 block,64M 为 1 个
block。 然后将 block 按键值对存储在 HDFS 上,并将键值对的映射存到内存中。如果小文件
太多,那内存的负担会很重。 (笔记:HDFS 不适合小文件存储:小文件多,造成内存负担。)
系统结构:
NameNode:
namenode 内存中存储的是 = fsimage + edits。
fsimage:元数据镜像文件:包含(文件系统的目录树)文件的 indoe 信息。对于文件来说
包括了数据块描述信息、修改时间、访问时间等;对于目录来说包括修改时间、访问权限
控制信息(目录所属用户,所在组等)等
edits:元数据的操作日志(针对文件系统做的修改操作记录):主要是在 NameNode 已经
启动情况下对 HDFS 进行的各种更新操作进行记录,HDFS 客户端执行所有的写操作都会
被记录到 edit 文件中。
在 NameNode 启动的时候,它会将 fsimage 文件中的内容加载到内存中,之后再执行 edits 文件中的
各项操作,使得内存中的元数据和实际的同步,存在内存中的元数据支持客户端的读操作。
存储地址:hdfs-site.xml 上的 dfs.name.dir 项,具体目录为$dfs.name.dir/current
/hadoop/hdfs/namenode/current
SecondaryNameNode:
小弟,分担大哥 namenode 的工作量。 SecondaryNameNode 负责定时默认 1 小时,从
namenode 上,获取 fsimage 和 edits 来进行合并,然后再发送给 namenode。 减少
namenode 的工作量。
NameNode 的冷备份。
注意:在 hadoop2.x 版本,当启用 hdfs ha 时,将没有这一角色。
b 是 a 的冷备份,如果 a 坏掉。那么 b 不能马上代替 a 工作。但是 b 上存储 a 的一些信息,减
少 a 坏掉之后的损失。
DataNode:
Slave 节点,奴隶,干活的。 1. 存储 client 发来的数据块 block; 2. 执行数据块的读
写操作。