HDFS文件写入
来源:互联网 发布:网络表妹啥意思 编辑:程序博客网 时间:2024/05/17 08:50
1、客户端通过DistributedFileSystem对象调用create函数来新建文件
2、DistributeFilesystem对namenode创建一个RPC调用,在文件系统的命名空间中新建一个文件, 此时文件还没有相应的数据块,但是客户端已经能读取命名空间了,只是长度为null
3、namenode执行一些连的检查却熬这个文件不存在 ,客户端有新建文件的权限
4、DFSoutputStream将数据分成一个个数据包,写入内部队列,称为数据队列 (data queue)
DataStreamer处理数据队列,他的责任是根据datanoade列表来要求nameode分配合适的新快来存储数据副本
5、datanode构成一个数据管线, DataStreamer将数据包流式传递给第一个datanode, 这个datanode 发送给第二个datanode,然后这个datanode发送给第三个datanode
6、DFSoutputstream 也维护这一个内部数据包队列来等待datanode的收到确认回执, 称为确认队列, 收到管道中所有datanode确认信息后,数据包才能从确认队列中删除。
===========================================================================================
如果在数据写入期间datanode发生故障,
首先关闭管线, 确认吧队列中的所有数据包多添加回数据队列的最顶端,确保故障下游的datanode不会漏掉任何一个数据包,
为存储在另外一个正常datanode的当前数据块制定一个新的标示。并将该标示传送给namenode,以便故障datanode在恢复后可以删除存储的部分数据块。
从管线中删除故障数据节点并且把余下的数据库写入管线中另外两个正常的datanode,namenode注意到副本数量不足时,会在另外一个节点上创建一个新的副本,后续的数据块继续正常接受处理。
只要写入了dfs.replication.min的副本数目(默认是1),写入操作就会成功,并这个块可以在集群中异步复制,直到 dfs.replication默认为3
hadoop的默认布局是在运行客户端的节点上放第一个副本, 第二个副本放在与第一个不同切随机另外选择的机架上,第三个副本跟第二个副本放在同一个机架上。
- hdfs文件追加写入
- HDFS文件写入
- [HDFS] 浅析HDFS文件读取、写入
- HDFS文件写入与读取
- 文件写入HDFS的流程
- HDFS文件写入与读取
- HDFS文件读取和写入
- HDFS-文件数据流写入传输协议
- hdfs文件写入过程流程分析
- HDFS写入文件的重要概念
- Hadoop向HDFS写入、删除、读取文件
- 文件写入HDFS的整个流程
- HDFS文件读取与写入剖析
- flink使用BucketingSink将文件写入hdfs
- 写入HDFS
- HDFS的API对Hadoop文件系统的文件进行写入
- HDFS写入文件操作的处理流程源码分析
- HDFS中的文件写入到Mysql,通过DBConfiguration,DBOutputFormat
- YARN内存使用优化配置
- PullToRefreshScrollView嵌套ListView时,下拉刷新ListView自动滑动到底部
- LeetCode 94: Binary Tree Inorder Traversal
- noip2008 笨小猴 (模拟)
- 安装Oracle 11g R2静默安装安装
- HDFS文件写入
- Android手势密码
- java.util.concurrent之FutureTask
- 九个数字填入空格中,使等式成立
- android 原型模式
- Git 101
- 一道有意思的逻辑题
- 疯狂讲解之GCD线程
- 通过ValueAnimator 来实现按钮点击后倒计时的效果