分布式文件系统HDFS实践及原理详解part3

news2025/7/31 7:01:06

HDFS原理

说明:3.5开头目录是因为和上篇文章内容同属一章,所以开头使用了3.5

3.5 HDFS核心设计

3.5.1 心跳机制

1、 Hadoop 是 Master/Slave 结构,Master 中有 NameNode 和 ResourceManager,Slave 中有 Datanode 和 NodeManager

2、 Master 启动的时候会启动一个 IPC(Inter-Process Comunication,进程间通信)server 服 务,等待 slave 的链接

3、 Slave 启动时,会主动链接 Master 的 ipc server 服务,并且每隔 3 秒链接一次 Master ,这 个间隔时间是可以调整的,参数为 dfs.heartbeat.interval,这个每隔一段时间去连接一次 的机制,我们形象的称为心跳。Slave 通过心跳汇报自己的信息给 master,master 也通过心跳给 slave 下达命令

4、 NameNode 通过心跳得知 Datanode 的状态 ResourceManager 通过心跳得知 NodeManager 的状态

5、 如果 master 长时间都没有收到 slave 的心跳,就认为该 slave 挂掉了!

​ HDFS 默认的超时时间为 10 分钟+30 秒。课堂上具体讲解

3.5.2 安全模式

NameNode进入安全模式的原理:

a、 NameNode发现集群中的 block 丢失率达到一定比例时(0.1%), NameNode就会进入 安全模式,在安全模式下,客户端不能对任何数据进行操作,只能查看元数据信息(比 如 ls/mkdir)

这个丢失率是可以手动配置的,默认是 dfs.safemode.threshold.pct=0.999f

新版本的配置是:dfs.namenode.safemode.threshold-pct=0.999f

b、如何退出安全模式?

​ 1、找到问题所在,进行修复(比如修复宕机的 datanode)

​ 2、或者可以手动强行退出安全模式(但是并没有真正解决数据丢失问题)

3.5.3 副本存放策略

1、 作用: 数据分块存储和副本的存放,是保证可靠性和高性能的关键

2、 方法: 将每个文件的数据进行分块存储,每一个数据块又保存有多个副本,这些数据块副本分布在不同的机器节点上

在这里插入图片描述

副本存储策略:

1、第一个副本块选取和客户端相同的节点上
2、第二个副本块选取跟第一个副本的存储节点相邻机架的任意一个节点
3、第三个副本存储在和第二个副本块所在机架不同的节点上

在这里插入图片描述

来自于官网的描述:

官网链接:https://hadoop.apache.org/docs/r3.2.2/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html#Replica_Placement:_The_First_Baby_Steps

在这里插入图片描述

第四章 HDFS的组件概述与读写剖析

4.1 HDFS读数据流程

4.1.1 概述

​ 客户端将要读取的文件路径发送给 NameNode ,NameNode 获取文件的元信息(主要是 block 的存放位置信息)返回给客户端,客户端根据返回的信息找到相应 DataNode 逐个获取文件 的 block 并在客户端本地进行数据追加合并从而获得整个文件

4.1.2 详细步骤图

在这里插入图片描述
注:此图来源于网络,若有疑问,请联系删除。

4.2 HDFS写数据流程

4.2.1 概述

​ 客户端要向 HDFS 写数据,首先要跟 NameNode 通信以确认可以写文件并获得接收文件 block 的 DataNode ,然后,客户端按顺序将文件逐个 block 传递给相应 DataNode ,并由接收到 block 的 DataNode 负责向其他 DataNode 复制 block 的副本

1、 Client 发写数据请求

2、 NameNode 相应请求,然后做一系列校验,如果能上传该数据,则返回该文件的所有切块应该被存在哪些 DataNode 上的 DataNodes列表

blk-001:hadoop02 hadoop03

blk-002:hadoop03 hadoop04

3、 Client 拿到 DataNode 列表之后,开始传数据

4、 首先传第一块 blk-001,DataNode 列表就是 hadoop02,hadoop03, client 就把 blk-001 传到 hadoop02 和 hadoop03 上

