
- 第1步客户端发去
CreeteFile,目的时获取HDFS文件的输出流,namenode收到请求后会检测路径的合法性,以及权限。原生Hadoop的权限管理不是很完善,工作中用的是CDH(商业版Hadoop)如果检测通过,namenode会为这个文件生成块的元数据信息(比如:1为文件切块2分配块id3分配每个块存在那个datanode上),然后将原属信息封装到输出流中,返回给客户端。 - 第2,3步
Client拿出输出流之后,采用PipeLine(数据流管道)机制做数据的上传发送,这样设计的目的在于利用每台服务的带宽,最小化推送数据的延时。
packet是一个64Kb大小的数据包,即客户端在发送文件块时,会在文件块变成一个一个的数据发送。 - 第4.5步- 每台
datanode收到packet,会向上游datanode做ack确认,如果接受失败,会进行重发 - 第6步 当一个文件上传完后,关流。
分步
上传两块文件到HDFS,先上传第一块。DN1的选择离Client最近的一个。DN2,DN3是由DN1决定的

再上传第二块,选择的Datanode可能和第一块不在同一个。

第三步


1659

被折叠的 条评论
为什么被折叠?



