标签:check filesyste 传输 方法 creat info img 关闭 span
写流程
1.HDFS Client调用DistributedFileSystem.create(filePath)方法,去和NN进行【RPC】通信! 2.NN 会去check这个路径的文件是否已经存在,是否有权限能够创建这个文件! 假如都ok,就去创建一个新的文件,但是这时还没写数据,是不关联任何的block。 返回输出流 FSDataOutputStream,,封装了输出流 DFSOutputDtream。 3.客户端写入数据:输出流 DFSOutputDtream 将数据分成一个个的数据包,并写入内部队列。
DataStreamer 根据 DataNode 列表来要求 NameNode 分配适合的新块来存储数据备份。
一组 DataNode 构成管线(管线的 DataNode 之间使用 Socket 流式通信); 4.使用管线传输数据:DataStreamer 将数据包流式传输到管线第一个DataNode,
第一个 DataNode 再传到第二个DataNode,直到完成;DataNode 收到数据后发送确认,
管线的 DataNode 所有的确认组成一个确认队列。所有 DataNode 都确认,管线数据包删除; 5.client写完数据后,调用 close( ) 方法,将剩余所有数据写入Pipline,等待确认ack
后联系 NameNode并且发送文件写入完成信息;
6.故障处理:若过程中发生故障,则先关闭管线,把队列中所有数据包添加回去队列,确保数
据包不漏。为另一个正常 DataNode 的当前数据块指定一个新的标识,
并将该标识传送给 NameNode,一遍故障 DataNode 在恢复后删除上面的不完整数据块。
从管线中删除故障 DataNode 并把余下的数据块写入余下正常的 DataNode。NameNode
发现复本两不足时,会在另一个节点创建一个新的复本;
标签:check filesyste 传输 方法 creat info img 关闭 span
原文地址:https://www.cnblogs.com/huangguoming/p/13191365.html