Hadoop3教程(六):HDFS中的DataNode

news/2024/5/20 3:09:19 标签: hdfs, hadoop, 大数据

文章目录

  • (63)DataNode工作机制
  • (64)数据完整性
  • (65)掉线时限参数设置
  • 参考文献

(63)DataNode工作机制

DataNode内部存储了一个又一个Block,每个block由数据和数据元数据组成。数据元数据包括数据长度、校验和、时间戳等。

在物理的目录里,每个block的数据和数据源数据是分两个文件保存的。

DataNode的工作机制如图:

在这里插入图片描述

  1. DataNode启动后,会向NameNode注册,表示自己活着,可以接受任务;
  2. NameNode接收到请求后,注册相应信息,并向DataNode返回注册成功的信号;
  3. 之后,DataNode会按周期(默认是6小时)向NameNode上报自己所保存的所有block信息,此举的目的是定时让NameNode知道,自己旗下的blocks是否都还可用;
  4. NameNode和DataNode每隔3s会来一轮心跳,目的是检查DataNode是否还活着,以及返回NameNode要带给DataNode的指令。
  5. 如果超过3s没联系上,NameNode也不会直接抛弃DataNode。一般是10min + 30s机制,即超过10分钟之后,再来30s,即10次心跳,如果还是没有联系上,NameNode才会认为这个DataNode挂了,之后NameNode将不会再对这个DataNode安排读写任务;

DN向NN汇报自身保存的blocks的时间间隔,默认是6h

<property>
	<name>dfs.blockreport.intervalMsec</name>
	<value>21600000</value>
	<description>Determines block reporting interval in milliseconds.</description>
</property>

DN 扫描自身节点块信息列表的时间,默认也是6h:

<property>
	<name>dfs.datanode.directoryscan.interval</name>
	<value>21600s</value>
	<description>Interval in seconds for Datanode to scan data directories and reconcile the difference between blocks in memory and on the disk.
	Support multiple time unit suffix(case insensitive), as described
	in dfs.heartbeat.interval.
	</description>
</property>

DN的正常流程是先自查(扫描自身块信息),后汇报。

(64)数据完整性

Hadoop在底层是如何知道数据是准确的还是不准确的,即DataNode如何验证数据完整性呢,它是如何发现自己保存的数据有问题呢?主要有这么三步:

(1) 将客户端上的原始数据封装,封装方式是在待传输数据后面,加上一位 奇偶校验位

如果待传输数据是01000001,有两个1,是偶数,则奇偶校验位设置为0;

如果待传输数据是01001001,有三个1,是奇数,则奇偶校验位设置为1;

(2) 封装后的原始数据,通过网络传输,上传到HDFS上;

(3) HDFS接收到数据之后,会对数据进行再次的奇偶性校验,以避免网络传输过程中出现异常(DataNode也会在文件创建后周期性的验证校验位),比如说有的0被传成了1;

但这也是奇偶校验位的缺点,就是他只能检查一个0变成1的异常,如果是两个0同时变成了1,那么奇偶校验就校验不出来了。

不过,一般认为,同时坏两个数据位的概率是比较小的,所以奇偶校验位在常规情况下也足够应付。

但是这样做毕竟还是不保险,所以现在Hadoop里在封装时采用的,不是奇偶校验位,而是 crc校验位

crc校验位,又被称为循环冗余校验码,在通信领域应用的比较广泛。简单看了一下基本原理,比较复杂,简单来讲就是指定选定一个除数,使用原始数据与选定的除数进行二进制除法运算,计算出俩的余数就是crc校验位,一般为4位。

其中这个除数是发送端和接收端通用的。接收端收到原始数据后也会进行相同的运算,得到的结果跟校验位一样的话说明数据没问题,或者说直接拿封装后的原始数据去除,没有余数的话,说明没问题。

在这里插入图片描述

(65)掉线时限参数设置

就是之前说的那个DataNode的10min + 30s的超时机制。如果NameNode超过3s没有接收到DataNode的信息,NN不会立即判定该DataNode不可用,而是要经过一段时间,这段时间内仍然没有接收到心跳的话,才会认为该DataNode已经下线,而这段时间就被称为是超时时长。

在这里插入图片描述

