HDFS架构:各个模块的角色
- Active Namenode(ANN)
- 主Master(只有一个)
- 管理HDFS的名称空间和数据块映射信息也就是元信息
- 配置副本存放策略
- 处理客户端的读写请求
- Standby Namenode(SNN)
- ANN的热备份
- 定期合并fsimage(HDFS的目录信息)和fsedits(HDFS的目录修改信息),并推送给ANN
- 当ANN挂掉时可以切换为ANN
- Datanode (DN)
- 作为Slave节点(有多个)
- 存储实际的数据
- 执行数据块的读写操作
- Clinet
- 文件的切分
- 与ANN、DN交互
- 管理和访问HDFS
HDFS写流程
- HDFSC将要写的数据进行划分为一个个的Block。
- HDFS Client (HDFSC)通过通过Distributed FileSystem(DFS)与NameNode交互(NN),询问NN文件是否存在,如果不存在才能写,并返回给HDFSC可用的DataNode(DN)
- HDFSC通过FSDataOutPutStream(FSDOPS)与各个DN交互,FSDOPS进一步把Block划分为更小的Package,采用流水线的方式写数据(分摊网络瓶颈),先写第一个DN,然后第一个DN负责写第二个DN,第二个DN负责写第三个DN。
- 所有的DN写完之后,HDFSC通知NN记录相应的元信息,最后,HDFSC关闭句柄。
HDFS读流程
1. HDFSC通过DFS询问要读取的文件的元信息
2. HDFSC通过FSDataInputStream(FSDIS)来依次读取文件的各个Block,从前向后依次读取,最后拼接为完整的文件。
3. 整个过程对用户来说是透明的。