HDFS写操作
2016-02-17 22:00:08 1 举报
HDFS写操作是Hadoop分布式文件系统的核心功能之一。它允许用户将数据写入HDFS中,以便在集群中进行分布式处理和存储。HDFS采用主从架构,其中NameNode负责管理文件系统的元数据,而DataNode则负责存储实际的数据块。当用户执行写操作时,首先将数据发送到DataNode,然后由DataNode将这些数据块报告给NameNode。NameNode会将这些数据块映射到文件系统的命名空间中,并更新其元数据信息。这种分布式的写操作方式可以有效地提高数据的可靠性和可用性,同时也支持大规模的数据处理和分析任务。
作者其他创作
大纲/内容
HDFSClient
1. 客户端通过调用DistributedFileSystem的create()方法创建新文件;2. DistributedFileSystem通过RPC调用NameNode去创建一个没有Blocks关联的新文件,创建前NameNode会做各种校验,比如文件是否存在、客户端有无权限去创建等。如果校验通过,NameNode会为创建新文件记录一条记录,否则就会抛出IO异常;3. 前两步结束后会返回FSDataOutputStream的对象,和读文件的时候相似,FSDataOutputStream被封装成DFSOutputStream,DFSOutputStream可以协调NameNode和Datanode。客户端开始写数据到DFSOutputStream,DFSOutputStream会把数据切成一个个小的数据包,并写入内部队列称为“数据队列”(Data Queue);4. DataStreamer会去处理接受Data Queue,它先问询NameNode这个新的Block最适合存储的在哪几个DataNode里,比如重复数是3,那么就找到3个最适合的DataNode,把他们排成一个pipeline.DataStreamer把Packet按队列输出到管道的第一个Datanode中,第一个DataNode又把Packet输出到第二个DataNode中,以此类推;5. DFSOutputStream还有一个对列叫Ack Quene,也是有Packet组成,等待DataNode的收到响应,当Pipeline中的所有DataNode都表示已经收到的时候,这时Akc Quene才会把对应的Packet包移除掉;6. 客户端完成写数据后调用close()方法关闭写入流;7. DataStreamer把剩余的包都刷到Pipeline里然后等待Ack信息,收到最后一个Ack后,通知NameNode把文件标示为已完成。
7. cpmplete
DistributedFileSystem
4 write packet
datanode
client
2. create
DataNode
FSDataInputStream
6.close
3.write
namenode
1 create
5 ack packet
NameNode
0 条评论
下一页