5、 以此类推, 用传第一个数据块同样的方式传其他的数据

6、 当所有的数据块都传完之后,Client 会给 NameNode 返回一个状态信息,表示数据已全部写入成功,或者是失败的信息

7、 NameNode 接收到 Client 返回的状态信息来判断当次写入数据的请求是否成功,如果成功,就需要更新元数据信息

4.2.2 详细步骤图

在这里插入图片描述
注:此图来源于网络,若有疑问,请联系删除。

4.3 网络拓扑计算

HDFS写数据的时候,NameNode会选择距离上传数据最近的DataNodes。
那最近距离怎么算?其实就是两个节点到达最近的共同祖先节点的距离总和。

在这里插入图片描述

第五章 HDFS的工作组件详解

5.1 NameNode介绍

5.1.1 NameNode 职责

​ 负责客户端请求(读写数据)的响应

​ 元数据的管理(查询,修改)

​ 配置副本存放策略

​ 管理集群数据块负载均衡问题

5.1.2 NameNode 元数据管理

​ WAL(Write ahead Log): 预写日志系统

​ 在计算机科学中,预写式日志(Write-ahead logging,缩写 WAL)是关系数据库系统中用于提供原子性和持久性(ACID 属性中的两个)的一系列技术。在使用 WAL 的系统中,所有的修改在提交之前都要先写入log文件中。

​ Log 文件中通常包括 redo 和 undo 信息。这样做的目的可以通过一个例子来说明。假设 一个程序在执行某些操作的过程中机器掉电了。在重新启动时,程序可能需要知道当时执行的操作是成功了还是失败了。如果使用了WAL,程序就可以检查 Log 文件,并对突然掉电时计划执行的操作内容跟实际上执行的操作内容进行比较。在这个比较的基础上,程序就可以决定是撤销已做的操作还是继续完成已做的操作,或者是保持原样。

在这里插入图片描述

现场查看:

1、VERSION:存放HDFS集群的版本信息

#Thu Sep 09 19:59:17 CST 2021  #时间
namespaceID=1133752196	#文件系统的唯一的标识符
clusterID=CID-98b396cc-04b3-4e1e-ae99-d9c1f2026996	#集群统一的标识符
cTime=1630242976706	#fsimage创建的时间,初始0 
storageType=NAME_NODE  #节点类型
blockpoolID=BP-1075021137-192.168.22.136-1630242976706	#数据块池的id
layoutVersion=-65  #版本号

2、seen_txid:

存放transactionId的文件,format之后是0

3、edits 文件信息:

hdfs oev -i edits_0000000000000001222-0000000000000001233 -o edits.xml
cat edits.xml

在这里插入图片描述

4、 fsimage 镜像文件信息:

hdfs oiv -i fsimage_0000000000000001233 -p XML -o fsimage.xml
cat fsimage.xml

在这里插入图片描述

5.1.3 NameNode 元数据存储机制

A、内存中有一份完整的元数据(内存 metadata)

B、磁盘有一个元数据镜像(fsimage)文件(在 namenode 的工作目录中)

C、用于衔接内存 metadata 和持久化元数据镜像 fsimage 之间的操作日志(edits 文件)

当客户端对hdfs中的文件进行新增或者修改操作,操作记录首先被记入edits日志

文件中,当客户端操作成功后,相应的元数据会更新到内存 metadata 中

5.1.4 元数据的 CheckPoint

​ 每隔一段时间,会由 secondary namenode 将 namenode 上积累的所有 edits 和一个最新的 fsimage 下载到本地,并加载到内存进行 merge,这个过程称为 checkpoint 。

时间的设置:

1、一般情况下面,SecondaryNameNode每间隔1小时执行一次

<property>
  <name>dfs.namenode.checkpoint.period</name>
  <value>3600s</value>
  <description>
    The number of seconds between two periodic checkpoints.
    Support multiple time unit suffix(case insensitive), as described
    in dfs.heartbeat.interval.
  </description>
</property>

在这里插入图片描述

