HDFS写文件过程
来源:互联网 发布:友情链接优化方法 编辑:程序博客网 时间:2024/06/05 16:55
- 客户端调用create()来创建文件
- DistributedFileSystem用RPC调用元数据节点,在文件系统的命名空间中创建一个新的文件。
- 元数据节点首先确定文件原来不存在,并且客户端有创建文件的权限,然后创建新文件。
- DistributedFileSystem返回DFSOutputStream,客户端用于写数据。
- 客户端开始写入数据,DFSOutputStream将数据分成块,写入data queue。
- Data queue由Data Streamer读取,并通知元数据节点分配数据节点,用来存储数据块(每块默认复制3块)。分配的数据节点放在一个pipeline里。
- Data Streamer将数据块写入pipeline中的第一个数据节点。第一个数据节点将数据块发送给第二个数据节点。第二个数据节点将数据发送给第三个数据节点。
- DFSOutputStream为发出去的数据块保存了ack queue,等待pipeline中的数据节点告知数据已经写入成功。
当发生问题时:
- 关闭pipeline,将ack queue中的数据块放入data queue的开始(以便失败节点之后的节点不要丢失当前数据块)。
- 通过与NameNode通信, 当前的数据块在已经写入的数据节点中被元数据节点赋予新的标示,则错误节点重启后能够察觉其数据块是过时的,会被删除。
- 失败的数据节点从pipeline中移除,另外的数据块则写入pipeline中的另外两个数据节点。
- 元数据节点h会检测到此数据块是复制块数不足,将来会再创建第三份备份。
notice:
- 客户端调用create()来创建文件
- DistributedFileSystem用RPC调用元数据节点,在文件系统的命名空间中创建一个新的文件。
- 元数据节点首先确定文件原来不存在,并且客户端有创建文件的权限,然后创建新文件。
- DistributedFileSystem返回DFSOutputStream,客户端用于写数据。
- 客户端开始写入数据,DFSOutputStream将数据分成块,写入data queue。
- Data queue由Data Streamer读取,并通知元数据节点分配数据节点,用来存储数据块(每块默认复制3块)。分配的数据节点放在一个pipeline里。
- Data Streamer将数据块写入pipeline中的第一个数据节点。第一个数据节点将数据块发送给第二个数据节点。第二个数据节点将数据发送给第三个数据节点。
- DFSOutputStream为发出去的数据块保存了ack queue,等待pipeline中的数据节点告知数据已经写入成功。
当发生问题时:
- 关闭pipeline,将ack queue中的数据块放入data queue的开始(以便失败节点之后的节点不要丢失当前数据块)。
- 通过与NameNode通信, 当前的数据块在已经写入的数据节点中被元数据节点赋予新的标示,则错误节点重启后能够察觉其数据块是过时的,会被删除。
- 失败的数据节点从pipeline中移除,另外的数据块则写入pipeline中的另外两个数据节点。
- 元数据节点h会检测到此数据块是复制块数不足,将来会再创建第三份备份。
notice:
It’s possible, but unlikely, for multiple datanodes to fail while a block is being written.
As long as dfs.namenode.replication.min replicas(which defaults to 1) are written,
the write will succeed, and the block will be asynchronously replicated across the cluster
until its target replication factor is reached ( dfs.replication , which defaults to 3).
0 0
- hdfs写文件过程
- HDFS写文件过程
- HDFS dfsclient写文件过程
- HDFS写文件过程分析
- HDFS写文件过程分析
- HDFS写文件过程分析
- HDFS dfsclient写文件过程 源码分析
- HDFS dfsclient写文件过程 源码分析
- HDFS写数据过程
- HDFS写文件解析
- HDFS写文件解析
- HDFS写文件解析
- hdfs写文件流程
- HDFS读取文件过程
- HDFS文件读写过程
- 【Hadoop--03】HDFS写文件
- HDFS读写文件的过程
- HDFS的写数据过程分析
- SVN?
- Linux crontab定时执行任务
- 最优乘车(normal) SSL 1194
- c# array, arrylist, list 区别
- 预解析 var 变量提升 函数提升
- HDFS写文件过程
- Merge、inflate()、include互相的练习?
- 连接池
- 安装SQL Server时没有选择混合登录模式(现在重新补上)
- RN(React Native)开发Android App的新技术?
- POJ 3608 Bridge Across Islands 已翻译
- 这学期最后一波搞事
- PLC设备监控入门
- Molar Mass UVA1586