分布式文件系统精讲(吐血整理)

1.分布式文件系统详细介绍

在hadoop当中,分布式文件系统(HDFS),对文件系统有一个抽象,HDFS属于当中的一个实现类,也就是说分布式文件系统类似于一个接口,定义了标准,下面有很多的实现类,其中HDFS是一个子实现类而已,但是现在很多人都只知道一种就是HDFS的实现,并没有了解过其他的实现类,其实分布式文件系统的实现有很多种,
具体详细参见hadoop权威指南第三版第59页。

2.HDFS分布式文件系统设计目标

1、硬件错误是常态,特别是硬盘的损坏是常态 副本机制
2、数据流访问 所有的访问都是访问大量的数据,使用IO流一直操作,追求的是稳定,不是效率
3、大数据集 假设所有存储到hdfs的数据都是海量的数据,不擅长处理小文件,一个小文件占用一个元数据,元数据都存储在内存当中,占用namenode的大量内存
4、简单的相关模型 假设文件是一次写入,多次读取,不会有频繁的更新,比较擅长存出一些历史数据
5、移动计算比移动数据便宜
6、多种软硬件的可移植性

3.HDFS的来源

HDFS起源于Google的GFS论文(GFS,Mapreduce,BigTable为google的旧的三驾马车),发表于2003年10月,HDFS是GFS的克隆版。

4.HDFS的架构图之基础架构

1、namenode负责更新保存元数据信息
2、datanode负责处理用户的读写数据
3、客户端通过namenode查找某个数据的所有的block块在哪些datanode上面,然后就去datanode上面读取数据
数据副本的存放机制:namenode会首先找离客户端最近的一台机器上传block块,然后再去做备份
namenode负责数据block块的复制,定期的检测block的副本数,如果不够3个,继续复制出来保证足够三个。

5.hdfs的架构之文件的文件副本机制以及block块存储

所有的文件都是以block块的方式存放在HDFS文件系统当中,在hadoop1当中,文件的block块默认大小是64M,hadoop2当中,文件的block块大小默认是128M,block块的大小可以通过hdfs-site.xml当中的配置文件进行指定。

5.1、抽象成数据块的好处
  1. 一个文件有可能大于集群中任意一个磁盘
  2. 使用块抽象而不是文件可以简化存储子系统
  3. 块非常适合用于数据备份进而提供数据容错能力和可用性

6.HDFS的元数据信息FSimage以及edits和secondaryNN的作用

6.1、FSImage与edits详解

客户端对hdfs进行写文件时会首先被记录在edits文件中。
edits修改时元数据也会更新。
每次hdfs更新时edits先更新后客户端才会看到最新信息。
fsimage:是namenode中关于元数据的镜像,一般称为检查点。
一般开始时对namenode的操作都放在edits中,为什么不放在fsimage中呢?
因为fsimage是namenode的完整的镜像,内容很大,如果每次都加载到内存的话生成树状拓扑结构,这是非常耗内存和CPU。
fsimage内容包含了namenode管理下的所有datanode中文件及文件block及block所在的datanode的元数据信息。随着edits内容增大,就需要在一定时间点和fsimage合并。

6.2、secondarynameNode如何辅助管理FSImage与Edits文件

①:secnonaryNN通知NameNode切换editlog(edits文件)
②:secondaryNN从NameNode中获得FSImage和editlog(通过http方式)
③:secondaryNN将FSImage载入内存,然后开始合并editlog,合并之后成为新的fsimage
④:secondaryNN将新的fsimage发回给NameNode
⑤:NameNode用新的fsimage替换旧的fsimage

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值