分布式文件系统HDFS-1

文章目录

  • 主要内容
  • 一.分布式文件系统HDFS
      • 1.定义
      • 2.优缺点
      • 3.原理
      • 4.设计思想及原则
      • 5.框架结构
    • 6.HDFS的主要组件包括
      • 7.块、名称节点和数据节点
      • 8.HDFS冗余数据保存
      • 9.数据存取策略
  • 总结

主要内容

  1. HDFS

一.分布式文件系统HDFS

1.定义

HDFS(Hadoop Distributed File System)是Apache
Hadoop生态系统中的一个分布式文件系统,用于存储大规模数据集并提供高可靠性、高性能的数据访问。HDFS采用了主从架构,其中包括一个主节点(NameNode)和多个从节点(DataNode)。NameNode负责管理文件系统的命名空间、存储文件元数据信息,而DataNode负责存储实际的数据块。

2.优缺点

优点:

  1. 高可靠性:HDFS采用数据冗余和容错机制,能够自动检测并修复数据损坏或节点故障。
  2. 高可扩展性:HDFS可以无缝地扩展到成百上千台服务器,适应大规模数据存储需求。
  3. 高性能:HDFS采用数据块存储和数据本地化策略,能够提供高速的数据读写性能。
  4. 易于管理:HDFS具有简单的管理接口和自动化的数据复制和备份功能,减少了管理员的工作负担。

缺点:

  1. 不适用于小文件存储:HDFS适合存储大文件,对于大量小文件存储效率较低。
  2. 不支持实时数据访问:HDFS主要用于批处理作业,对于实时数据访问的需求不太适用。
  3. 单点故障:NameNode是HDFS的关键节点,一旦NameNode发生故障,整个文件系统将无法正常运行。

3.原理

HDFS将文件分割成固定大小的数据块(默认大小为128MB),并将这些数据块分布存储在多个DataNode上。每个数据块会有多个副本存储在不同的DataNode上,以提高数据的可靠性和容错性。NameNode负责维护文件系统的元数据信息,包括文件目录结构、数据块位置等,而DataNode负责存储和管理实际的数据块。

4.设计思想及原则

HDFS的设计思想主要包括高可靠性、高可扩展性和高性能。通过数据冗余和容错机制保证数据的可靠性,通过分布式存储和数据本地化策略实现高性能的数据访问,通过简单的管理接口和自动化的数据复制和备份功能提高系统的可管理性。

原则:

  • 硬件故障:HDFS中的硬件应该是常态,并不是意外。因为一个HDFS包含大量服务器,每个节点可能会存在硬件故障。所以,HDFS需要检测故障、快速和自动回复数据。
  • 流数据访问:HDFS是被设计用于批量处理,而非普通应用程序的用户交互。设计重点应该在于支持高的吞吐量。
  • 大数据集:HDFS支持大文件,应该提供高带宽和可扩展的上百个节点,文件大小应该在GB及TB以上。
  • 简单一致性原则:HDFS的文件需要被多个用户多次续写,所以其需要一个一次写入多次读取的文件访问模型。一个文件一旦创建,写入和关闭后就不再需要改变,支持在文件的末端进行追加数据而不支持在文件的任意位置进行修改。
  • 移动计算比移动数据更划算:应用的计算机在其要操作的数据执行那就会更高效。尤其是数据集非常大的时候,将最大限度地减少网络拥堵和提高系统的吞吐量。
  • 轻便的跨异构的软硬件平台:容易从一个平台跨到另一个平台。

5.框架结构

HDFS的框架结构包括一个NameNode和多个DataNode。NameNode负责管理文件系统的命名空间和存储文件元数据信息,DataNode负责存储实际的数据块。客户端通过与NameNode通信获取文件元数据信息,然后直接与DataNode通信进行数据读写操作。整个系统采用主从架构,通过多个DataNode实现数据的分布式存储和备份。
在这里插入图片描述

6.HDFS的主要组件包括

在这里插入图片描述
在这里插入图片描述

  1. NameNode:NameNode是HDFS的主要组件,负责管理文件系统的命名空间和数据块的映射关系。它记录了文件系统的元数据信息,包括文件和目录的层次结构、文件的属性和数据块的位置等。

  2. DataNode:DataNode是HDFS的存储节点,负责存储和管理数据块。它接收来自客户端的读写请求,并将数据块存储在本地磁盘上。DataNode还定期向NameNode报告数据块的存储情况。

  3. Secondary NameNode:Secondary NameNode负责定期合并NameNode的编辑日志,生成新的镜像文件,并将其发送给NameNode。它可以帮助恢复NameNode的故障,减少系统恢复时间。
    在这里插入图片描述

  4. Client:Client是HDFS的用户接口,负责与NameNode和DataNode进行通信,实现文件的读写操作。客户端可以通过Hadoop命令行工具或HDFS API与文件系统交互。

7.块、名称节点和数据节点

在HDFS中,数据被分割成多个块(block)并存储在不同的数据节点(DataNode)上,由名称节点(NameNode)负责管理和调度这些块的存储和访问。

  1. 块(Block):HDFS将大文件分割成固定大小的块(通常默认为128MB),并将每个块复制多个副本(通常默认为3个)存储在不同的数据节点上。这种数据块的复制机制保证了数据的可靠性和容错性,即使某个数据节点发生故障,数据仍然可以通过其他副本访问。

  2. 名称节点(NameNode):名称节点是HDFS的关键组件,负责管理文件系统的命名空间、块的映射以及数据块的复制和调度。名称节点维护了文件目录结构和元数据信息(如文件名、块的位置等),并负责响应客户端的文件操作请求(如读取、写入、删除等)。名称节点是HDFS中的单点故障,因此通常会配置备用名称节点(Secondary NameNode)来提高系统的可靠性。
    在这里插入图片描述

  3. 数据节点(DataNode):数据节点是HDFS中存储实际数据块的节点,负责存储和管理数据块的读写操作。数据节点定期向名称节点发送心跳信号,汇报自己的存储容量和健康状态,并接收名称节点的指令来执行数据块的复制、移动或删除操作。数据节点之间通过网络通信来交换数据块,并保持数据的一致性和可靠性。

总的来说,HDFS的块、名称节点和数据节点之间相互协作,共同构成了一个高可靠、高可扩展的分布式文件系统,适用于大规模数据存储和处理的场景。通过合理配置和管理这些组件,可以有效提高系统的性能和可靠性,满足不同应用的需求。

8.HDFS冗余数据保存

在这里插入图片描述
作为一个分布式文件系统,为了保证系统的容错性和可用性,HDFS采用了多副本方式对数据进行冗余存储,通常一个数据块的多个副本会被分布到不同的数据节点上,数据块1被分别存放到数据节点A和C上,数据块2被存放在数据节点A和B上。这种多副本方式具有以下几个优点:

  • 加快数据传输速度
  • 容易检查数据错误
  • 保证数据可靠性

在这里插入图片描述
在这里插入图片描述

9.数据存取策略

  • HDFS提供了一个API可以确定一个数据节点所属的机架ID,客户端也可以调用API获取自己所属的机架ID
  • 当客户端读取数据时,从名称节点获得数据块不同副本的存放位置列表,列表中包含了副本所在的数据节点,可以调用API来确定客户端和这些数据节点所属的机架ID,当发现某个数据块副本对应的机架ID和客户端对应的机架ID相同时,就优先选择该副本读取数据,如果没有发现,就随机选择一个副本读取数据
    在这里插入图片描述

总结

以上是今天要讲的内容,学到了分布式文件系统HDFS相关知识。

  • 19
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

K要努力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值