分布式文件系统HDFS-1

news2025/2/7 23:16:09

文章目录

  • 主要内容
  • 一.分布式文件系统HDFS
      • 1.定义
      • 2.优缺点
      • 3.原理
      • 4.设计思想及原则
      • 5.框架结构
    • 6.HDFS的主要组件包括
      • 7.块、名称节点和数据节点
      • 8.HDFS冗余数据保存
      • 9.数据存取策略
  • 总结

主要内容

  1. HDFS

一.分布式文件系统HDFS

1.定义

HDFS(Hadoop Distributed File System)是Apache
Hadoop生态系统中的一个分布式文件系统,用于存储大规模数据集并提供高可靠性、高性能的数据访问。HDFS采用了主从架构,其中包括一个主节点(NameNode)和多个从节点(DataNode)。NameNode负责管理文件系统的命名空间、存储文件元数据信息,而DataNode负责存储实际的数据块。

2.优缺点

优点:

  1. 高可靠性:HDFS采用数据冗余和容错机制,能够自动检测并修复数据损坏或节点故障。
  2. 高可扩展性:HDFS可以无缝地扩展到成百上千台服务器,适应大规模数据存储需求。
  3. 高性能:HDFS采用数据块存储和数据本地化策略,能够提供高速的数据读写性能。
  4. 易于管理:HDFS具有简单的管理接口和自动化的数据复制和备份功能,减少了管理员的工作负担。

缺点:

  1. 不适用于小文件存储:HDFS适合存储大文件,对于大量小文件存储效率较低。
  2. 不支持实时数据访问:HDFS主要用于批处理作业,对于实时数据访问的需求不太适用。
  3. 单点故障:NameNode是HDFS的关键节点,一旦NameNode发生故障,整个文件系统将无法正常运行。

3.原理

HDFS将文件分割成固定大小的数据块(默认大小为128MB),并将这些数据块分布存储在多个DataNode上。每个数据块会有多个副本存储在不同的DataNode上,以提高数据的可靠性和容错性。NameNode负责维护文件系统的元数据信息,包括文件目录结构、数据块位置等,而DataNode负责存储和管理实际的数据块。

4.设计思想及原则

HDFS的设计思想主要包括高可靠性、高可扩展性和高性能。通过数据冗余和容错机制保证数据的可靠性,通过分布式存储和数据本地化策略实现高性能的数据访问,通过简单的管理接口和自动化的数据复制和备份功能提高系统的可管理性。

原则:

  • 硬件故障:HDFS中的硬件应该是常态,并不是意外。因为一个HDFS包含大量服务器,每个节点可能会存在硬件故障。所以,HDFS需要检测故障、快速和自动回复数据。
  • 流数据访问:HDFS是被设计用于批量处理,而非普通应用程序的用户交互。设计重点应该在于支持高的吞吐量。
  • 大数据集:HDFS支持大文件,应该提供高带宽和可扩展的上百个节点,文件大小应该在GB及TB以上。
  • 简单一致性原则:HDFS的文件需要被多个用户多次续写,所以其需要一个一次写入多次读取的文件访问模型。一个文件一旦创建,写入和关闭后就不再需要改变,支持在文件的末端进行追加数据而不支持在文件的任意位置进行修改。
  • 移动计算比移动数据更划算:应用的计算机在其要操作的数据执行那就会更高效。尤其是数据集非常大的时候,将最大限度地减少网络拥堵和提高系统的吞吐量。
  • 轻便的跨异构的软硬件平台:容易从一个平台跨到另一个平台。

5.框架结构

HDFS的框架结构包括一个NameNode和多个DataNode。NameNode负责管理文件系统的命名空间和存储文件元数据信息,DataNode负责存储实际的数据块。客户端通过与NameNode通信获取文件元数据信息,然后直接与DataNode通信进行数据读写操作。整个系统采用主从架构,通过多个DataNode实现数据的分布式存储和备份。
在这里插入图片描述

