1.Datanode进行上传数据流程
1.client node 向Namenode发起请求
2.Nomenode通过验证,向client node节点返回信息。
信息包含:1.同意上传文件 2.上传的文件被分成几个block
【分块的好处:1.由整化零,分块存储更加方便。
2.磁盘最少能分多少个块可以事先知道。】
【分块的大小:hadoop2上默认为128M hadoop1中默认为为64M
】
3.【为什么选取128M作为分块的大小:1.要去读取速度要快,所有不宜设置太大。2.
同时如果设置过小,会产生太多的小文件,同样影响读取速度。】
3.每个block存储在哪个datanode上
3.client依次以block上传数据
4.在datanode之间建立管道流(pipe line),将块以packet为单位依次写入第一个datanode,第二个datanode,及第三个datanode.写入的时候会以chunk来进行校验。
5.返回写入结果是否成功
由此过程进行引申:
1.根据我们hadoop的 默认设定,每一个block应该有三份复本,那么复本到底应该放置在哪三个不同的datanode上呢?
解释这个问题前首先要说明“集群“”.集群一般包含【节点 机架(机柜)机房 数据中心】四个层次。
并且我们的hadoop可以实现机架感知
一个datanode即为一个节点。我们在进行block的放置时遵循的原则有两种解释
①官方文档版本:
1.以client node节点所在机架中的随机一个剩余容量充足的节点放置第一复本
2.以client node节点所在机架中的随机一个剩余容量充足的节点放置第二个复本
3.以client node节点所在机架之外的其他机架上选一个剩余容量充足的节点放置第三个复本
②技术大牛编写的权威证书:
1.以client node 节点所在机架中随机一个剩余容量充足的节点放置第 一个复本
2.以client node节点所在机