【HDFS篇】HDFS相关概念总结

简介:
存储模型为:字节,
以文件切割成块,
单一文件大小一致,文件与文件间可以不一致。
其可以设置副本数,副本数不可超过节点数量。
只支持一次写入多次读取,可追加数据。
架构模型:
NameNode节点保存文件的元数据:单节点
DataNode节点保存文件Block数据:多节点
DataNode与NameNode保持心跳,提交Block列表。
HdfsClient与NameNode交互元数据信息
HdfsClient与DataName交互文件Block数据。
备注:块的副本没有主从之分。
NameNode是基于内存存储的,不会和磁盘发生交换。在内存中,具有持久化。(开机启动的时候会把写到磁盘中的数据读取一遍,因为在内存中的数据开机后会消失的)
其主要功能为,接受客户端的读写服务,以及收集DataNode汇报的Block列表信息。其保存的DN的信息包括,owership和permissions,文件大小时间,Block列表中的偏移量。但是不存位置信息。其会在收集心跳的时候完成位置信息的更新。
1.DataNode:
DN存储的数据的实体和Block的元数据信息文件,启动DN时会想NN汇报block信息。DN有对块可靠性的保证, 每个节点在收完块转成文件存的时候,经过Md5等算法生成一个值,为了验证数据可靠性的 。客户端取的时候取完后需要验证可靠性。如果有问题,会通知DN删除次块。然后取其他的副本。此外,DN通过想NN发送心跳保持与其联系(3s一次),如果NN10分钟没有收到DN的心跳,则认为其已经挂掉了。并copy其上的block到其他DN 。通过复制的block块信息,让其他DN复制一份副本。
2.NameNode的持久化:
NN的metadate信息会在开机启动后加载到内存。其存储到磁盘的文件名为:fsimage,block块的信息不会保存到fsimage镜像。fsimage相当与写快照到磁盘一样。时点的操作。另外一个实时的,叫:edits,客户端的操作记录会以追加的形式在edits里追加,像记录日志一样。 FHDS是两者结合使用的。 比如,某个时刻出现挂机,处理办法为读取fsimage+edits。
3.Secondary NameNode的工作过程:
在hadoop1.x的时候,namenode是单节点的。处理fsimage和edits为不影响namenode的工作压力,用secondary namenode来完成fsimage和edits合并并推向namenode。(SNN可根据配置文件设置的时间间隔fs.checkperiod默认的3600s。还可以根据配置文件设置edits log大小fs.checkpoint.size文件默认大小为64M)。将2个文件加载进内存,写成一个新的fsimage。当SN把新的fsimage推过来后,NN有一个新的fsimage和一个刚才新建的edits。如果某个时刻挂机,将fsimage和edits一执行,就会有恢复挂机前的状态。
此外,在SN取走fsimage和edits的时候,NN会自己生成一个新的edits。然后当SNN推送来的合并完的新的fsimage的时候,会再次取走刚才新的editss,并再次完成一次合并和推送。
在开机的时候,NN产生一个空的fsimage和一个空的edits。然后将2者加载进内存后产生一个新的fsimage和edits。
在hadoop2.x的时候有了active NN 和 standby NN .
4.Block块副本放置策略
这里写图片描述
开源社区是如上图所示方式策略。
第一个副本:放置在上传文件的DN;如果是集群外提交,则随机挑选一台磁盘不太满,CPU不太忙的节点。
第二个副本:放置在于第一个副本不同的 机架的节点上。
第三个副本:与第二个副本相同机架的节点。
更多副本:随机节点
5.HDFS写流程
这里写图片描述
首先客户端通过pipeline 的方式传输数据, 先把一个比如64M的文件传递给以下几个DN,它只需要传个一个DN即可。而且传递的颗粒是更小的,比如只有64K。然后传输完第一个DN后,DN会通过tcp的方式传给第二个DN,以此类推。(DN接收完会给客户端返回成功的时候会立刻把此块传给下一个DN)l传输过程其他的DN挂掉了,比如第二个DN挂了,会通知第一个DN,此时DN通知客户端,客户端通知NN,NN把挂掉的DN拉入黑名单。然后第一个节点的DN会自动跟第三个DN建立tcp连接。并有断点续传。当客户端把64M按小包64K传输完了会想NN要第二个块的信息。然后以同样的方式传给其他的DN。此外,当传输完成后,已完成传输的DN会和NN完成心跳,然后NN发现有挂的DN,会通知没挂的某个DN复制块到挂掉并开启的DN上。
备注:客户端传输给其他DN和完成传输的DN和NN完成心跳并复制的过程是同步的。时间轴是重叠并行的。
6.HDFS读流程
Client:
和NN获取一部分Block副本位置列表
线性和DN获取Block,最终合并为一个文件
在Block副本列表中按距离择优选取
移动完的块后的计算是HDFS的IO流读的。不是到本地计算机开启的IO流读。是拿的HDFS给的IO流。
7.HDFS文件权限 POSIX
与Linux文件权限类似
r: read; w:write; x:execute
权限x对于文件忽略,对于文件夹表示是否允许访问其内容
如果Linux系
统用户zhangsan使用hadoop命令创建一个文件,那么这个文件在HDFS中owner就是zhangsan。
HDFS的权限目的:阻止好人错错事,而不是阻止坏人做坏事。HDFS相信,你告诉我你是谁,我就认为你是谁
它没有自己的用户系统。创建者是什么用户创建什么类型的权限。有对应的权限操作文件。
8.安全模式
namenode启动的时候,首先将映像文件(fsimage)载入内存,并执行编辑日志(edits)中的各项操作。
一旦在内存中成功建立文件系统元数据的映射,则创建一个新的fsimage文件(这个操作不需要SecondaryNameNode)和一个空的编辑日志。
此刻namenode运行在安全模式。即namenode的文件系统对于客服端来说是只读的。(显示目录,显示文件内容等。写、删除、重命名都会失败)。
在此阶段Namenode收集各个datanode的报告,当数据块达到最小副本数以上时,会被认为是“安全”的, 在一定比例(可设置)的数据块被确定为“安全”后,再过若干时间,安全模式结束
当检测到副本数不足的数据块时,该块会被复制直到达到最小副本数,系统中数据块的位置并不是由namenode维护的,而是以块列表形式存储在datanode中。
备注:
hadoop1.x的时候一个NN挂掉了,需要等30分钟才能启动。
NN在所有的

9.总结:
集群
角色==进程
namenode
数据元数据
内存存储,不会有磁盘交换
持久化(fsimage,eidts log)
不会持久化block的位置信息
block:偏移量,因为block不可以调整大小,hdfs,不支持修改文件
偏移量不会改变
datanode
block块
磁盘
面向文件,大小一样,不能调整
副本数,调整,(备份,高可用,容错/可以调整很多个,为了计算向数据移动)
SN
NN&DN
心跳机制
DN向NN汇报block信息
安全模式
client

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值