写的不到位的地方,欢迎评论指出不足之处
1、HDFS是一个
主从
( Master / Slaves )架构
- 主从
- 两个都是活动状态,并且是互相通信、协作、调用
- 主备
- 主是活动的,备是停止的,当主发生异常后,备才会切换开始活动
2、由一个 NameNode 和一些 DataNode 组成
NameNode | 完全基于内存存储文件元数据、目录结构、文件 block 的映射 需要持久化方案保证数据可靠性 提供副本放置策略 |
注 | 一个集群由许多台组成,但一个集群只有一个“主” 阿里官方推荐一个集群最大不超过5000台,否则将导致性能下降,管理崩溃的现象 |
DataNode | 基于本地磁盘存储 block (文件的形式) 并保存 block 的校验和数据,保证 block 的可靠性 与 NameNode 保持心跳,汇报 block 列表状态 |
注 | 同时保存两个文件 1、block 文件 2、校验 文件 |
3、面向文件包含:文件数据(data)和文件元数据(metadata)
- 文件数据
- 文件自身数据, 二进制形式的
- 文件元数据
- 即文件属性
4、NameNode 负责存储和管理文件元数据,并维护了一个层次型的文件目录树
- NameNode
- 负责管理,文件自身数据以外,无关的数据
- 如
- 文件名是什么、文件大小情况、文件切割情况、切割后所在位置、文件修改时间等,起到记账的作用
5、DataNode 负责存储文件数据(block块),并提供 block 的读写
- NameNode 短暂的处理,分配到某一个 DataNode,之后再由这个 DataNode 进行相关读写
6、DataNode 与 NameNode 维持心跳,并汇报自己持有的 block 信息
- 虽然 NameNode 会指派 DataNode 进行处理,但 NameNode 不会先记录
- 而是 DataNode 处理后向 NameNode 汇报情况,从而维持两者的联系
7、Client 和 NameNode 交互文件元数据和 DataNode 交互文件 block 数据
- 客户端要向两者分开交互不同的内容,即原始数据(客户端),没有客户端也就没有数据来源
HDFS 结构图
![](https://i-blog.csdnimg.cn/blog_migrate/4981ba6794465de218861824bf9f1a9d.png)
Block备份
![](https://i-blog.csdnimg.cn/blog_migrate/f9fb6c7ccd5d2f4238c73e7419c14982.png)