分布式文件系统HDFS实践及原理详解part3
创始人
2024-02-14 22:28:53
0

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小时执行一次

dfs.namenode.checkpoint.period3600sThe number of seconds between two periodic checkpoints.Support multiple time unit suffix(case insensitive), as describedin dfs.heartbeat.interval.

在这里插入图片描述

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

dfs.namenode.checkpoint.txns1000000The Secondary NameNode or CheckpointNode will create a checkpointof the namespace every 'dfs.namenode.checkpoint.txns' transactions, regardlessof whether 'dfs.namenode.checkpoint.period' has expired.
dfs.namenode.checkpoint.check.period60sThe SecondaryNameNode and CheckpointNode will poll the NameNodeevery 'dfs.namenode.checkpoint.check.period' seconds to query the numberof uncheckpointed transactions. Support multiple time unit suffix(case insensitive),as described in dfs.heartbeat.interval.

在这里插入图片描述

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 点击打开链接

相关内容

热门资讯

医院形象宣传口号 医院形象宣传口号大全  在日常学习、工作和生活中,大家都不可避免地会接触到口号吧,口号具有在理智上启...
关爱牙齿健康标语 关爱牙齿健康标语(精选100句)  在学习、工作、生活中,大家对标语都再熟悉不过了吧,标语肩负着“社...
咖啡的广告语 关于咖啡的广告语(精选365句)  品尝一杯好咖啡,如同欣赏一件古董,让人细细品味。关于咖啡的广告语...
关于环保的标语   关于环保的标语  1、世界变成大花园,垃圾分类是关键。  2、同处蓝天下共栖地球上让我们的世界更...
指导教师评语短 指导教师评语短  引导学生培养坚强毅力的评语,下面小编整理的指导教师评语短,欢迎来参考!  1、该生...
金公子珠宝的广告词 金公子珠宝的广告词  1、珠宝亦有价,真情乃无价。  创意说明:金银珠宝首饰一般价格比较高昂,愿意买...
师傅对徒弟的评价评语 师傅对徒弟的评价评语  篇一:师傅对徒弟综合评价  20XX年8月,学校来了一批新教师。9月10日,...
文明行为规范标语 文明行为规范标语(精选115句)  无论是身处学校还是步入社会,大家对标语都再熟悉不过了吧,标语不但...
进入高三励志标语 进入高三励志标语(精选180句)  在日常的学习、工作、生活中,大家最不陌生的就是标语了吧,标语在一...
大学毕业班级鉴定评语 大学毕业班级鉴定评语(精选120条)  无论是身处学校还是步入社会,大家都有写评语的经历,对评语很是...
中考横幅标语大全   1.春播秋收近十载,一朝收获终有成。  2.不论你在什么时候开始,重要的是开始之后不要停止。  ...
学校六一活动标语 学校六一活动标语(精选50句)  在现实生活或工作学习中,大家对标语都再熟悉不过了吧,标语以其时间性...
家装实木高档油漆门广告语 家装实木高档油漆门广告语  1、一“门”心思只为您。  2、打开木门,开启幸福。  3、独门工艺,专...
厕所文明标语 厕所文明标语(通用185句)  在现实生活或工作学习中,大家都对那些朗朗上口的标语很是熟悉吧,标语是...
宣传稿格式 宣传稿格式  一、宣传稿的介绍  首先,新闻宣传稿要重视宣传的本身意义和作用。  其次,要懂得如何在...
校园文明标语 校园文明标语  在学习、工作、生活中,大家都接触过比较经典的标语吧,标语的作用是便于“造势”,形成一...
打折促销标语 打折促销标语大全  XX真情回馈理惠X折  终极X小时终极抄底价  心动,不如行动!  不做不休用暴...
最新学习小组口号 最新学习小组口号  在日常的学习、工作、生活中,大家都经常接触到口号吧,口号作为意识的表现形式之一,...
垃圾分类标语 垃圾分类标语(精选140句)  在平时的学习、工作或生活中,大家最不陌生的就是宣传语了吧,宣传语具有...
安全生产横幅标语口号 安全生产横幅标语口号大全  ●安全人人抓,幸福千万家  ●安全生产 人人有责  ●安全生产 重在预防...