2、当操作记录的数量达到1百万时,SecondaryNameNode执行一次。每间隔1分钟检查一次操作次数。

<property>
  <name>dfs.namenode.checkpoint.txns</name>
  <value>1000000</value>
  <description>The Secondary NameNode or CheckpointNode will create a checkpoint
  of the namespace every 'dfs.namenode.checkpoint.txns' transactions, regardless
  of whether 'dfs.namenode.checkpoint.period' has expired.
  </description>
</property>

<property>
  <name>dfs.namenode.checkpoint.check.period</name>
  <value>60s</value>
  <description>The SecondaryNameNode and CheckpointNode will poll the NameNode
  every 'dfs.namenode.checkpoint.check.period' seconds to query the number
  of uncheckpointed transactions. Support multiple time unit suffix(case insensitive),
  as described in dfs.heartbeat.interval.
  </description>
</property>

在这里插入图片描述

5.2 DataNode介绍

5.2.1 DataNode职责

1、存储管理用户的文件块数据

2、定期向 namenode 汇报自身所持有的 block 信息(通过心跳信息上报)

3、为客户端提供读写数据提供辅助

5.2.2 DataNode功能观察

上传一个文件,观察文件的 block 具体的物理存放情况: 在每一台 datanode 机器上的这个目录中能找到文件的切块:

/software/hadoop/data/datanode/current/BP-1120666852-192.168.22.128-1592207887778/current/finalized/subdir0/subdir0

在这里插入图片描述

5.3 SecondaryNamenode介绍

​ SecondaryNamenode 的作用就是分担namenode 的合并元数据的压力。所以在配置 SecondaryNamenode 的工作节点时,一定切记,不要和 namenode 处于同一节点。

​ 但事实上,只有在普通的伪分布式集群和分布式集群中才有会 SecondaryNamenode 这个角色,在HA或者联邦集群中都不再出现该角色。在HA和联邦集群中,都是有standby namenode承担。

5.4 NameNode和SecondaryNameNode联合工作流程

见单独的图片

第六章 HDFS的高可用和联邦

6.1 高可用(HA)

1、所谓的高可用是指7*24小时不中断服务,也就是HA(High Available)。

2、Hadoop2.0之前的版本,在HDFS集群中NameNode存在单点故障(SPOF:Single Point of Failure)。

3、NameNode主要在以下两个方面影响HDFS集群

​ NameNode机器发生意外,如宕机等导致集群将无法使用

​ NameNode机器需要升级,如软件、硬件升级等导致集群无法使用

4、HDFS 高可用功能通过配置Active/Standby两个NameNodes实现在集群中对NameNode的热备来解决上述问题。如果出现故障自动切换。

在这里插入图片描述

6.2 联邦机制

1、为什么要有 Federation 机制呢?

​ 在 Hadoop 2.0 之前,HDFS 的单 NameNode 设计带来很多问题,包括单点故障、内存受限等。为了解决这些问题,除了用HA 解决单点故障,我们还可以用 HDFS 的 Federation 机制来解决内存受限这个问题。

2、什么是 Federation 机制?

​ HDFS Federation 是指 HDFS 集群可同时存在多个 NameNode。

​ 这种设计可解决单 NameNode 存在的以下几个问题:

(1)HDFS 集群扩展性。

(2)性能更高效。

(3)良好的隔离性。



声明:
        文章中代码为自己根据相应理解编写,文章中出现的相关图片为自己实践中的截图和相关技术对应的图片,若有相关异议,请联系删除。感谢。转载请注明出处,感谢。


By luoyepiaoxue2014

微博地址: http://weibo.com/luoyepiaoxue2014 点击打开链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/35138.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Milvus 2.2 版本发布!

经过了 4 个月的打磨&#xff0c;Milvus 2.2.0 于 11 月 18 日正式发版&#xff01;2.2 版本推出了包括基于磁盘的近似最近邻&#xff08;ANN&#xff09;索引算法、从文件批量导入数据、基于角色的访问控制等新特性。进一步提升了向量搜索的稳定性、搜索速度和灵活的扩缩容能力…

