当前位置: 首页 > news >正文

Hadoop3教程(六):HDFS中的DataNode

文章目录

  • (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 describedin 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搭建到集群调优,百万播放】

相关文章:

Hadoop3教程(六):HDFS中的DataNode

文章目录 &#xff08;63&#xff09;DataNode工作机制&#xff08;64&#xff09;数据完整性&#xff08;65&#xff09;掉线时限参数设置参考文献 &#xff08;63&#xff09;DataNode工作机制 DataNode内部存储了一个又一个Block&#xff0c;每个block由数据和数据元数据组…...

Macos音乐制作:Ableton Live 11 Suite for Mac中文版

Ableton Live 11是一款数字音频工作站软件&#xff0c;用于音乐制作、录音、混音和现场演出。它由Ableton公司开发&#xff0c;是一款极其流行的音乐制作软件之一。 以下是Ableton Live 11的一些主要特点和功能&#xff1a; Comping功能&#xff1a;Live 11增加了Comping功能…...

ThinkPHP5小语种学习平台

有需要请加文章底部Q哦 可远程调试 ThinkPHP5小语种学习平台 一 介绍 此小语种学习平台基于ThinkPHP5框架开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。平台角色分为学生&#xff0c;教师和管理员三种。学生注册登录后可观看学习视频&#xff0c;收藏视频&#xf…...

升级包版本之后Reflections反射包在springboot jar环境下扫描不到class排查过程记录

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是「奇点」&#xff0c;江湖人称 singularity。刚工作几年&#xff0c;想和大家一同进步&#x1f91d;&#x1f91d; 一位上进心十足的【Java ToB端大厂…...

Excel 函数大全应用,包含各类常用函数

Excel 函数大全应用&#xff0c;各类函数应用与案例实操。 AIGC ChatGPT 职场案例 AI 绘画 与 短视频制作&#xff0c; Power BI 商业智能 68集&#xff0c; 数据库Mysql8.0 54集 数据库Oracle21C 142集&#xff0c; Office 2021实战&#xff0c; Python 数据分析&#xff0…...

深入浅出的介绍一下虚拟机VMware Workstation——part3(VMware快照)

虚拟机VMware使用 前言快照的原理快照的使用 前言 可以先查看之前的2篇博文&#xff0c;学习基础的虚拟机使用 深入浅出的介绍一下虚拟机VMware Workstation——part1 深入浅出的介绍一下虚拟机VMware Workstation——part2(详细安装与使用) 由于我们使用虚拟机的初衷就是用来…...

《Python基础教程》专栏总结篇

大家好&#xff0c;我是爱编程的喵喵。双985硕士毕业&#xff0c;现担任全栈工程师一职&#xff0c;热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。…...

JavaScript 事件

HTML 事件是发生在 HTML 元素上的事情。 当在 HTML 页面中使用 JavaScript 时&#xff0c; JavaScript 可以触发这些事件。 HTML 事件 HTML 事件可以是浏览器行为&#xff0c;也可以是用户行为。 以下是 HTML 事件的实例&#xff1a; HTML 页面完成加载HTML input 字段改变…...

轻松学会这招,给大量视频批量添加滚动字幕不求人

想要给大量视频批量添加滚动字幕不求人吗&#xff1f;下面就教你一个简单的方法。首先你需要下载并安装一款名为“固乔剪辑助手”的软件&#xff0c;这是一款非常专业的视频剪辑软件&#xff0c;它可以帮助你快速地给大量视频添加滚动字幕。 打开固乔剪辑助手软件后&#xff0c…...

哪个文字转语音配音软件最好用?

现在TTS技术不断发展&#xff0c;文字转语音技术已经越来越成熟&#xff0c;声音听着拟人度非常高&#xff0c;现在好用的软件也不在少数。很多手机里面都有自带的朗读功能&#xff0c;如果觉得声音不够&#xff0c;也可以自己下载软件使用。给大家分享一下我一直使用的一款文字…...

多关键词高亮显示

引入关键词文件&#xff0c;符合有条件的背景色高亮显示&#xff0c;也可取消。 <div id"testHtml"><p>写入的文本</p><p>关键词</p></div> var str 多个关键词&#xff0c;关键词文件&#xff0c;关键词 var strL str.replac…...

浅谈 33 台 iPad 发展史;OpenAI“悄悄”修改了企业核心价值观丨 RTE 开发者日报 Vol.67

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE &#xff08;Real Time Engagement&#xff09; 领域内「有话题的 新闻 」、「有态度的 **观点 **」、「有意思的 数据 」、「有思考…...

Mysql之备份(Mysqldump)

本篇文章旨在介绍Mysql的备份&#xff0c;借助mysqldump命令。 1.准备数据 准备一个数据库d1&#xff0c;表t1 表结构如下&#xff1a; mysql> desc t1; ------------------------------------------------------- | Field | Type | Null | Key | Default | Extra …...

算法leetcode|84. 柱状图中最大的矩形(rust重拳出击)

文章目录 84. 柱状图中最大的矩形&#xff1a;样例 1&#xff1a;样例 2&#xff1a;提示&#xff1a; 分析&#xff1a;题解&#xff1a;rust&#xff1a;go&#xff1a;c&#xff1a;python&#xff1a;java&#xff1a; 84. 柱状图中最大的矩形&#xff1a; 给定 n 个非负整…...

Java中通过List中的stream流去匹配相同的字段去赋值,避免for循环去查询数据库进行赋值操作

List<EquipmentDeviceMessage> equipmentDeviceMessageInfo greenThinkTanksInfoPlanMapper.getEquipmentDeviceMessageInfo(phone, startDate, endDate); List<BladeUserVo> userList bladexsqlMapper.getUserList();Q&#xff1a;上面两个列表怎么使用流&#…...

开源酒店预订订房小程序源码系统+多元商户 前端+后端完整搭建教程 可二次开发

大家好啊&#xff0c;罗峰今天来给大家分享一款酒店预订订房小程序源码系统&#xff0c;这款系统进行了全新的升级&#xff0c;从原来的单门店升级成了多门店&#xff0c;可以自由切换账号&#xff0c;统一管理。功能强大。以下是部分代码截图&#xff1a; 酒店预订订房小程序源…...

Leetcode 2906. Construct Product Matrix

Leetcode 2906. Construct Product Matrix 1. 解题思路2. 代码实现 题目链接&#xff1a;2906. Construct Product Matrix 1. 解题思路 这道题其实算是一道数论题。 本来其实python的pow内置函数已经帮我们基本处理了所有的问题了&#xff0c;但是这里稍微做了一点复杂化操…...

【Leetcode Sheet】Weekly Practice 11

Leetcode Test 2731 移动机器人(10.10) 有一些机器人分布在一条无限长的数轴上&#xff0c;他们初始坐标用一个下标从 0 开始的整数数组 nums 表示。当你给机器人下达命令时&#xff0c;它们以每秒钟一单位的速度开始移动。 给你一个字符串 s &#xff0c;每个字符按顺序分别…...

本地PHP搭建简单Imagewheel私人云图床,在外远程访问

&#x1f525;博客主页&#xff1a; 小羊失眠啦 &#x1f516;系列专栏&#xff1a; C语言、Linux &#x1f325;️每日语录&#xff1a;追逐影子的人&#xff0c;自己就是影子。 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 1.前言 云存储在前几年风头无两&#xff0c;云存…...

Python图像处理进阶:Pillow库的中级应用

在上一篇文章中&#xff0c;我们介绍了Python的Pillow库&#xff0c;了解了如何使用Pillow进行一些基础的图像操作。今天&#xff0c;我们将深入探讨Pillow库的中级功能&#xff0c;包括颜色空间转换&#xff0c;直方图&#xff0c;像素操作和绘制。 一、颜色空间转换 在图像…...

多线程怎么共用一个事务

文章目录 场景分析测试对应的其他类我并没有贴出来,因为大家可以自己找个项目走一波测试testSession测试testTransaction 注意使用同一个sqlsession会导致线程安全问题,testSession方法就是在另外线程里面能读取到数据库里面没有的数据.但是有时候业务就是这么奇怪.扩展总结 场…...

scrollIntoView使用与属性详解

scrollIntoView 使用与属性详解 效果图如下图所示 如果要想让元素滚动到指定位置 window.onload function () {containerItems[6].scrollIntoView({ behavior: "smooth" }); };js 代码 const containerItems document.querySelectorAll(".container div&…...

【LeetCode热题100】--169.多数元素

169.多数元素 使用哈希表&#xff1a; class Solution {public int majorityElement(int[] nums) {int n nums.length;int m n/2;Map<Integer,Integer> map new HashMap<>(); //定义一个hashfor(int num:nums){Integer count map.get(num); //Map.get() 方法…...

LeetCode 面试题 10.01. 合并排序的数组

文章目录 一、题目二、C# 题解 一、题目 给定两个排序后的数组 A 和 B&#xff0c;其中 A 的末端有足够的缓冲空间容纳 B。 编写一个方法&#xff0c;将 B 合并入 A 并排序。 初始化 A 和 B 的元素数量分别为 m 和 n。 示例: 输入: A [1,2,3,0,0,0], m 3 B [2,5,6], n 3 输…...

揭秘OLED透明拼接屏的参数规格:分辨率、亮度与透明度全解析

作为一种新型的显示技术&#xff0c;OLED透明拼接屏在市场中正在迅速崭露头角&#xff0c;有很多知名品牌厂家能设计、开发、生产高品质的显示产品。 如尼伽、起鸿、康视界、LG、YCTIMES、腾裕等&#xff0c;这些品牌在显示技术领域拥有丰富的经验和声誉&#xff0c;以其卓越的…...

竞赛选题 深度学习YOLOv5车辆颜色识别检测 - python opencv

文章目录 1 前言2 实现效果3 CNN卷积神经网络4 Yolov56 数据集处理及模型训练5 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于深度学习YOLOv5车辆颜色识别检测 ** 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0…...

linux U盘无法使用,提示“Partition table entries are not in disk order“

问题&#xff1a; U盘在Windows上使用正常&#xff0c;在linux下无法使用fdisk -l 命令提示&#xff1a;Partition table entries are not in disk order $ fdisk -l Disk /dev/sdb: 525 MB, 525336576 bytes 17 heads, 59 sectors/track, 1022 cylinders Units cyl…...

HDLbits: Fsm ps2

本题目理解起来有点难&#xff0c;要观察题目中给的三个时序图&#xff0c;通过时序图可以发现&#xff0c;状态有四个&#xff1a;byte1、byte2、byte3&#xff0c;还有一个“&#xff1f;”状态。其中&#xff0c;byte1的下一个状态一定是byte2&#xff0c;byte2的下一个状态…...

【设计模式】八、桥接模式

文章目录 举例问题分析基本介绍桥接模式在 JDBC 的源码剖析桥接模式的注意事项和细节JDBC 举例 现在对不同手机类型的不同品牌实现操作编程(比如:开机、关机、上网&#xff0c;打电话等)&#xff0c; 传统方法对应的类图&#xff1a; 问题分析 扩展性问题(类爆炸)&#xff…...

从零开始的stable diffusion

stable diffusion真的是横空出世&#xff0c;开启了AIGC的元年。不知你是否有和我一样的困惑&#xff0c;这AI工具好像并不是那么听话&#xff1f; 前言 我们该如何才能用好stable diffusion这个工具呢&#xff1f;AI究竟在stable diffusion中承担了什么样的角色&#xff1f;如…...

网站备案名字填写/鞍山seo公司

3. 使用Gauss消元法求解n元一次方程组的根, 举例&#xff0c;三元一次方程组&#xff1a; 0.729x10.81x20.9x30.6867 x1x2x30.8338 1.331x11.21x21.1x31 package chapter4;import java.util.Scanner;public class demo3 {public static void main(String[] args) {Scanner sc…...

学做川菜网站/一元友情链接平台

面向对象使用class 关键字声明类class class_name:构造函数__init__(self):所有的方法必须加上self参数&#xff0c;self代表类的实例&#xff0c;在定义时必须有。通过.访问属性或方法&#xff0c;实例.方法&#xff08;&#xff09;&#xff0c;类名.属性&#xff08;相当于静…...

做直播网站需要手续/站长之家seo工具包

现象内存占用随着训练过程逐渐增大&#xff0c;最终Out of memory。即使将不再用到的变量及时删除并使用gc.collect()&#xff0c;也无法解决。解决方案方案1&#xff1a;Dataset 的成员变量避免使用Python原生数据格式以下面的Dataset代码为例&#xff0c;如果使用self.data …...

电商网站分析报告怎么做/去了外包简历就毁了吗

Nginx 升级版本或者重新编译增加参数这里我们重新编译下&#xff0c;增加nginx用户和组先创建用户#useradd nginx 开始编译#cd /usr/local/nginx-1.6.1#./configure --usernginx --groupnginx --prefix/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module…...

网站手机端排名怎么做/个人网站制作

文章目录前言一、依赖关系是什么&#xff1f;二、支持的功能总结前言 终于更新一个小的python项目来一起动手学习了&#xff0c;今天想看看Redis源码&#xff0c;可惜太慢太多&#xff0c;思维太乱&#xff0c;于是想到看是否用Python可以分析出这个源码直接的依赖关系。 一、…...

下列属于b2b电子商务网站的是/外贸网站哪个比较好

本节我们看一下正则表达式的相关用法&#xff0c;正则表达式是处理字符串的强大的工具&#xff0c;它有自己特定的语法结构&#xff0c;有了它&#xff0c;实现字符串的检索、替换、匹配验证都不在话下。 当然对于爬虫来说&#xff0c;有了它&#xff0c;我们从 HTML 里面提取我…...