②在执行读或写的过程中,NameNode和DataNode通过HeartBeat进行保存通信,确定DataNode活着。如果发现DataNode死掉了,就将死掉的DataNode上的数据,放到其他节点去。读取时,要读其他节点去。
③挂掉一个节点,没关系,还有其他节点可以备份;甚至,挂掉某一个机架,也没关系;其他机架上,也有备份。
2.读流程
例:
读操作就简单一些了,如图所示,client要从datanode上,读取FileA。而FileA由block1和block2组成。
那么,读操作流程为:
a.client向namenode发送读请求。
b.namenode查看Metadata信息,返回fileA的block的位置。
block1:host2,host1,host3
block2:host7,host8,host4
c.block的位置是有先后顺序的,先读block1,再读block2。而且block1去host2上读取;然后block2,去host7上读取;
七、HDFS文件权限
1.与linux系统文件权限类似
r:read w:write x:execute 权限x对于文件忽略,对于文件夹表示是否允许访问
2.如果linux系统用户zhangsan使用hadoop命令创建一个文件 ,那么该文件在HDFS中的所有者就是zhangsan。
3.HDFS权限的目:阻止好人做错事,而不是阻止坏人做坏事;例:只要是zhangsan上传的文件,那HDFS就认为这个文件属于张三,当下次过来操作的还是zhangsan那就可以操作,而不需要密码验证之类的操作。
八、安全模式
在NameNode启动以后会一段时间是处于安全模式,在安全模式下只可查看不能修进行其他操作,因为在安全模式下NN和DN需要做很多工作;
1.NN 启动的时候首先需要将fsimage 载入内存,并执行编辑日志中的各项操作。
2.一旦在文件系统中建立了一个新的元数据的映射,则创建一个新的fsimage 文件(与SNN配合)和一个空的edits文件
3.安全模式下的NameNode,对客户端是只读的(显示文件目录、内容等 ,其他的删除、修改、重命名操作都会失败)
4.在安全模式下,NameNode会收集来自DataNode汇报的block的信息,如果DN汇报的block的最副本数大于设置的最小副本数,则会认为是“安全”的。
如果有block的副本数没有达到设置的最小副本数,则该block会被复制直到达到设置的最小副本数为止。
总结