Hadoop-Hdfs结构体系

本文详细介绍了Hadoop中的分布式文件系统HDFS,包括其设计原则、体系结构、块管理和副本策略。HDFS旨在处理大规模数据集分析,强调数据吞吐量而非低延迟访问,不支持大量小文件高效存储及多用户并发写入。文章还探讨了HDFS的组成,如NameNode、DataNode和SecondaryNameNode的角色与职责。
摘要由CSDN通过智能技术生成

1.简介

Hadoop 中的分布式文件系统Hdfs实现了数据在计算机集群上的存储和管理。

1.1 Hdfs特点
  • 无法进行低延迟的数据访问: Hdfs是为了处理大型数据集分析任务,主要是为达到高的数据吞吐量而设计的,这就要求可能以高延迟作为代价。
  • 无法高效的存储大量的小文件:在 Hadoop 中需要用 NameNode(名称节点)来管理文件系统的元数据,以响应客户端请求返回文件位置等,因此文件数量大小的限制要由 NameNode 来决定。
    例如,每个文件,索引目录及块大约占 100 字节左右,如果有 100 万文件,
    每个文件占一个块,那么至少要消耗 200M 内存,这似乎可以接受。但是如果有
    更多文件,那么 NameNode 的工作压力更大,检索处理元数据所需要的时间就不可接受了。
  • 不支持多用户写入及任意修改文件

2 组成

NameNode——主节点,主要用来保存元数据信息,维护整个文件系统的文件目录树以及这些文件的索引目录。
DataNode——数据节点,主要用来存储数据。
Secondarynamenode——辅助节点,主要用来实时备份 NameNode 的元数据信息,
并且合并 edits与fsimage(后边我们来分析这两个文件)

2.1 体系结构


Hdfs采用Master/Slave对文件系统进行管理,一个HDFS集群由1个NameNode和一定数量的DataNode组成。
NameNode是一个中心服务器,负责管理文件系统的名字空间(NameSpace)以及客户端对文件访问。
集群中一般是一个节点运行一个DataNode进程,负责管理它所在节点上的存储。
NameNode执行文件系统的名字空间操作,比如打开,关闭,重命名文件或目录。NameNode也负责确定数据块具体DataNode节点的映射。

2.2.1 块(Block)

文件以块的形式存储在磁盘中,此处块的大小代表系统读/写可操作的最小文件大小。
默认大小128M
为什么是128M?

寻址时间(系统寻找数据在哪个地方):
寻址时间 = 读取时间 * 1%
当理想的读取时间是1s,且磁盘速率100M/s,数据大小即为128M。

Hdfs 分布式文件系统会将数据进行切分,切分成多个数据块来进行存储,每个数据块都会根据配置的副本数进行复制多份,
存储在集群上。以保证高可用。

2.2.2 副本存放策略

大多数情况下,副本系数为3(将数据复制3份)。
可以在hdfs-site.xml中可以进行配置。

Hdfs 的存放策略是将一个副本存放在本地机架的节点上,另一个副本放在同一机器的另一个节点上,第三个副本放在不同机架的节点上。

这种策略减少了机架间的数据传输,提高了写操作的效率。机架的错误远比节点的错误少,所以这个策略减少了不会影响数据的可靠性和可用性。
同时,因为数据块只放在两个不同的机架上,所以这个策略减少了读取数据时需要的网络传输总带宽。副本的存放是 Hdfs 可靠性和性能的关键,优化的副本存放策略也正是Hdfs 区别于其他大部分分布式系统的重要性。

2.2.3 数据的读取策略

把网络看做一颗数,两个节点间的距离是他们到最近共同祖先(交换机)的距离总和。该树中的层次是没有预先设定的,但是相对于数据中心,机架和正在运行的节点,通常可以设定等级。具体想法是针对以下每个场景,可用带宽依次递减:

  1. 同一节点上的进程
  2. 同一机架上的不同节点
  3. 同一数据中心不同机架上的节点
  4. 不同数据中心中的节点
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值