6.HDFS的主要组件包括

在这里插入图片描述
在这里插入图片描述

  1. NameNode:NameNode是HDFS的主要组件,负责管理文件系统的命名空间和数据块的映射关系。它记录了文件系统的元数据信息,包括文件和目录的层次结构、文件的属性和数据块的位置等。

  2. DataNode:DataNode是HDFS的存储节点,负责存储和管理数据块。它接收来自客户端的读写请求,并将数据块存储在本地磁盘上。DataNode还定期向NameNode报告数据块的存储情况。

  3. Secondary NameNode:Secondary NameNode负责定期合并NameNode的编辑日志,生成新的镜像文件,并将其发送给NameNode。它可以帮助恢复NameNode的故障,减少系统恢复时间。
    在这里插入图片描述

  4. Client:Client是HDFS的用户接口,负责与NameNode和DataNode进行通信,实现文件的读写操作。客户端可以通过Hadoop命令行工具或HDFS API与文件系统交互。

7.块、名称节点和数据节点

在HDFS中,数据被分割成多个块(block)并存储在不同的数据节点(DataNode)上,由名称节点(NameNode)负责管理和调度这些块的存储和访问。

  1. 块(Block):HDFS将大文件分割成固定大小的块(通常默认为128MB),并将每个块复制多个副本(通常默认为3个)存储在不同的数据节点上。这种数据块的复制机制保证了数据的可靠性和容错性,即使某个数据节点发生故障,数据仍然可以通过其他副本访问。

  2. 名称节点(NameNode):名称节点是HDFS的关键组件,负责管理文件系统的命名空间、块的映射以及数据块的复制和调度。名称节点维护了文件目录结构和元数据信息(如文件名、块的位置等),并负责响应客户端的文件操作请求(如读取、写入、删除等)。名称节点是HDFS中的单点故障,因此通常会配置备用名称节点(Secondary NameNode)来提高系统的可靠性。
    在这里插入图片描述

  3. 数据节点(DataNode):数据节点是HDFS中存储实际数据块的节点,负责存储和管理数据块的读写操作。数据节点定期向名称节点发送心跳信号,汇报自己的存储容量和健康状态,并接收名称节点的指令来执行数据块的复制、移动或删除操作。数据节点之间通过网络通信来交换数据块,并保持数据的一致性和可靠性。

总的来说,HDFS的块、名称节点和数据节点之间相互协作,共同构成了一个高可靠、高可扩展的分布式文件系统,适用于大规模数据存储和处理的场景。通过合理配置和管理这些组件,可以有效提高系统的性能和可靠性,满足不同应用的需求。

8.HDFS冗余数据保存

在这里插入图片描述
作为一个分布式文件系统,为了保证系统的容错性和可用性,HDFS采用了多副本方式对数据进行冗余存储,通常一个数据块的多个副本会被分布到不同的数据节点上,数据块1被分别存放到数据节点A和C上,数据块2被存放在数据节点A和B上。这种多副本方式具有以下几个优点:

  • 加快数据传输速度
  • 容易检查数据错误
  • 保证数据可靠性

在这里插入图片描述
在这里插入图片描述

9.数据存取策略

  • HDFS提供了一个API可以确定一个数据节点所属的机架ID,客户端也可以调用API获取自己所属的机架ID
  • 当客户端读取数据时,从名称节点获得数据块不同副本的存放位置列表,列表中包含了副本所在的数据节点,可以调用API来确定客户端和这些数据节点所属的机架ID,当发现某个数据块副本对应的机架ID和客户端对应的机架ID相同时,就优先选择该副本读取数据,如果没有发现,就随机选择一个副本读取数据
    在这里插入图片描述

总结

以上是今天要讲的内容,学到了分布式文件系统HDFS相关知识。

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

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

相关文章

使用python在本地指定的目录临时模拟服务器(3),2024年最新网易 面经

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7 深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞…

