大数据3 -Hadoop HDFS-分布式文件系统

news2025/1/16 20:16:24

目录

1.为什么需要分布式存储?

2. HDFS的基础架构

3. HDFS存储原理

4. NameNode是如何管理Block块的

5. HDFS数据的读写流程 



1.为什么需要分布式存储?

数据量太大,单机存储能力有上限,需要靠数量来解决问题
数量的提升带来的是网络传输、磁盘读写、 CPU 、内存等各方面的综合提升。 分布式组合在一起可以达到 1+1>2 的效果

大数据体系中,分布式的调度主要有2类架构模式:

去中心化模式

       中心化模式 

去中心化模式,没有明确的中心。

众多服务器之间基于特定规则进行同步协调。

大数据框架,大多数的基础架构上,都是符合:中心化模式的

即:有一个中心节点(服务器)来统筹其它服务器的工作,统一指挥,统一调派,避免混乱。

这种模式,也被称之为:一主多从模式,简称主从模式(Master And Slaves

主从模式(中心化模式)在现实生活中同样很常见:

公司企业管理
组织管理
行政管理
等等

Hadoop框架,就是一个典型的主从模式(中心化模式)架构的技术框架。

总结:

1. 分布式系统常见的组织形式?

去中心化模式:没有明确中心,大家协调工作
中心化模式:有明确的中心,基于中心节点分配工作

2. 什么是主从模式?

主从模式(Master-Slaves)就是中心化模式,表示有一个主节点来作为管理者,管理协调下属一批从节点工作。

3. Hadoop是哪种模式?

主从模式(中心化模式)的架构

2. HDFS的基础架构

HDFSHadoop三大组件(HDFSMapReduceYARN)之一

全称是: Hadoop Distributed File System Hadoop 分布式文件系统)
Hadoop 技术栈内提供的分布式数据存储解决方案
可以在多台服务器上构建存储集群,存储海量的数据

 HDFS的基础架构:

NameNode

HDFS 系统的主角色,是一个独立的进程
负责管理 HDFS 整个文件系统
负责管理 DataNode

SecondaryNameNode

NameNode 的辅助,是一个独立进程
主要帮助 NameNode 完成元数据整理工作(打杂)

DataNode

HDFS 系统的从角色,是一个独立进程
主要负责数据的存储,即存入数据和取出数据

3. HDFS存储原理

4. NameNode是如何管理Block块的

edits文件

hdfs中,文件是被划分了一堆堆的block块,那如果文件很大、以及文件很多,Hadoop是如何记录和整理文件和block块的关系呢?

答案就在于NameNode

NameNode基于一批edits和一个fsimage文件的配合

完成整个文件系统的管理和维护

edits记录每一次HDFS的操作

逐渐变得越来越大

 

问题在于,当用户想要查看某文件内容

如:/tmp/data/test.txt

就需要在全部的edits中搜索

(还需要按顺序从头到尾,避免后期改名或删除)

效率非常低

需要合并edits文件,得到最终的结果

fsimage文件

NameNode元数据管理维护

NameNode基于editsFSImage的配合,完成整个文件系统文件的管理。

1. 每次对HDFS的操作,均被edits文件记录

2. edits达到大小上线后,开启新的edits记录

3. 定期进行edits的合并操作

如当前没有 fsimage 文件,  将全部 edits 合并为第一个 fsimage
如当前已存在 fsimage 文件,将全部 edits 和已存在的 fsimage 进行合并,形成新的 fsimage

5. 重复123流程

 元数据合并控制参数

对于元数据的合并,是一个定时过程,基于:

dfs.namenode.checkpoint.period,默认 3600 (秒)即 1 小时
dfs.namenode.checkpoint.txns,默认 1000000 ,即 100W 次事务

只要有一个达到条件就执行。

检查是否达到条件,默认60秒检查一次,基于:

dfs.namenode.checkpoint.check.period,默认 60 (秒),来决定

SecondaryNameNode的作用

对于元数据的合并,还记得HDFS集群有一个辅助角色:SecondaryNameNode吗?

没错,合并元数据的事情就是它干的

