分布式文件系统的结构

文件系统采用块的概念,原因是为了减少磁盘寻址时间,把寻道时间分摊到大量数据中

Windows Linux等操作系统,文件系统一般会把磁盘空间划分为每512字节一组,称为“磁盘块”
它是文件系统读写的最小单位,块(Block)的大小通常是磁盘块的整数倍,即每次读写的数据量必须是磁盘块大小的整数倍。

磁盘块--512字节     块的大小一般几千字节     磁盘块与块不是同一概念

分布式文件系统也采用了块的概念,文件被分成若干个块进行存储,块是数据读写的基本单位,分布式文件系统的块要比操作系统的块大很多,原因是:最小化寻址开销,但是不宜过大,原因:MapReduce中的Map任务一次只能处理一个块中的数据,如果启动任务过少,会降低作业的并行处理速度。比如。HDFS默认的块的大小是64MB,还有一点不同于操作系统,在分布式系统中,如果一个文件小于一个块的大小,它并不占用整个数据块的存储空间。

名称节点

负责管理命名空间。命名空间包含目录,文件和块,命名空间的管理指的是对目录,文件和块的创建,修改和删除等基本操作。HDFS中只有一个命名空间。

保存了两个数据结构,即FsImage和EditLog。
FSImage用于维护文件系统树以及文件树中所有的文件和文件夹的元数据。元数据包括块的位置信息(动态),快的偏移量,权限大小(静态)。EditLog(操作日志)中记录了所有针对文件的创建,删除,重命名等操作。
名称节点记录了每个文件中各个块所在的位置信息,但是不持久化这些信息,而是在系统每次启动的时候扫描所有数据节点重构得到这些信息。
启动时,名称节点会将FSImage的内容加载到内存当中,然后执行EditLog中的各项操作,使得元数据保持到最新。这个操作完成后,会创建一个新的FSImage和一个空的EditLog。启动的过程中处于“安全模式”,只能对外提供读操作,无法提供写操作。启动结束后,退出安全模式,对外提供读写操作。

数据节点

数据节点是分布式文件系统的工作节点,负责数据的存储和读取,会根据客户端或者名称节点的调度来进行数据的存储和检索,并且向名称节点定时发送自己所存储的块的列表,每个数据节点都会将数据保存在各自节点的本地Linux系统中。

第二名称节点

出现原因:防止名称节点在启动的过程中长期处于“安全模式”,影响用户使用(客户体验)。
功能:完成FSImage和Editlog的合并操作,减少Editlog文件大小,缩短名称节点的重启时间。
作为名称节点的“检查点”(备份数据信息)。
不能作为备份节点,原因:不能起到“热备份”。当数据节点出现故障,还是有可能丢失部分信息。
在这里插入图片描述

通信协议

在这里插入图片描述

HDSF HA

出现原因:解决“单点故障问题”;提供“热备份”。
“单点故障”:一个集群中只有一个名称节点,如果出现故障,导致整个集群变得不可用。
解决方法:在集群中一般设置两个名称节点,其中一个名称节点处于“活跃(Active)”状态,另一个处于“待命(Standby)”状态。处于活跃状态的负责对外处理所有客户端的请求,而处于待命状态的名称节点则为备用节点,保存了足够多的系统元数据,当名称节点出现故障时提供快速恢复的能力。也就是说,在HDFS HA中,处于待命状态的名称节点提供了“热备份”,一旦活跃名称节点出现故障,就可以立即切换到待命名称节点。两种名称节点的同步,可以借助于一个共享存储系统来实现,比如zookeeper。zookeeper可以确保任意时刻只有一个名称节点提供对外服务。在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值