NameNode和DataNode间的联系

本文内容还是转载自--吴超沉思录里的,还是挺佩服吴超老师的O(∩_∩)O~

 

以下介绍NameNode和DataNode所扮演的角色:

(1)NameNode

NameNode的作用是管理文件目录结构,是管理数据节点的。NameNode维护两套数据:一套是文件目录与数据块之间的关系,另一套是数据块与节点间的关系前一套是静态的,是存放在磁盘上的,通过fsimage和edits文件来维护;后一套数据是动态的,不持久化到磁盘,每当集群启动的时候,会自动建立这些信息

(2)DataNode

DataNode是HDFS中真正存储数据的。HDFS中有个信息叫Block(数据块)。假设文件大小是100GB,从字节位置0开始,每(3)部署情况

集群中的一个专门机器用来运行NameNode,集群中的其他机器各运行一个DataNode。(当然,也可以在运行NameNode的机器上同时运行DataNode,或者一个机器行运行多个DataNode)。

(4)HDFS中的数据存放

1.冗余备份:

HDFS将每个文件存储成一系列的数据块(Block),默认快大小为64MB(可以自定义设置)。为了容错,文件的多有数据块都可以死有副本(默认为3个,这个可以自定义设置,但一般3个是最佳选择了,个人认为)。当DataNode启动的时候,它会遍历本地文件系统,产生一份HDFS数据块和本地文件对应关系的列表,并把这个报告发送给NameNode,这就是报告块(BlockReport),报告块包含了DataNode上所有块的列表。

2.副本存放:

HDFS集群一般运行在多个机架上,不同机架上机器的通信需要交换机。通常情况下,副本的存放策略较关键,机架内节点之间的带宽比跨机架之间的带宽要大,它能影响HDFS的可靠性和性能。HDFS采用一种称为机架感知(Rack-aware)的策略来改进数据的可靠性、可用性和网络带宽的利用率。一般情况下:HDFS的存放策略是将一个副本存放在本地机架节点上,一个副本存放在同一个机架的另一个节点上,最后一个副本存放在不同机架的节点上。这种策略减少了机架间的数据传输,提高了写操作的效率。机架的错误远远比节点的错误少,所以这种策略不会影响到数据的可靠性和可用性。

3.心跳检测:

NameNode周期性地从集群中的每个DataNode接受心跳包和块报告,NameNode可以根据这个报告验证映射和其他文件系统元数据。烧到心跳包,说明该DataNode工作正常。如果DataNode不能发送心跳信息,NameNode会标记最近没有心跳的DataNode为宕机,并不会给他们发送任何I/O请求。

 

转载于:https://www.cnblogs.com/judylucky/p/4305114.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值