(五)HDFS容错机制

news/2024/5/20 4:03:15 标签: hdfs, hadoop, 大数据

设置

  • 关键性的参数 replication factor(复制因子),是每个block要复制几份副本到其他的机器上去,如果某台机器挂了,其他机器上有一模一样的block副本。
  • 这个replication factor可以整体设置一下,也可以对每个文件设置一下,后续还可以修改

过程

  • 写文件的时候,假如说默认的每个block就是3副本,此时namenode会先根据一个复制算法挑选出来3个datanode
  • 每个datanode放一个block
  • 客户端先第一个datanode写入一个block
  • 接着datanode将这个block复制给第二个datanode
  • 然后第二个datanode再将block复制给第三个datanode。

rack aware(机架感知)

  • namenode默认一般一个block是3个副本,你就可以把2个副本放在一个机架上,然后第3个副本放在另外一个机架上。
  • 在一个机架里,同步复制2个副本,通信速度很好,仅仅只有一个副本是同步到另外一个机架上去的,确实会影响一点写的速度,但是总比你在三个机架上各方一个副本好
  • 如果一个机架完全挂了,还有另外一个机架上有一个副本。

心跳

  • namenode每隔一段时间就会从各个datanode那里获取一个heartbeat,这是用来确定那个datanode还活着的
  • 获取心跳的同时还会获取一份block report,就是每个datanode报告自己本地可用的block
  • namenode不断的获取整个集群中的block的情况,新创建文件分配block给datanode的时候,可以根据各个datanode当前的block数量来均匀的分配

数据读取

  • 在读数据的时候,会优先找离自己最近的那个副本所在的机器,保证读取性能最高


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

相关文章

APP项目讲解

1.git应用——简单应用 git是一个版本管理工具,常用于开发合作代码管理器本地要先安装一个git应用: 下载地址:https://git-scm.com/download/win下载下来的安装包,一步一步执行即可,不要去选择位置来到任何一个文件中右键&#x…

【大数据】Hive系列之- Hive-DML 数据操作

Hive系列-DML 数据操作数据导入向表中装载数据(Load)语法操作用例通过查询语句向表中插入数据(Insert)创建一张表插入数据基本模式插入(根据单张表查询结果)查询语句中创建表并加载数据(As Sele…

智慧化水务信息系统-供水自动化控制系统如何建设?

平台概述柳林智慧化水务信息系统(供水自动化控制系统)平台是以物联感知技术、大数据、智能控制、云计算、人工智能、数字孪生、AI算法、虚拟现实技术为核心,以监测仪表、通讯网络、数据库系统、数据中台、模型软件、前台展示、智慧运维等产品…

什么是PCB走线的3W原则

在设计PCB的时候我们会经常说到3W原则, 它指的是两个PCB走线它们的中心间距不小于3倍线宽,这个W就是PCB走线的宽度。这样做的目的主要是为了减小走线1和走线2之间的串扰,一般对于时钟信号,复位信号等一些关键信号需要遵循3W原则。…

腾讯插件化—Shadow源码

简介 Shadow是一个腾讯自主研发的Android插件框架,经过线上亿级用户量检验。 Shadow不仅开源分享了插件技术的关键代码,还完整的分享了上线部署所需要的所有设计。 与市面上其他插件框架相比,Shadow主要具有以下特点: 复用独立…

关于召开2023海洋生物资源开发利用与现代生物智能制造论坛的通知

充分开发与利用海洋资源是我国海洋强国战略的重要组成内容,充分利用海洋资源开发海洋产品不仅是满足国民总量需求的重要组成部分,也是人类面向未来健康需求的战略高地。生物制造技术是开发利用海洋资源的重要发展方向,其绿色、高效、高质的加…

20230314英语学习

篇目1 Oldest Evidence of Right-Handedness Seen in Fossil Jaw 颌骨化石证明,人类祖先是“右撇子” Fossils from the “handy man” of the human family tree have now provided the oldest known evidence of right-handedness in our lineage. The discover…

AcWing 1497. 树的遍历

这道题和洛谷不同的点有两个&#xff1a;输入都是整数&#xff0c;不是连在一起的字符串。输出是层序遍历&#xff0c;不是后序中序求前序。如果还想采用substr这种简单的做法就要先解决第一步。定义两个string&#xff0c;把输入都串在一起for(int i0;i<n;i)cin>>t,b…