新建 ASP.NET MVC 三层项目 | 新建 ASP.NET MVC 项目

打开Visual Studio 2019、 点击创建新项目、 在列表中找到:ASP.NET Web应用程序(.NET Framework):用于创建ASP.NET应用程序的项目模板。你可以创建ASP.NET Web Forms、MVC或Web API应用程序,并可以在ASP.NET中添加许多其他功能、 输入项目名称、输入存储位置、输入解决方…

挂耳式蓝牙耳机哪家的好用,列举五款舒适度极佳的耳机分享

谈到骨传导耳机&#xff0c;相信大家都会想到不入耳的佩戴设计&#xff0c;因为这个特性让骨传导耳机迅速席卷整个年轻一代的圈子&#xff0c;相比于传统式的耳机&#xff0c;骨传导耳机在一定程度上是对耳道是具有一定的保护&#xff0c;这也就是为什么骨传导耳机深受群众喜爱…

深入理解Linux网络技术内幕(九)——中断和网络驱动程序

文章目录前言决策和流量方向接收到帧时通知驱动程序轮询中断在中断期间处理多帧定时器驱动的中断事件组合范例中断处理函数下半部函数存在的原因下半部解决方案并发和上锁抢占功能下半部函数微任务软IRQ初始化未决软IRQ的处理__do_softirq函数依体系结构处理软IRQksoftirqd内核…

优维EasyOps,打造新一代运维新方式

数字经济时代&#xff0c;数字技术与企业业务深度融合&#xff0c;越来越多企业开始认识到&#xff0c;IT正在从内部的支撑工具转变为企业发展的核心竞争力。然而&#xff0c;面对信息建设不断深化、系统架构日趋复杂、新兴技术快速迭代等诸多挑战&#xff0c;企业如何在复杂的…

mini-Imagenet处理

由于imagenet-1k 数据集太大&#xff0c;在验证模型方面耗时太久&#xff0c;特意研究了一下mini-Imagenet&#xff0c;用来代替imageNet-1K数据集。 2016年google DeepMind团队从Imagnet数据集中抽取的一小部分&#xff08;大小约3GB&#xff09;制作了Mini-Imagenet数据集&a…

TrustSVD算法进行基于矩阵分解的商品推荐 代码+数据(可作为毕设)

案例简介 (1)方法概述: 本教程包含如下内容: 从原始的数据文件中加载数据,进行训练集和测试集的切分,并对测试集进行负采样。 对数据分batch, 利用用户历史点击记录进行模型训练 结果展示 数据集:https://download.csdn.net/download/qq_38735017/87154848 (2)宏观流程图 …

Flutter高仿微信-第32篇-单聊-语音

Flutter高仿微信系列共59篇&#xff0c;从Flutter客户端、Kotlin客户端、Web服务器、数据库表结构、Xmpp即时通讯服务器、视频通话服务器、腾讯云服务器全面讲解。 详情请查看 效果图&#xff1a; 详情请参考 Flutter高仿微信-第29篇-单聊 &#xff0c; 这里只是提取语音聊天实…

数据治理中最常听到的名词有哪些?

开门见山&#xff0c;我们先来说说何为“数据治理” 数据治理就是实现数据价值的过程。通俗的理解就是让企业的数据从不可控、不可用、不好用到可控、方便易用且对业务有极大帮助的过程。 这个过程怎么实现&#xff1f;通过采集、传输、储存等一系列标准化流程将原本零散的数…

【网络安全】文件上传之安全狗bypass

作者名&#xff1a;Demo不是emo 主页面链接&#xff1a;主页传送门创作初心&#xff1a;舞台再大&#xff0c;你不上台&#xff0c;永远是观众&#xff0c;没人会关心你努不努力&#xff0c;摔的痛不痛&#xff0c;他们只会看你最后站在什么位置&#xff0c;然后羡慕或鄙夷座右…

极光推送SDK引起的内存泄露排查

