block:1.切分规则128 2.最大值,不是固定值 3.存储规则(往datanode存储
NameNode:维护元数据信息
1、fsimage(数据持久化操作) 2.edits(日志文件—修改记录) 3.fstime(文件合并的时间)
文件合并
1.当fstime里的时间达到3600s
2.edits文件数据达到64M
SNN
1.Nn将日志文件复制一份产生新的日志文件 edits.new
2.snn通过http get获取原始日志文件以及磁盘文件----合并成为新的磁盘文件
3.将新的磁盘文件复制给nn
4.将旧得日志文件删除,将新的日志文件做重命名操作—edits
5.将旧的磁盘文件删除,将新的磁盘文件做重命名操作–fsimage
副本放置策略
1.就近原则
1.考略网络延迟 2.当前dn是否空闲
2.与副本1不同机架
3.副本2相同机架 不同机器
hdfs执行流程
HDFS的读流程
1.客户端向服务器端发送请求—进行数据的读取
2.nn要做两部操作:验证当前用户是否具有访问权限 校验当前要读取的数据是否存在
3.nn就会将对应的block块的存储的地址信息(对应的dn的地址信息)返回给客户端
4.客户端就会接收到nn发送来的地址信息,去找对应的dn,进行数据的读取
5.数据表读取完毕之后,释放资源(关闭客户端与服务器端的连接)
- HDFS的写流程
1.客户端向服务器端发起连接请求—数据写入的请求
2.服务器接收这个请求:验证当前用户是否具有数据写入的权限 校验当前要写入的文件是否真实存在
3.服务器端为客户端返回dn的地址信息
4.接收到dn地址信息,进行文件切块的操作(128M为规则)
5.客户端就会拿着dn地址(第一个副本)信息进行block的存储
6.首先第一个副本找到对应的dn进行存储—默认3副本,dn之间同过管道流的形式进行副本的传输
7.第二、三副本就通过channel进行数据传输操作,第三个副本传输完成之后
8.依次向上一级dn发送ack信息
9.将这个ack信息发送给客户端,客户端接收信息,才会执行第二个block的存储操作
10.block全部存储完成之后,向服务器端发送信息(写入完毕)释放资源,断开连接
注意:
1.数据的传输是以namenode为基础的-----没有参与,只是单纯返回地址信息
2.文件的block块是hdfs来进行切分的----不是,是客户端进行文件的操作
3.就是一个block块是上产3次吗----在dn内部已管道流的形式进行的内部传输