HDFS知识点梳理

一、定义

hdfs是hadoop生态中用来存取海量大数据的分布式的文件存储系统,通过目录树来定位文件.

二、适用场景

适合一次写入,多次读出的场景,不支持修改,但是支持append操作。适合大数据分析工作,但是步骤繁琐,不适合用来当网盘使用,且不适用于小文件过多的场景☆

三、优缺点

优点:1.高容错,2.适合大数据,3.可构建于廉价机器

缺点:1.不适用于低延迟的场景(毫秒级),2.无法高效的对小文件进行操作,3.只支持写入,不支持修改,但是支持追加。

四、hdfs中client的作用

1.对文件进行切分,上传到hdfs前切成block块;

2.交互NameNode,获取文件位置;

3.交互DataNode,读取或写入数据;

4.提供相关shell命令管理hdfs系统,例如NameNode的格式化命令;

5.提供命令访问hdfs系统,例如文件的增删改查;

五、block块大小(128M)(☆)

1.寻址时间约为10ms(找到目标块的时间)

2.寻址最佳时间为传输时间的1%

3.最佳传输时间为 10/1% = 1s

4.目前磁盘的最佳传输速度为100M/S

5.则block设置的最佳大小为 blockSize = 1s*100m/s = 100m

结论:文件的block大小取决于磁盘的传输速率

六、block设置大小的影响

1.太大:磁盘传输时间会远远大于寻址时间,导致程序在处理这块数据时,变得非常慢

2.太小:会增加文件的寻址时间;会导致NameNode存取的元数据信息大量增加,大量占用NameNode的物理内存

七、hdfs数据流

1.向hdfs写数据(图取自尚硅谷‘’教学文档)

上传规律:当地一个block上传完毕后,继续上传第二个block,重复3-8步骤。向每个DataNode传数据是进行的串行传输,如果是并行传输的话,当某一个节点坏了,将无法继续传输。虽然是串行传输,因为其传输方式,即当前的节点写到磁盘后,迅速从内存向下一节点传输,因此效率很高。 

节点距离:两个节点到达共同祖先的距离之和

机架:用来存放部署hadoop集群服务器的机架,不同机架之间的节点通过交换机通信,HDFS通过机架感知策略,使NameNode能够确定每个DataNode所属的机架ID,使用副本存放策略,来改进数据的可靠性、可用性和网络带宽的利用率。

机架感知(节点选择)规律:hadoop2.x和hadoop3.x选择规律是不一样的

hadoop2.x:第一个为当前client所在的机架节点,第二个是当前client所在机架随机的节点,第三个为位于不同机架的随机节点。

hadoop3.x:第一个为当前client所在的机架节点,第二个是不同与当前机架的随机的节点,第三个为第二个节点的所在机架的随机节点。

:向hdfs写数据client用的是outputformat流,应为是从cpu中写出到文件所以是out,反之读数据是inputformat。

2.向hdfs读数据(图取自‘’尚硅谷‘’教学文档)

八、NameNode和SecondNameNode工作机制

NameNode的元数据信息存储在FsImage中,存取过程中为了保持效率,所以在内存中存取,但是当NameNode出现问题时可能会出现数据丢失的情况和同时更新FsImage导致的效率过低的情况,因此引出了一个Edits文件(只用来记录元数据信息的改变,只进行追加操作,效率高),用来记录变动,但是,如果长时间添加数据到Edits中,会导致该文件数据过大,效率降低,而且一旦断电,恢复元数据需要的时间过长。因此,需要定期进行FsImage和Edits的合并,如果这个操作由NameNode节点完成,又会效率过低。因此,引入一个新的节点SecondaryNamenode,专门用于FsImage和Edits的合并。

1)第一阶段:NameNode启动

(1)第一次启动NameNode格式化后,创建Fsimage和Edits文件。如果不是第一次启动,直接加载编辑日志和镜像文件到内存。

(2)客户端对元数据进行增删改的请求。

(3)NameNode记录操作日志,更新滚动日志。

(4)NameNode在内存中对元数据进行增删改。

2)第二阶段:Secondary NameNode工作

(1)Secondary NameNode询问NameNode是否需要CheckPoint。直接带回NameNode是否检查结果。

(2)Secondary NameNode请求执行CheckPoint。

(3)NameNode滚动正在写的Edits日志。

(4)将滚动前的编辑日志和镜像文件拷贝到Secondary NameNode。

(5)Secondary NameNode加载编辑日志和镜像文件到内存,并合并。

(6)生成新的镜像文件fsimage.chkpoint(默认3600秒询问一次NN,Edits默认100万操作次数)。

(7)拷贝fsimage.chkpoint到NameNode。

(8)NameNode将fsimage.chkpoint重新命名成fsimage。

九、DataNode工作机制

(1)一个数据块在DataNode上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳。

(2)DataNode启动后向NameNode注册,通过后,周期性(6小时)的向NameNode上报所有的块信息。

(3)心跳是每3秒一次,心跳返回结果带有NameNode给该DataNode的命令如复制块数据到另一台机器,或删除某个数据块。如果超过10分钟没有收到某个DataNode的心跳,则认为该节点不可用。

(4)集群运行中可以安全加入和退出一些机器。

 十、数据完整性

DataNode节点保证数据完整性的方法。

(1)当DataNode读取Block的时候,它会计算CheckSum。

(2)如果计算后的CheckSum,与Block创建时值不一样,说明Block已经损坏。

(3)Client读取其他DataNode上的Block。

(4)常见的校验算法crc(32),md5(128),sha1(160)

(5)DataNode在其文件创建后周期验证CheckSum。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值