分布式文件系统HDFS

第三章:分布式文件系统HDFS (Hadoop Distributed File System)

1.HDFS的六个基本特征:
(1).大规模数据分布存储能力
(2).高并发访问能力
(3).强大的容错能力
(4).顺序式文件访问
(5).简单的一致性模型(一次写多次读)
(6).数据块存储模式

2.HDFS的基本组成结构:

(PS:这个图还是很好理解的,可以结合下面一段文字记忆)

  • 一个HDFS包括一个NameNode和一组DataNode。NameNode是一个主服务器,用来管理整个文件系统的命名空间和元数据(定义数据的数据),以及处理来自外界的文件访问请求。NameNode保存了文件系统的三种元数据:①.命名空间,即整个分布式文件系统的目录结构 ②.数据块与文件名的映射表 ③.每个数据块副本的位置信息,每一个数据块默认有三个副本。
  • 可知①②③即对应了图中右上角HDFS下NameNode中的三种元数据结构图。
    总结:回顾上图,即外部的程序提出文件访问请求,告诉HDFS中NameNode主节点他所要访问的文件名或者数据块号,由主节点再告诉他具体的存储位置后,外部程序直接去访问对应的DataNode获取数据。
  • 另外,以上这样设计的好处是:一是可以允许一个文件的数据能同时在不同DataNode上并发访问,提高数据访问的速度;二是可以大大减少NameNode的负担,避免使得NameNode成为数据访问的瓶颈。
  • (PS:HDFS数据块的默认大小是64MB,将数据块设置成这么大的原因是减少寻址的开销时间。同时为了防止数据丢失,每个数据块默认由3个副本,且三个副本会分别复制在不同的节点上,以避免一个节点失效造成一个数据块的彻底丢失)

3.通信

  • 作为一个分布式文件系统,HDFS中大部分的数据都是通过网络进行传输的。为了保证传输的可靠性,HDFS采用了TCP协议作为底层的支撑协议。应用可以向NameNode主动发起TCP连接。应用和NameNode交互的协议称为Client协议,NameNode和DataNode交互的协议称为DataNode协议。而用户和DataNode的交互是通过发起远程过程调用,并由NameNode响应来完成的。另外NameNode不会主动发起远程过程调用请求。

4.HDFS数据块采用多副本存储设计方式,有以下几个优点:
(1).采用多副本,可以让客户从不同的数据块中读取数据,加快传输速度;
(2).因为HDFS的DataNode之间通过网络传输数据,如果采用多个副本可以判断数据传输是否出错;(注:如果副本的个数为1或2,是不能判断对错的。)
(3).多副本可以保证某个DataNode失效的情况下,不会丢失数据。

(PS:简单来说多副本可以:①提速 ②.校验 ③.数据不丢失 )

5.HDFS可靠性的设计实现:
(1).安全模式
(2).SecondaryNameNode
(3).心跳包和副本重新创建:
为了保证NameNode和各个DataNode的联系,及时跟踪,HDFS采用了心跳包机制。位于整个HDFS核心的NameNode周期性向管理的各个DataNode发送心跳包,而收到心跳包的DataNode需要及时回复。并且NameNode也把执行的命令通过心跳包发送给DataNode,所以,DataNode收到心跳包,一方面回复NameNode,另一方面就开始了与应用程序的数据传输。
(4).数据一致性
(5).租约
(6).回滚

6.HDFS的数据读取过程类似于HDFS的基本组成结构:

7.HDFS的数据写入过程:

(PS:上面两个图理解后再记忆,基本上大同小异,注意ACK确认和管道传输数据)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值