当前位置: 代码迷 >> 综合 >> HDFS 节点功能
  详细解决方案

HDFS 节点功能

热度:98   发布时间:2023-11-18 04:26:29.0

HDFS中三种节点的功能:

一、NameNode(NN)

-- NameNode主要功能:接受客户端的读写服务

-- NameNode保存元数据(metadata)信息,主要包括

    (1)文件拥有者和权限

    (2)文件包含哪些块

    (3)每个块保存在哪个DataNode上(由DataNode启动时上报)

解释:每个块保存在哪个DataNode上,这个信息不会保存在NameNode磁盘上,而是当HDFS系统启动时,DataNode会将此信息上报给NameNode,由NameNode保存在内存中,并且每隔一段时间都会重新上报一次。

-- NameNode的元数据信息在启动后会加载到内存

    (1)元数据存储到磁盘文件名为fsimage文件中

    (2)块的位置信息不会保存到fsimage文件中

    (3)edits文件记录对元数据的操作日志(删除文件,上传文件的操作会记录在edits文件中,而不是马上修改fsimage文件,而是每隔一段时间将edits文件与fsimage合并,将相应数据删除或增加数据)

注意:元数据的信息始终有两份,一份保存在磁盘中,一份保存在内存中。但是块的位置信息只会保存在内存中,也即关机之后该数据就没有了,但是重启之后就会重新上报该信息。

 

二、SecondaryNameNode(SNN)

-- 它不是NameNode的备份(但可以做一部分备份),它的主要工作是帮助NameNode合并edits日志,减少NameNode的启动时间。

解释:由于对文件的操作不会直接修改fsimage,而是在edits文件中记录相应操作,所以需要将edits与fsimage合并,而在合并时需要频繁的I/O操作。如果该操作有NameNode自己完成,则计算机需要分配大量资源支持它完成合并,但是NameNode的主要任务是接受客户端读写服务,若大量资源都去支持edits与fsimage合并,那么读写服务就会变得很慢,所以NameNode不做合并,而是由SecondaryNameNode完成,并且HDFS配置时,这两个节点一般配置在不同的电脑上,因此不会相互占用资源。在合并完之后,会得到一个新的fsimage文件,将其传送给NameNode,并替换原始的fsimage文件。

-- SNN执行合并时机

   (1)根据配置文件设置时间间隔fs.checkpoint.period,默认为3600秒

   (2)根据配置文件设置edits文件大小fs.checkpoint.size,规定edits文件最大值默认为64MB,即当edits文件达到64MB时,即使没有达到3600秒,也会进行合并。

  (3)合并流程:如下图,在NameNode中,edits是日志记录文件,fsimage是磁盘中保存元数据的文件,到达合并时间后,SNN会将NN(NameNode)中相应两个文件拷贝过来(跨网络拷贝),拷贝的同时,NN中会生成一个新的edits文件继续记录用户操作。在SNN中,将拷贝过来的edits文件和fsiamge文件合并成一个新的fsimage文件,然后将新的fsimage推送给NameNode,之后NameNode将新的fsimage替换为原来的fsimage。下次合并,重复上述步骤。由下图可知,SNN可以对NameNode做一部分备份,如果NameNode挂掉,可以通过SNN中上次拷贝过来的edits文件和fsimage文件恢复大部分数据,因此NameNode和Secondary NameNode一般不配置在同一台电脑上。

三、DataNode(DN)

-- 存储数据(Block)

-- 启动DN线程时,会向NameNode汇报block位置信息

-- 通过向NameNode发送心跳保持与其联系(3秒一次),如果NameNode 10分钟没有收到DN心跳,则认为该节点已经丢失,并拷贝其上的block到其他的DataNode节点上,保证最小副本数(默认为3个)。

 

Block副本放置策略:

    -- 第一个副本:放置在上传文件的DataNode。如果是集群外提交,文件上传时,随机挑选一台磁盘不太满,CPU不太忙的节点放置第一个副本。

    -- 第二个副本:放置在与第一个副本不同机架的节点上(因为同一机架电源一般是相同的)。

    -- 第三个副本:与第二个副本相同机架的节点。

    -- 更多副本:随机节点。

注意:在配置文件中,会将每台服务器节点对应的机架编号配置在配置文件中。

这里会有一个问题:为什么第三个副本要放置在与第二个副本相同的机架上?

因为第一个副本和第二个副本已经存放在两个不同的机架上,保证了安全性,因此在保证安全性的前提下,要保证传输速度要快,而在同一机架传输的速度会更快,这样既做到了安全性,又保证了传输速度快。

  相关解决方案