发现问题 发现推送服务的老年代不断增长&#xff0c;部分内存无法回收 内存泄露堆栈分析 通过运维平台ark&#xff0c;执行了jmap进行heaphump&#xff0c;使用mat工具分析&#xff0c;发现可能存在内存泄露 发现有大量的SocksSocketImpl对象被Finalizer引用 看SocksSocke…

SolidWorks二次开发 API-SOLIDWORKS Simulation分析参数修改

今天我们来讲个小例子。 是关于SOLIDWORKS Simulation的。 先说明一点&#xff0c;这东西我也不熟。有问题别问我 首先&#xff0c;我做了一个很难的分析&#xff0c;条件也是很复杂&#xff0c;具体操作我就不说了&#xff0c;分析结果如下: 当然这个图和我们今天要做的事情…

【台前调度】使用指南:如何打开和关闭iPadOS 16台前调度

【台前调度】可以说是iPadOS 16系统最实用的功能之一。它拥有崭新的多任务处理能力&#xff0c;能自动管理App和视窗&#xff0c;使多个任务窗口能够快速又简单地切换。 但是不少小伙伴更新iPadOS 16后还不知道怎么使用台前调度功能。如何开启使用和关闭iPadOS台前调度&#xf…

[附源码]SSM计算机毕业设计旅游管理系统JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

苹果手机之间怎么传音乐,怎么把音乐传到苹果手机上

很多人喜欢在自己的苹果手机中下载各种音乐&#xff0c;并且会将音乐传输到其他地方&#xff0c;苹果手机之间怎么传音乐&#xff1f;在此处获取将iphone里的音乐传输到电脑和iphone的解决方案。 一、iPhone如何传输音乐到电脑&#xff1f; 方法1&#xff1a;通过iTunes将iPho…

黑马瑞吉外卖之购物车功能开发(添加购物车和购物车数据展示)

黑马瑞吉外卖之购物车功能前端界面分析后台购物车功能逻辑实现前端界面分析 当我们点击选择规格的时候&#xff0c;数据参数item会传入按钮绑定的方法中 我们点击到这个按钮的时候&#xff0c;那么就会绑定到这个方法。这个方法会将数据给这个窗体中的数据项赋值。这个diaglo…

【linux】【platform[1]】简述device和driver几种匹配方式

文章目录0.env10. 简述20. 测试源码1. driver2. device2.1 方式一&#xff1a;DTS2.2 方式二&#xff1a;ACPI2.3 方式三&#xff1a;id table2.4 方式四&#xff1a;NAME3. 测试log0.env ARM 32bit linux4.4.6010. 简述 主要讲述了几种device和driver匹配的方式以及demo框架文…

82055-94-5|N3-PEG-N3|Azide-PEG-Azide|叠氮PEG叠氮可修饰蛋白质

可用来修饰蛋白质、多肽以及其他材料的叠氮-PEG-叠氮&#xff0c;其英文名为N3-PEG-N3或Azide-PEG-Azide&#xff0c;它所属分类为Azide PEG。 该peg试剂的分子量均可定制&#xff0c;有&#xff1a;叠氮-PEG-叠氮 2000、叠氮peg叠氮 1000、叠氮-聚乙二醇-叠氮 5000、N3-PEG-N…

天宇优配|国产海上风电装备大突破,行业复合增速将超3

在全球加紧应对气候变化以及能源供应严重的布景下&#xff0c;海优势电工业面对历史性开展机会。 全球单机容量最劲风电机组下线 据央视新闻&#xff0c;近日&#xff0c;我国自主研制的16兆瓦海优势电机组在福建三峡海优势电世界工业园下线。单机容量16兆瓦海优势电机组&…

MCE 抗乳腺癌化合物库上线丨靶向乳腺癌知多少?

乳腺癌是全世界女性最常见的恶性肿瘤&#xff0c;世界卫生组织 (WHO) 数据显示&#xff0c;全球每年大约有 210 万女性受乳腺癌影响&#xff0c;乳腺癌死亡率在女性肿瘤中居于首位。 认识乳腺癌 ■ 什么是乳腺癌&#xff1f; 乳腺癌 (Breast cancer) 是一种具有多种亚型的异质…