题目来自:csdn leishenop
##############################
下面关于大数据的答案,个人见解,欢迎交流
讲述HDFS上传文件和读文件的流程
HDFS 上传流程
过程解析:详解
这里描述的 是一个256M的文件上传过程
① 由客户端 向 NameNode节点节点 发出请求
②NameNode 向Client返回可以可以存数据的 DataNode 这里遵循 机架感应 原则
③客户端 首先 根据返回的信息 先将 文件分块(Hadoop2.X版本 每一个block为 128M 而之前的版本为 64M)
④然后通过那么Node返回的DataNode信息 直接发送给DataNode 并且是 流式写入 同时 会复制到其他两台机器
⑤dataNode 向 Client通信 表示已经传完 数据块 同时向NameNode报告
⑥依照上面(④到⑤)的原理将 所有的数据块都上传结束 向 NameNode 报告 表明 已经传完所有的数据块
这样 整个HDFS上传流程就 走完了 (来自csdn Only丶爱你)
相关文章:
HDFS文件读写及准确性介绍
http://www.aboutyun.com/forum.php?mod=viewthread&tid=6966
Hadoop学习总结:HDFS读写过程解析
http://www.aboutyun.com/forum.php?mod=viewthread&tid=14846
HDFS追本溯源:租约,读写过程的容错处理及NN的主要数据结构
http://www.aboutyun.com/forum.php?mod=viewthread&tid=17620
HDFS在上传文件的时候,如果其中一个块突然损坏了怎么办
其中一个块坏了,只要有其它块存在,会自动检测还原。
NameNode的作用
namenode总体来说是管理和记录恢复功能。
比如管理datanode,保持心跳,如果超时则排除。
对于上传文件都有镜像images和edits,这些可以用来恢复。更多:
深度了解namenode---其 内部关键数据结构原理简介
http://www.aboutyun.com/forum.php?mod=viewthread&tid=7388
NameNode在启动的时候会做哪些操作
NameNode启动的时候,会加载fsimage
更多参考下面内容
NameNode启动过程fsimage加载过程
Fsimage加载过程完成的操作主要是为了:
1. 从fsimage中读取该HDFS中保存的每一个目录和每一个文件
2. 初始化每个目录和文件的元数据信息
3. 根据目录和文件的路径,构造出整个namespace在内存中的镜像
4. 如果是文件,则读取出该文件包含的所有blockid,并插入到BlocksMap中。
整个加载流程如下图所示:
如上图所示,namenode在加载fsimage过程其实非常简单,就是从fsimage中不停的顺序读取文件和目录的元数据信息,并在内存中构建整个namespace,同时将每个文件对应的blockid保存入BlocksMap中,此时BlocksMap中每个block对应的datanodes列表暂时为空。当fsimage加载完毕后,整个HDFS的目录结构在内存中就已经初始化完毕,所缺的就是每个文件对应的block对应的datanode列表信息。这些信息需要从datanode的blockReport中获取,所以加载fsimage完毕后,namenode进程进入rpc等待状态,等待所有的datanodes发送blockReports。