二叉树的前、中、后序遍历【c++】

前序遍历&#xff1a;根左右 中序遍历&#xff1a;左根右 后序遍历&#xff1a;左右根 #include <iostream> #include <vector> using namespace std;//双链表节点结构 typedef struct treeNode {int value;struct treeNode* left;struct treeNode* right;treeNod…

Vue3(四):Pinia

一、Pinia介绍 Pinia是一个专门为Vue.js设计的状态管理库&#xff0c;它提供了一种简单和直观的方式来管理应用程序的状态。在使用Pinia时&#xff0c;可以轻松地创建定义状态的存储&#xff0c;然后将其与Vue组件绑定&#xff0c;使它们能够使用该状态。和上一个博客提到的Vu…

bestvike --bvframe学习

ref title fetch后台api 分页属性&#xff0c;pagination 要差几条&#xff1f;pagelimit 在api中写一个饭方法&#xff0c;vue中用用他 vue.cinfig.js中配置别名 nacos微服务 实体类要继承basedata&#xff08;封装了公共数据&#xff09; 控制器autowired&#xff0c;getm…

哈希函数的简单介绍

哈希函数&#xff1a; hash: 把....弄糟(乱) 又称为散列函数&#xff0c;杂凑函数 什么是哈希表&#xff1f; 哈希表简单来说可以看作是是对数组的升级&#xff0c;&#xff08;也有不少人认为哈希表的本质就是数组&#xff09;&#xff0c;那么哈希表和数组的具体联系和区…

每日OJ题_BFS解决最短路③_力扣127. 单词接龙

目录 ③力扣127. 单词接龙 解析代码 ③力扣127. 单词接龙 127. 单词接龙 难度 困难 字典 wordList 中从单词 beginWord 和 endWord 的 转换序列 是一个按下述规格形成的序列 beginWord -> s1 -> s2 -> ... -> sk&#xff1a; 每一对相邻的单词只差一个字母。…

ObjectMapper的具体介绍与使用

文章目录 声明一、前言二、ObjectMapper与JSONObject比较1、核心主要有三个部分&#xff1a;依赖包不同 2、ObjectMapper使用概述2.1、工程的pom.xml导包信息2.2、创建案例中的测试对象2.3、对象和JSON相互转化2.3.1、测试代码2.3.2、测试结果展示 2.4、集合和JSON像话转化2.4.…

简单的车牌号识别

目录 处理流程与界面各接口编写时遇到的一些问题上传图片识别结果标签显示中文 处理流程与界面 首先点击“上传图片”按钮&#xff0c;可以选择文件夹中含有汽车车牌的图片&#xff0c;并显示在“图片框”中。 点击“检测车牌”按钮&#xff0c;会先对“图片框”中即含有汽车车…

Spring Task 定时任务(含结合cron 表达式)

目录 一、Spring Task的介绍 二、使用方法 2.1 配置类启用定时任务支持&#xff1a; 2.2 同步定时任务 ​编辑2.3 fixedRate 可以看出不能满足我们的日常需求 那如何让其开启异步呢&#xff08;开启多个线程工作&#xff09; 三、Spring Task 结合cron表达式 3.1 corn 表…

FreGS:具有渐进频率正则化的3D高斯溅射

FreGS: 3D Gaussian Splatting with Progressive Frequency Regularization FreGS&#xff1a;具有渐进频率正则化的3D高斯溅射 Jiahui Zhang1  Fangneng Zhan2  Muyu Xu1  Shijian Lu1  Eric Xing3, 4 张家慧 1 詹方能 2 许慕玉 1 卢世坚 1 邢志伟 3, 4 1Nanyang Technolo…

Day23_学点儿IDEA_单元测试@Test在新module项目中失效、Jackson核心对象 ObjectMapper识别不到