SecondaryNameNode会通过httpNameNode拉取数据(editsfsimage

然后合并完成后提供给NameNode使用。

1. NameNode基于

edits 记录每次操作
fsimage ,记录某一个时间节点前的当前文件系统全部文件的状态和信息

维护整个文件系统元数据

2. edits文件会被合并到fsimage中,这个合并由:

SecondaryNameNode来操作

3. fsimage记录的内容是

5. HDFS数据的读写流程 

1. 客户端向NameNode发起请求

2. NameNode审核权限、剩余空间后,满足条件允许写入,并告知客户端写入的DataNode地址

3. 客户端向指定的DataNode发送数据包

4. 被写入数据的DataNode同时完成数据副本的复制工作,将其接收的数据分发给其它DataNode

5. 如上图,DataNode1复制给DataNode2,然后基于DataNode2复制给Datanode3DataNode4

6. 写入完成客户端通知NameNodeNameNode做元数据记录工作

 读:

关键信息点:

NameNode 不负责数据写入 ,只负责元数据记录和权限审批
客户端直接 1 DataNode 写数据, 这个DataNode一般是 离客户端最近 (网络距离) 的那一个
数据块副本的复制工作, DataNode 之间自行完成 (构建一个 PipLine ,按顺序复制分发,如图 1 2, 2 3 4

写:

关键点:

1、数据同样不通过NameNode提供

2NameNode提供的block列表,会基于网络距离计算尽量提供离客户端最近的

这是因为1block3份,会尽量找离客户端最近的那一份让其读取

1、客户端向NameNode申请读取某文件

2 NameNode判断客户端权限等细节后,允许读取,并返回此文件的block列表

3、客户端拿到block列表后自行寻找DataNode读取即可

1、对于客户端读取HDFS数据的流程中,一定要知道

不论读、还是写,NameNode都不经手数据,均是客户端和DataNode直接通讯

不然对NameNode压力太大

2、写入和读取的流程,简单来说就是:

NameNode 做授权判断(是否能写、是否能读)
客户端直连 DataNode 进行写入(由 DataNode 自己完成副本复制)、客户端直连 DataNode 进行 block 读取
写入,客户端会被分配找离自己最近的 DataNode 写数据
读取,客户端拿到的 block 列表,会是网络距离最近的一份

3、网络距离

最近的距离就是在同一台机器
其次就是同一个局域网(交换机)
再其次就是跨越交换机
再其次就是跨越数据中心

HDFS内置网络距离计算算法,可以通过IP地址、路由表来推断网络距离

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

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

相关文章

【区块链】走进web3的世界-合约交互中的异常/边界处理

在以太坊智能合约中,异常处理是一个非常重要的问题,因为任何一个函数调用都有可能导致异常。常见的异常包括函数调用失败、无效参数、内部错误等。 在 Solidity 中,可以使用 require、assert 和 revert 等关键字来处理异常。这些关键字可以用…

第一章 序言:Pytorch在自然语言处理中的应用

01 序言:Pytorch在自然语言处理中的应用 目录01 序言:Pytorch在自然语言处理中的应用1. PyTorch简介2. 自然语言处理3. PyTorch在自然语言处理中的应用3.1 文本分类3.2 情感分析3.3 机器翻译4. 结论1. PyTorch简介 首先,我们需要介绍一下PyT…

WINDOWS消息

WINDOWS消息 Unit01消息队列 01消息队列概念 消息队列是用于存放消息的队列消息在队列中先进先出所有窗口程序都有消息队列程序(GetMessage)可以从队列中获消息 02消息队列分类 系统消息队列:由系统维护的消息队列(这个队列非…

Qt的内存管理机制

QObject的parent设置为null 1.如果构造时直接指定了null,当前实例不会有父对象存在,Qt也不能自动析构该实例,除非实例超出作用域导致析构函数被调用,使用deletelater()函数,不建议使用delete 2.如果指定了parent&#…

关于电商商品数据API接口列表,你想知道的(详情页、Sku信息、商品描述、评论问答列表)

目录 一、商品数据API接口列表 二、商品详情数据API调用代码item_get 三、获取sku详细信息item_sku 四、获得淘宝商品评论item_review 五、数据说明文档 进入 一、商品数据API接口列表 二、商品详情数据API调用代码item_get <?php// 请求示例 url 默认请求参数已经URL…

数据结构-插入排序

一.概要 插入排序是一种基于比较的排序算法&#xff0c;其基本思想是将待排序的元素插入到已排序的序列中&#xff0c;形成新的有序序列。 插入排序算法的过程如下&#xff1a; 将待排序序列分为两部分&#xff1a;已排序部分和未排序部分&#xff1b; 初始时&#xff0c;已…

C++string类的详细使用方法

String类的详细使用 文章目录String类的详细使用初始化扩容空间resize与reserve扩容长度获取插入与删除函数运算符插入append插入assign字符串截取push_back尾插erase删除replase替换swap交换pop_back尾删substr截断字符串功能copy拷贝find查找rfind反向查找find_first_of匹配查…

三路快排(基于三指针单趟排序的快速排序)+快排时间复杂度再分析

目录 一.前言 二. 三路快排 &#x1f60d;算法思想: &#x1f60d;算法实现步骤: &#x1f60d;三指针单趟排序的实现:​ &#x1f60d;非递归快排完全体: &#x1f914;与C标准库里的快排进行对比测试: 三.快排时间复杂度再分析 一.前言 http://t.csdn.cn/mz8dghttp://…

SolidWorks2020安装教程

破解文件及步骤 和 安装包 hf&#xff1a;SolidWorks2020 即可 &#xff08;我的推广 共中号&#xff09; Before installation, block the outgoing Internet access by means of Windows Firewall or cord plug. Check .NET Framework 3.5 and 4.0 are installed. If .NET …

Hive安装与操作

目录 环境 数据 实验步骤与结果 &#xff08;1&#xff09;环境启动 &#xff08;2&#xff09;Hive基本操作 环境 Hadoop集群开发环境、mysql、Hive环境 数据 course.txt、sc.txt、student.txt 实验步骤与结果 &#xff08;1&#xff09;环境启动 ①执行命令&#xf…

JVM的内存结构(超详细附加大厂面试题)

内存结构 1、什么是 JVM &#xff1f; 1&#xff09;定义 Java Virtual Machine &#xff0c;Java 程序的运行环境&#xff08;Java 二进制字节码的运行环境&#xff09;。 2&#xff09;好处 一次编译&#xff0c;处处执行 自动的内存管理&#xff0c;垃圾回收机制 数组下…

结构重参数化宇宙(Re-parameterization Universe)

文章目录0. 前言1. Re-parameterization Universe1.1 RepVGG1.2. RepOptimizer2. 应用参考资料0. 前言 一方面&#xff0c;大量研究表明&#xff0c;多分支网络架构的性能普遍优于单分支架构&#xff1b;另一方面&#xff0c;相比多分支架构&#xff0c;单分支架构更有利于部署…

windows系统管理_windows server 2016 用户管理

用户账户的概述 **计算机用户账户&#xff1a;**由将用户定义到某一系统的所有信息组成的记录,账户为用户或计算机提供安 全凭证&#xff0c;包括用户名和用户登陆所需要的密码&#xff0c;以及用户使用以便用户和计算机能够登录到网络并 访问域资源的权利和权限。不同的身份拥…

自动控制原理模拟卷2

自动控制原理模拟题二 Question1 电炉温度控制系统原理如下图所示,分析系统保持电炉温度恒定的工作过程,指出系统的被控对象、被控量及各部件的作用,并画出系统方块图。 解: 电炉使用电阻丝加热,并要求保持炉温恒定,图中采用热电偶来测量电炉温并将其转换为电压信号,将…

Android 新版 Logcat 操作小技巧

新版的Android Studio中启用了新的 Logcat&#xff0c;有些小技巧这里介绍一下&#xff1a; 文章目录1. Logcat启动2. Logcat 搜索1. 搜索当前包名下的日志&#xff1a;2. 添加日志级别3. 添加标签4. 标签字段5. 排除字段6. 使用正则表达式7. 使用正则表达式排除8. 使用age截取…

初识C语言 ——“C Primer Plus”

各位CSDN的uu们你们好呀&#xff0c;今天&#xff0c;小雅兰的内容是读一本好书&#xff0c;这一本书的名字就叫做《C Primer Plus》&#xff0c;那么&#xff0c;又回到了我们的初识C语言阶段啦&#xff0c;保证零基础都能看懂噢&#xff0c;下面&#xff0c;让我们进入C语言的…

app抓包实战

文章目录一、抓包原理二、常用应用场景三、过滤四、重发五、修改请求六、断点&#xff08;BreakPoint&#xff09;一、抓包原理 二、常用应用场景 解决移动端接口测试 解决接口测试过程中检查传参错误问题 mock测试&#xff08;虚拟的对象代替正常的数据、后端接口没有开发完成…

XXL-JOB分布式任务调度平台搭建以及和SpringBoot整合应用

1 前言 XXL-JOB 是一个轻量级分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线&#xff0c;开箱即用。 可以前往 Gitee 地址进行下载使用&#xff1a; https://gitee.com/xuxueli0323/xxl-job.g…

计算机网络考试复习——第三章 3.1 3.2

本章考试范围为3.1 3.2 3.3 3.4 首先明确数据链路层在网络中是在物理层的上面从下网上看是在第二层&#xff0c;在数据链路层传输的单位是帧。 网络中的主机、路由器等都必须实现数据链路层&#xff0c;局域网中的主机、交换机等都必须实现数据链路层。 数据链路层的地位&am…

Win10 下编译 OpenCV 4.7.0详细全过程,包含xfeatures2d

在Win10下编译 OpenCV 4.7.0过程中&#xff0c;踩了几个坑&#xff0c;这里记录下来&#xff0c;供大家参考。 1. 下载源文件 GitHub上下载OpenCV 4.7.0源文件&#xff0c;及opencv_contrib-4.7.0&#xff0c;如果不方便下载&#xff0c;以下是百度网盘链接&#xff0c;有需要…