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

news/2024/5/18 20:53:58/文章来源:https://blog.csdn.net/luoyepiaoxue2014/article/details/128014677

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 describedin 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 checkpointof the namespace every 'dfs.namenode.checkpoint.txns' transactions, regardlessof 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 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.</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.luyixian.cn/news_show_224880.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

异构网络小入

A Survey of Heterogeneous Information Network Analysis Heterogeneous Graph Attention Network 异构网络很火吗&#xff1f; 在一个网络中&#xff0c;不用节点的类型不同&#xff0c;这是肯定的。 所以&#xff0c;异构网络在表征比较复杂的情形时&#xff0c;是比较合适…

基于图像识别的小车智能寻迹控制系统

目录 摘要…… I Abstract II 基于图像识别的智能寻迹控制系统设计 I Design of Intelligent tracking Control system based on Image recognition II 目录 III 第1章 绪论 1 1.1 课题背景 1 1.1 国内外文献综述 1 1.2 论文研究内容 2 第2章 基于图像识别的智能寻迹控制系统方…

【安装Ubuntu18.04遇到的问题】未找到WIFI适配器

大家好&#xff0c;我是小政。好久没有更新文章&#xff0c;近期开始陆续分享一些研究生阶段正在学习的知识和遇到的一些问题。 联想拯救者Y9000P关于安装Ubuntu未找到WIFI适配器的解决方法1.Ubuntu18.042.网卡信息3.解决方法&#xff08;1&#xff09;用手机USB连接电脑提供网…

动态规划--树型dp

6个题1. 树的最长路径2.树的中点.由于第三题需要用到一些数学地知识&#xff0c;所以先去补一补数学知识。连接链接在这里4.二叉苹果树5.战略游戏6.皇宫守卫1. 树的最长路径 定义&#xff1a;树中两个点直接的最远距离称为树的直径 先说一个结论 先任意找到一个树中一个点u&am…

分布式协调系统ZooKeeper实践与原理剖析

基础的一些知识&#xff0c;高阶知识后续看看补充 第一章 ZooKeeper概述 1.1 介绍 What is ZooKeeper&#xff1f; Apache ZooKeeper is an effort to develop and maintain an open-source server which enables highly reliable distributed coordination ZooKeeper is…

大学生静态HTML网页设计--公司官网首页

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材&#xff0c;DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 公司官网网站 | 企业官网 | 酒店官网 | 等网站的设计与制 HTML期末大学生网页设计作业&#xff0c;Web大学生网页 HTML&#xff1a;结构 CSS&#xf…

SpringIoc依赖查找-5

1. 依赖查找的今世前生: Spring IoC容器从Java标准中学到了什么? 单一类型依赖查找 JNDI - javax.naming.Context#lookup(javax.naming.Name) JavaBeans - java.beans.beancontext.BeanContext 集合类型依赖查找 java.beans.beancontext.BeanContext 集合查找方法 层…

sqli-labs/Less-51

这一关的欢迎界面依然是以sort作为注入点 我们首先来判断一下是否为数字型注入 输入如下 sortrand() 对尝试几次 发现页面并没有发生变化 说明这道题的注入类型属于字符型 然后尝试输入以下内容 sort1 报错了 报错信息如下 我们从报错信息可以知道这道题的注入类型属于单…

期末前端web大作业——HTML+CSS+JavaScript仿京东购物商城网页制作(7页)

常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他等网页设计题目, A…

#边学边考 必修5 高项:对人管理 第2章 项目沟通管理和干系人管理

答题报告 自我分析 有可能是间隔时间太长&#xff0c;本章节从开始学习到今天&#xff08;11.24&#xff09;学完&#xff0c;中间至少停止了1周以上&#xff0c;造成对基本知识记忆不牢固。对重点知识没有重点记忆&#xff0c;走马观花&#xff0c;以至于混淆。 答题解析 关…

MySQL 进阶 图文详解InnoDB储存引擎

前言 SQL 语句的最终执行者是存储引擎。存储引擎在经解析器、优化器处理后被执行器调用其接口执行优化后的执行计划。MySQL 存储引擎包括 InnoDB、Myisam、Memory、Archive、CSV 存储引擎等&#xff0c;其中最常用也是MySQL 默认的存储引擎是 InnoDB。 写入缓冲池&#xff08;…

用DIV+CSS技术设计的水果介绍网站(web前端网页制作课作业)

&#x1f380; 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

软件测试面试技巧有哪些?可以从这2个方面去进行准备

面试所有只职场人&#xff0c;通往工作岗位的第一道关卡&#xff0c;也是最重要的一道门槛。而面试中&#xff0c;如何回答HR提出的问题很大程度上决定了面试能不能成功。所以这些软件测试的面试技巧你可不能错过了。 首先是自我介绍 自我介绍的时间不能太短&#xff0c;几十秒…

(附源码)计算机毕业设计JavaJava毕设项目财务管理系统的设计与实现

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

【Flutter】shape 属性 ShapeBorder,形状

文章目录前言一、shape 是什么&#xff1f;二、不同的形状1.BeveledRectangleBorder2.Border3.CircleBorder圆形4.ContinuousRectangleBorder连续圆角5.StadiumBorder 体育场边界 &#xff0c;药丸形状6.OutlineInputBorder外边框可以定制圆角7.UnderlineInputBorder下划线总结…

Springboot Security 前后端分离模式自由接口最小工作模型

但凡讲解Springboot Security的教程&#xff0c;都是根据其本身的定义&#xff0c;前后端整合在一起&#xff0c;登录采用form或者basic。我们现在的很多项目&#xff0c;前后端分离&#xff0c;form登录已经不适用了。很多程序的架构要求所有的接口都采用application/json方式…

复制集群架构设计技巧

Redis Sentinel设计技巧 Redis Sentinel基本架构 Monitoring Sentinel可以监控Redis节点的状态 Notification Sentinel可以通过API进行集群状态通知 Automatic failover Sentinel实现故障自动切换 Configuration provider Sentinel为client提供发现master节点的发现功能…

Java项目:JSP校园运动会管理系统

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目包含三种角色&#xff1a;运动员、裁判员、管理员&#xff1b; 运动员角色包含以下功能&#xff1a; 运动员登录,个人信息修改,运动成绩…

【优化求解】粒子群算法求解干扰受限无人机辅助网络优化问题【含Matlab源码 230期】

⛄一、粒子群简介 1 粒子群优化算法 粒子群优化算法( PSO)是指通过模拟鸟群觅食的协作行为,实现群体最优化。PSO是一种并行计算的智能算法,其基本模型如下: 假设群体规模为M,在D维空间中,群体中的第i个个体表示为XD ( xm1,xm2…xm D)T,速度表示为VD ( vm1,vm2…vm D)T,位置( …

一个简单的音乐网站设计与实现(HTML+CSS)

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材&#xff0c;DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 音乐网页设计 | 仿网易云音乐 | 各大音乐官网网页 | 明星音乐演唱会主题 | 爵士乐音乐 | 民族音乐 | 等网站的设计与制作 | HTML期末大学生网页设计作…