HDFS的三大机制

 

文章目录

    • 概要
    • 整体架构流程
    • 技术名词解释
    • 技术细节
    • 小结

 

概要

HDFS(Hadoop Distributed File System)的三大机制包括:

  1. 心跳机制:DataNode会定期向NameNode发送心跳信号,以保持连接。如果NameNode在一定时间内没有收到心跳信号,它会认为对应的DataNode节点已经失效,并启动相应的恢复机制。
  2. 数据块副本机制:HDFS通过数据块副本机制来保证数据的可靠性和可用性。当某个数据块发生故障时,系统会自动从其他副本中恢复该数据块。此外,通过增加副本数量,可以提高系统的容错能力和数据的可用性。
  3. 数据块均衡机制:为了实现HDFS集群中的负载均衡,HDFS会定期对数据块进行均衡调度。系统会根据数据块的存储和访问情况,自动调整数据块的位置,以保证集群中的负载均衡。

整体架构流程

HDFS的三大机制_第1张图片

HDFS(Hadoop Distributed File System)的架构流程包括以下步骤:

  1. 用户通过客户端(Client)向NameNode发起文件访问请求,例如读取或写入操作。
  2. NameNode接收到请求后,根据文件路径和元数据信息,确定数据块所在的DataNode节点。
  3. 客户端(Client)根据NameNode返回的信息,直接与相应的DataNode进行通信,进行数据的读取或写入操作。
  4. 在数据写入过程中,客户端将数据切分成多个数据块(block),然后分别存储在多个DataNode节点上。NameNode负责维护文件系统元数据和数据块的位置信息。
  5. 为了保证数据可靠性,HDFS会为每个数据块创建多个副本,并将它们分布在不同的DataNode节点上。
  6. DataNode节点之间会定期交换心跳信号,以保持连接。
  7. 当某个DataNode节点失效时,NameNode会自动检测到这一情况,并将该节点的副本删除。同时,会从其他正常运行的DataNode节点中重新复制一份副本,以保证数据冗余和可用性。
  8. HDFS架构中还包括Secondary NameNode节点,它主要用于辅助NameNode进行元数据的管理和恢复。在紧急情况下,Secondary NameNode可以接管NameNode的工作,以保证系统的可用性。

技术名词解释

  • 心跳信号:包含了DataNode节点的状态信息,如已经存储的数据块信息、可用的存储容量等等
  • NameNode:是HDFS的主节点,负责管理文件系统的命名空间和维护文件系统树以及整棵树内所有的文件和目录。同时记录着每个文件中各个块所在的数据节点信息,但这个信息不永久保存,每次启动时由数据节点上报。
  • DataNode:是HDFS的从节点,分布在廉价的计算机上,用于存储块(Block)文件。数据节点会与NameNode进行通信,以获取其存储数据的文件块位置,然后与客户端进行通信以执行数据的读写操作
  • 客户端(Client):客户端与NameNode进行交互以获取文件的位置信息,并与DataNode交互以读取或写入数据。客户端还负责将文件切分成多个数据块,并将它们分布存储在多个DataNode上
  • Secondary NameNode:并非NameNode的热备,当NameNode挂掉的时候,它并不能马上替换NameNode并提供服务。辅助NameNode分担其工作量,比如定期合并Fsimage和Edits,并推送给NameNode。在紧急情况下,可辅助恢复NameNode
  • 块(Block):将一个文件进行分块,默认大小在Hadoop2.x的版本中是128M,老版本是64M。写入后不能修改,但是可以追加

上述内容不能很好理解的话,那我们换一种说法

       如果把HDFS比作一个巨大的图书馆,那么NameNode就是图书馆的目录,而DataNode则是存放图书的架子。

  1. NameNode:作为图书馆的目录,NameNode负责管理文件系统的命名空间,类似于图书馆的目录。它记录着整个文件系统的结构,包括文件和目录的创建、删除和修改等操作。如果图书馆没有目录,那么读者需要逐一查找每一本书,效率非常低。因此,NameNode的存在使得整个图书馆的书籍管理变得有序和高效。
  2. DataNode:DataNode则相当于存放图书的架子。每个DataNode节点负责存储数据块(Block),这些数据块是文件被切割成的固定大小的块。就像图书馆中的书架一样,每个DataNode节点都有自己的存储空间,用于存储数据块。当读者需要借阅某本书时,图书馆员会根据目录(NameNode)找到相应的书架(DataNode),取出图书交给读者。
  3. 客户端:客户端在HDFS中扮演着读者的角色。当客户端需要读取或写入文件时,它会首先与NameNode交互,获取文件的元数据信息。然后,客户端会直接与DataNode节点通信,执行数据的读写操作。这就好比读者来到图书馆,先通过目录(NameNode)找到自己想要借阅的书籍所在的架子(DataNode),然后直接从架子上取出书籍进行阅读或借阅。

通过这个比喻,我们可以更形象地理解HDFS的架构流程和各个组件的角色。HDFS就像一个高效有序的图书馆系统,通过NameNode和DataNode的协同工作,实现了大规模数据的可靠存储和高效访问

技术细节

  • 心跳机制的时间频率:
    • 每三秒发送一次心跳信号
    • 超过630秒没有收到心跳信号,认为节点失效并且将该节点上的数据块副本重新分配到其他可用的DataNode节点上
    • 所有的datanode每6个小时向NameNode汇报一次自己完整的块信息,让NameNode校验更新
  • 如果正常运行的节点<默认的副本数(3):
    • 会强制进入安全模式(safemode),安全模式下:只能读,不能写

小结

总的来说,HDFS的架构流程通过合理地分配和管理数据块和副本,以及有效地监控和管理节点状态,实现了大规模数据的可靠存储和高效访问

 

你可能感兴趣的:(hdfs,hadoop,大数据,架构)