HDFS读写数据原理
Hadoop distributed file system
Hadoop分布式文件系统
1 写数据原理
- 客户还client向namenode请求上传文件
- namenode应答,可以上传
- 请求上传第一个block(HDFS中对数据的存储都是成块存在的,默认为128MB/block),因此需要成块上传。
- namenode返回存储数据的几个节点。
- client请求datanode建立传输block的通道
- datanode回复应答成功
- 开始传输数据。
2 读数据原理
- 客户端client向namnode请求下载文件
- namenode返回元数据
- 客户端client拿到元数据开始找元数据所在的节点
- 根据每个节点请求读取数据
- 然后传输数据
3 NameNode&DataNode
3.1NameNode&SecondaryNameNode
3.1.1作用
NameNode:
- 存储文件的元数据。(文件名、文件目录结构、文件属性)
- 每个文件块所在的DataNode
SecondaryNameNode:
不是NameNode的备份!!
- 监控整个HDFS的集群运行
- 每隔一段时间获取NameNode的快照,帮助它合并文件。
3.1.2工作机制
第一阶段
- hdfs第一次启动需要格式化NameNode,创建edits和Fsimage文件。如果不是第一次启动,则直接加载edits文件和Fsimage文件到内存。
- 客户端请求对元数据进行增删查改。
- NameNode记录操作日志,更新滚动日志。
- NameNode进行增删改查。
第二阶段
- SecondaryNameNode每隔一段时间询问NameNode是否需要checkpoint。
- SecondaryNameNode向NameNode请求checkpoint。
- NameNode滚动文件日志edits
- 拷贝edits文件和fsimage文件到SecondaryNameNode,将二者加载到内存,并合并。
- 生成新的fsimage文件:fsimage.chkpoint。
- 拷贝fsimage.chkpoint文件到NameNode。
- NameNode将fsimage.chkpoint重新命名为fsimage。
3.2 DataNode
3.2.1 作用
存储数据文件、数据块的校验和。
3.2.2 原理
- DataNode启动后向NameNode注册。
- NameNode返回注册成功。
心跳机制: - 每隔三秒DataNode向NameNode传递一次心跳,伴随NameNode对DataNode的命令
- 如果超过10分钟DataNode不向NameNode传递信息,则认为这个节点不可用。已挂。