作用可见63小节内容,我记在那里面了。

关于心跳时间和心跳超时时长(timeout,即10min + 30s机制)的设置,是在hdfs-site.xml里。

超时时长的计算公式:

timeout = 2 * dfs.namenode.heartbeat.recheck-interval + 10 * dfs.heartbeat.interval

默认的heartbeat.recheck.interval是5min;默认的dfs.heartbeat.interval是3s。

<property>
    <name>dfs.namenode.heartbeat.recheck-interval</name>
    <value>300000</value>
</property>

<property>
    <name>dfs.heartbeat.interval</name>
    <value>3</value>
</property>

需要注意的是hdfs-site.xml 配置文件中的heartbeat.recheck.interval的单位为毫秒,dfs.heartbeat.interval的单位为秒。

参考文献

  1. 【尚硅谷大数据Hadoop教程,hadoop3.x搭建到集群调优,百万播放】

http://www.niftyadmin.cn/n/5089430.html

相关文章

【入门】.Net Core 6 WebApi 项目搭建

一、创建项目 1.1.创建新项目&#xff1a;打开开发工具>创建新项目>搜索API>选择C#语言的ASP.NET Core Web API 1.2.配置新项目&#xff1a;**自定义项目信息以及存储路径 1.3.其他信息&#xff1a;这里框架必须选择.NET 6.0,其他配置默认勾选即可&#xff0c;也可以根…

__builtin_return_address()函数的使用方法

__builtin_return_address(0) 是GCC编译器提供的内置函数&#xff0c;用于获取当前函数调用栈中的指定帧&#xff08;frame&#xff09;的返回地址。这个函数通常用于调试和性能分析&#xff0c;以了解程序中的函数调用关系。 下面是关于 __builtin_return_address(0) 函数的一…

TLP2168

学习记录一下TLP2168 光耦&#xff08;Optocoupler&#xff09;是一种将电气信号转换为光信号再转换回电气信号的装置。它通常由一个发光二极管&#xff08;LED&#xff09;和一个光敏三极管&#xff08;Phototransistor&#xff09;或光敏二极管组成。光耦在电子电路中起到隔…

MR混合现实模拟消防安全演练场景实训

混合现实&#xff08;MR&#xff09;是一种将虚拟世界与真实世界相结合的技术。它允许教师将数字元素融入实际场景&#xff0c;使学生在亲身体验中学习消防安全知识。这种方式不仅可以激发学生的学习兴趣&#xff0c;还能增强学生的记忆效果。 在MR的助力下&#xff0c;消防安全…

数据结构学习系列之双向链表的三种插入方式

头插法&#xff1a;在双向链表的头结点和第0个结点之间插入新结点&#xff0c;即头插法&#xff0c;代码如下&#xff1a;示例代码&#xff1a; int insert_dplink_list_1(node_t *phead,int data){if(NULL phead){printf("入参为NULL\n");return -1;}//创建新结点n…

B2R靶机渗透

B2R靶机渗透 视频参考&#xff1a;ajest &#xff1a;https://www.zhihu.com/zvideo/1547357583714775040?utm_id0 原文参考&#xff1a;ajest &#xff1a;https://www.zhihu.com/column/c_1403138803561816064 文章目录 B2R靶机渗透1 启动靶机&#xff0c;查看后网卡为ma…

Marin说PCB之CoilcraftBourns POC 电感的性能对比

十一小长假本来是一件美好事情。可是天有不测风云&#xff0c;小编我却有祸兮来了。本来是公司的硬件同事强哥要回以色列了&#xff0c;最近他们国家那边都在打仗&#xff0c;强哥本着舍身为国的精神回国抗战去了。小编我就想着在他回国之前搞了篮球比赛送别一下他呢&#xff0…

gpt4.0和3.5区别在哪里:什么样的人适合使用gpt4.0?

GPT-4和GPT-3.5相比&#xff0c;就像是智能手机的新一代和上一代。升级了&#xff0c;功能多了&#xff0c;但核心都是让你的工作和生活更便捷。 联网能力 GPT-3.5&#xff1a;与世隔绝&#xff0c;不联网。 GPT-4&#xff1a;5月17日后能上网浏览&#xff0c;信息获取能力加…