版本 IntelliJ IDEA 2023.2.4 目录结构 Study(Project) ├──JavaSE(Module) │ └──xxxx └──JavaWeb(Module)└──xxxx问题 1.1 在JavaSE项目中正常可以用的单元测试Test&#xff0c;到了JavaWeb项目中不起作用了 1.2 解决方法 如果是新创建的项目&#xff0c;先…

【Github】一个用于Active Directory的自助密码更改工具

在众多企业的日常运营中&#xff0c;Active Directory&#xff08;AD&#xff09;扮演着核心角色&#xff0c;负责管理和维护员工账户。然而&#xff0c;密码重置作为IT支持团队的常规工作之一&#xff0c;往往既耗时又繁琐。虽然一些商业解决方案和通过Windows服务器上RDS服务…

研究生,该学单片机还是plc。?

PLC门槛相对较低&#xff0c;但是在深入学习和应用时&#xff0c;仍然有很高的技术要求。我这里有一套单片机入门教程&#xff0c;不仅包含了详细的视频 讲解&#xff0c;项目实战。如果你渴望学习单片机&#xff0c;不妨点个关注&#xff0c;给个评论222&#xff0c;私信22&am…

【小程序】生成短信中可点击的链接

文章目录 前言一、如何生成链接二、仔细拜读小程序开发文档文档说明1文档说明2 总结 前言 由于线上运营需求&#xff0c;需要给用户发送炮轰短信&#xff0c;用户通过短信点击链接直接跳转进入小程序 一、如何生成链接 先是找了一些三方的&#xff0c;生成的倒是快速&#xf…

vector迭代器失效list迭代器失效

目录 一、vector迭代器失效 1.1插入时的迭代器失效 1.2删除时的迭代器失效 二、list迭代器失效 2.1删除时的迭代器失效 在vector与list的模拟实现中&#xff0c;其中有一问题就是迭代器的失效问题&#xff0c;那么迭代器的失效问题具体是指什么&#xff0c;接下来一探究竟…

【C语言基础】:预处理详解(二)

文章目录 一、宏和函数的对比二、#和##运算符2.1 #运算符2.2 ##运算符 三、#undef四、命令行定义五、条件编译六、头文件的包含1. 头文件包含的方式2. 嵌套文件包含 上期回顾&#xff1a; 【C语言基础】&#xff1a;预处理详解(一) 一、宏和函数的对比 宏通常被应有于执行简单…

系统学c#:1、基础准备(软件下载与安装)

一、Vs软件下载与安装 访问Visual Studio官方网站&#xff1a; https://visualstudio.microsoft.com/zh-hans/downloads 下载Visual Studio 运行exe文件&#xff0c;点击“继续” 初始文件安装完成后选择我们需要安装的项&#xff0c;并勾选好必要的单个组件&#xff0c;设…

VisualStudio2010编译GDAL2.2.4

一、源码目录组织结构 makefile.vc文件是windows下nmake编译工具的makefile文件&#xff0c;nmake.opt是makefile文件的编译选项配置选择文件。 二、打开Visual Studio2010的64位命令行&#xff0c;切换到GDAL224的解压根目录下 输入如下命令回车开始编译源码 nmake -f makef…

Bitwarden 一款开源的密码管理器

Bitwarden Bitwarden 是一款开源的密码管理器&#xff0c;提供强大的安全性和便捷的密码管理功能。 适用于运维、系统较多、密码保密程度较高的场景&#xff01; 主要功能&#xff1a; 密码保存与自动填充&#xff1a;Bitwarden 可以安全地存储您的用户名和密码&#xff0c…

阿里云迁移到AWS云,九河云保姆级教程

随着云计算技术的不断发展,越来越多的企业开始将传统的IT基础设施迁移到云平台上,以获得更高的灵活性、可扩展性和成本效益。在众多云服务提供商中,阿里云和AWS都是备受青睐的选择。本文将探讨如何将阿里云上的资源顺利迁移到AWS云平台,并针对性地进行优化。我们九河云&#xf…