【Hadoop】HDFS储存(写)文件的方式
HDFS存储文件的方式:
step1:客户端向Namenode服务器发送申请,请求写文件到HDFS的目标路径下
step2:Namenode验证客户端权限和HDFS中的目标路径是否合理。若允许写入,返回信息给客户端
step3:客户端将文件切分为一个个block块(block0,block1,…)
step4:客户端向Namenode申请传输block0,Namenode返回分配给block0的Datanode列表(列表长度等于副本数)
step5:列表中的Datanode分别、依次备份block0到自己的服务器上
step6:block0备份成功后,Datanode返回信息给客户端。然后客户端返回block0上传成功的信息给Namenode。Namenode将元数据(block及其副本的信息,如大小,位置)同步到HDFS中的目标路径下
step7:循环step4-6,直到所有的block都上传完毕
注意:
- block的大小可以自定义,hadoop新版本中默认为128MB
- 副本数可以自定义,不能大于全部的Datanode节点数
- 显然,每个block被分配的Datanode列表可能不同。也就是说,一个Datanode通常只储存了一个大文件的一部分