当前位置: 首页 > news >正文

【Hadoop】分布式文件系统 HDFS

目录

  • 一、介绍
  • 二、HDFS设计原理
    • 2.1 HDFS 架构
    • 2.2 数据复制
      • 复制的实现原理
  • 三、HDFS的特点
  • 四、图解HDFS存储原理
    • 1. 写过程
    • 2. 读过程
    • 3. HDFS故障类型和其检测方法
      • 故障类型和其检测方法
      • 读写故障的处理
      • DataNode 故障处理
      • 副本布局策略

一、介绍

HDFS (Hadoop Distributed File System)是 Hadoop 下的分布式文件系统,具有高容错、高吞吐量等特性,可以部署在低成本的硬件上。

二、HDFS设计原理

2.1 HDFS 架构

HDFS 遵循主/从架构,由单个 NameNode(NN) 和多个 DataNode(DN) 组成:

  • NameNode : 文件系统的管理节点,维护整个系统的元数据,包括文件目录树、文件/目录信息,以及每个文件对应的block列表等
  • DataNode:文件系统的数据节点,提供真实文件数据的存储服务。

在这里插入图片描述
注:

  • HDFS在存储时,以block的形式存储数据,默认大小为128M(2.x和3.x版本)
    • 如果文件超过128M,就会被切分为多个block存储
    • 如果文件不足128M,则只产生一个block(只占用实际大小的磁盘空间)

2.2 数据复制

为了保证容错性,HDFS 提供了数据复制机制。HDFS 将每一个文件存储为一系列block,每个块由多个副本来保证容错,块的大小和复制因子可以自行配置(默认情况下,块大小是 128M,默认复制因子是 3)
在这里插入图片描述

复制的实现原理

大型的 HDFS 实例在通常分布在多个机架的多台服务器上。在大多数情况下,同一机架中的服务器间的网络带宽大于不同机架中的服务器之间的带宽。因此 HDFS 采用机架感知副本放置策略,对于常见情况,当复制因子为 3 时,HDFS 的放置策略是:

  • 在写入程序位于 datanode 上时,就优先将写入文件的一个副本放置在该 datanode 上,否则放在随机 datanode 上
  • 之后在另一个远程机架上的任意一个节点上放置另一个副本
  • 并在该机架上的另一个节点上放置最后一个副本

此策略可以减少机架间的写入流量,从而提高写入性能。
在这里插入图片描述
注意:同一个 dataNode 上不允许有同一个块的多个副本

三、HDFS的特点

  • 优点
    • 通透性:即使有通过网络访问文件的操作,但在程序和用户看来就像是在访问本地磁盘
    • 高容错:多副本保证即使部分硬件损坏也不会导致全部数据的丢失
    • 性价比高:可以运行在大量的廉价机器上,节约成本
  • 缺点
    • 不适合低延时数据访问:数据延时无法支持“毫秒”级别的数据存储
    • 不适合小文件存储:主节点的内存是有限的,不论大小文件都会在主节点中保存元信息,存储大量小文件没有意义,违背HDFS的设计理念
    • 不支持文件并发写入和随机修改:一个文件同时只能有一个线程执行写操作只支持文件追加,不支持数据的随机访问和修改

四、图解HDFS存储原理

以下图片引用自博客:翻译经典 HDFS 原理讲解漫画

1. 写过程

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

2. 读过程

在这里插入图片描述

3. HDFS故障类型和其检测方法

故障类型和其检测方法

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

读写故障的处理

在这里插入图片描述

DataNode 故障处理

在这里插入图片描述

副本布局策略

在这里插入图片描述

相关文章:

【Hadoop】分布式文件系统 HDFS

目录 一、介绍二、HDFS设计原理2.1 HDFS 架构2.2 数据复制复制的实现原理 三、HDFS的特点四、图解HDFS存储原理1. 写过程2. 读过程3. HDFS故障类型和其检测方法故障类型和其检测方法读写故障的处理DataNode 故障处理副本布局策略 一、介绍 HDFS (Hadoop Distribute…...

【Python-随笔】使用Python实现屏幕截图

使用Python实现屏幕截图 环境配置 下载pyautogui包 pip install pyautogui -i https://pypi.tuna.tsinghua.edu.cn/simple/下载OpenCV包 pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple/下载PyQT5包 pip install PyQt5 -i https://pypi.tuna.tsi…...

Sun Apr 16 00:00:00 CST 2023格式转换

Date date new Date(); log.info("当前时间为:{}",date); //yyyy-MM-dd HH:mm:ss SimpleDateFormat sdf new SimpleDateFormat(DateUtils.YYYY_MM_DD_HH_MM_SS); String dateTime s…...

使用mongodb实现简单的读写操作

本文适合初学者,特别是刚刚安装了mongodb数据库的朋友,或在atlas刚拿到免费集群的朋友。 拿到数据库,心情很激动,手痒难耐。特别想向数据库插入几条数据库试试。即使是深夜完成了安装,也忍不住想去完成这些操作。看到…...

C语言实现Cohen_Sutherland算法

前提简要: 算法简介: 编码算法是最早、最流行的线段裁剪算法,该算法采用区域检验的方法,能够快速有效地判断一条线段与裁剪窗口的位置关系,对完全接受或完全舍弃的线段无需求交,即可直接识别。 算法思想&…...

MySQL进阶_EXPLAIN重点字段解析

文章目录 第一节.准备1.1 版本信息1.2 准备 第二节.type2.1 system2.2 const2.3 eq_ref2.4 ref2.5 ref_or_null2.6 index_merge2.7 unique_subquery2.8 range2.9 index2.10 all 第三节. Extra3.1 No tables used3.2 No tables used3.3 Using where3.4 No matching min/max row3…...

视图层与模板层

视图层 1 视图函数 一个视图函数,简称视图,是一个简单的Python 函数,它接受Web请求并且返回Web响应。响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. . . 是…...

MySQL数据库——触发器-案例(Insert类型、Update类型和Delete类型)

目录 表结构准备 插入数据触发器 代码 测试 修改数据触发器 代码 测试 删除数据触发器 代码 测试 通过触发器记录 tb_user 表的数据变更日志,将变更日志插入到日志表user_logs中,包含增加,修改,删除。 表结构准备 根据…...

快速创建桌面端(electron-egg)

介绍 | electron-egg electron-egg: 一个入门简单、跨平台、企业级桌面软件开发框架。 electron-egg是一个基于Electron和Egg.js的框架,可以用于快速构建跨平台的桌面应用程序。 1.兼容平台:electron-egg可以在Windows、MacOS和Linux等多个平台上运行…...

docker配置redis插件

docker配置redis插件 运行容器redis_6390 docker run -it \ --name redis_6390 \ --privileged \ -p 6390:6379 \ --network wn_docker_net \ --ip 172.18.12.19 \ --sysctl net.core.somaxconn1024 \ -e TIME_ZONE"Asia/Shanghai" -e TZ"Asia/Shanghai"…...

前端入口教程_web01

web标准 记得看! html:表示整个页面 head: titile: body: 常用标签 1.标题标签 2.段落标签 3.换行标签 4.文本格式化标签 5. 和 标签 6.图像标签 相对路径–用来插自己本地的图片 #### 绝对路径–用来插网上找的图…...

Win7 SP1 x64 Google Chrome 字体模糊

1 打开 Google Chrome ,地址栏输入 chrome://version/ ,字体模糊。 2 Microsoft Update Catalog 搜索更新 kb2670838,下载,安装,重启电脑。 3 打开 Google Chrome,地址栏输入 chrome://version/ &#xff0…...

read()之后操作系统都干了什么

首先说明三个参数 file文件 buff从内存中开辟一段缓冲区用来接收读取的数据 size表示这个缓冲区的大小 有关file的参数: 状态:被打开 被关闭权限:可读可写最重要的是inode: 他包含了 文件的元数据(比如文件大小 文件类型 文件在访问前需要加…...

YoloV8改进策略:Swift Parameter-free Attention,无参注意力机制,超分模型的完美迁移

摘要 https://arxiv.org/pdf/2311.12770.pdf https://github.com/hongyuanyu/SPAN SPAN是一种超分网络模型。SPAN模型通过使用参数自由的注意力机制来提高SISR的性能。这种注意力机制能够增强重要信息并减少冗余,从而在图像超分辨率过程中提高图像质量。 具体来说,SPAN模…...

Python----练习:使用面向对象实现报名系统开发

第一步:分析哪些动作是由哪些实体发出的 学生提出报名 学生提供相关资料 学生缴费 机构收费 教师分配教室 班级增加学生信息 于是,在整个过程中,一共有四个实体:学生、机构、教师、班级!在现实中的一个具体的实…...

1.什么是html

1.什么是html什么是html? 一.基础信息 英文名字:HyperText Markup Language 中文名字:超文本标记语言 简称:html 文件格式:.htm 或 .html 结尾 作用:描述网页的语言。通过各种各样的标签,组…...

GeoServer漏洞(CVE-2023-25157)

前半部分是sql注入一些语句的测试,后面是漏洞的复现和利用 Sql注入漏洞 1.登入mysql。 2.查看默认数据库 3.使用mysql数据库 4.查看表 1.查看user 表 2.写注入语句 创建数据库 时间注入语句 布尔注入语句 报错注入语句 Geoserver漏洞&#xff…...

一个完整的手工构建的cuda动态链接库工程 03记

1&#xff0c; 源代码 仅仅是加入了模板函数和对应的 .cuh文件&#xff0c;当前的目录结构如下&#xff1a; icmm/gpu/add.cu #include <stdio.h> #include <cuda_runtime.h>#include "inc/add.cuh"// different name in this level for different type…...

rdf-file:SM2加解密

一&#xff1a;SM2简介 SM2是中国密码学算法标准中的一种非对称加密算法&#xff08;包括公钥和私钥&#xff09;。SM2主要用于数字签名、密钥交换和加密解密等密码学。 生成秘钥&#xff1a;用于生成一对公钥和私钥。公钥&#xff1a;用于加密数据和验证数字签名。私钥&…...

harmonyOS学习笔记之@Styles装饰器与@Extend装饰器

Styles装饰器 定义组件重用样式 自定义样式函数使用装饰器 可以定义在组件内或全局,内部优先级>外部,内部不需要function,外部需要function 定义在组件内的styles可以通过this访问组件内部的常量和状态变量,可以在styles里通过事件来改变状态变量 弊端:只支持通用属性和通用…...

AI显微镜-Swin2SR惊艳效果展示:电子包浆表情包高清还原作品集

AI显微镜-Swin2SR惊艳效果展示&#xff1a;电子包浆表情包高清还原作品集 你有没有遇到过这种情况&#xff1f;在网上看到一个特别有趣的表情包&#xff0c;但图片糊得连五官都看不清&#xff0c;上面还叠加了无数层水印和压缩痕迹&#xff0c;俗称“电子包浆”。想保存下来当…...

OpenClaw团队协作版:ollama-QwQ-32B支持多人任务队列的改造

OpenClaw团队协作版&#xff1a;ollama-QwQ-32B支持多人任务队列的改造 1. 为什么我们需要团队协作版的OpenClaw 上周我们小组遇到了一个典型问题&#xff1a;三个人同时使用同一台机器上的OpenClaw实例时&#xff0c;任务开始互相干扰。最严重的一次&#xff0c;A同事的自动…...

保姆级教程:在mmdetection v2.x上,用SSD300训练自定义VOC数据集(附完整配置文件修改清单)

从零到一&#xff1a;基于mmdetection的SSD300自定义VOC数据集训练全流程实战 当第一次接触mmdetection框架时&#xff0c;面对复杂的配置文件体系和各种_base_目录&#xff0c;很多开发者都会感到无从下手。本文将从一个实践者的角度&#xff0c;手把手带你完成从数据集准备到…...

OpenClaw跨平台控制:ollama-QwQ-32B同步操作多台设备的配置

OpenClaw跨平台控制&#xff1a;ollama-QwQ-32B同步操作多台设备的配置 1. 为什么需要跨设备自动化控制 上个月我家里添置了三台不同用途的设备&#xff1a;一台用于媒体处理的Mac mini、一台跑深度学习模型的Linux服务器&#xff0c;还有一台Windows主机专门处理文档。每次需…...

SmartLabXBeeCore:轻量级XBee/ZigBee嵌入式驱动框架

1. SmartLabXBeeCore&#xff1a;面向嵌入式系统的XBee/ZigBee模块底层驱动框架解析1.1 模块定位与工程价值SmartLabXBeeCore 是一个专为 Digi XBee 和 XBee-PRO ZigBee RF 模块设计的轻量级、可移植嵌入式驱动核心库。其本质并非高层应用协议栈&#xff0c;而是介于硬件抽象层…...

开箱即用环境+保姆级教程:深度学习项目训练环境助你快速入门AI

开箱即用环境保姆级教程&#xff1a;深度学习项目训练环境助你快速入门AI 1. 镜像环境概述 深度学习项目训练环境镜像是一个预装了完整深度学习开发环境的解决方案&#xff0c;专为快速启动AI项目而设计。这个镜像基于深度学习项目改进与实战专栏&#xff0c;集成了训练、推理…...

新手福音:在快马平台免配置玩转jdk17,写出第一个java程序

作为一个Java新手&#xff0c;最头疼的往往不是写代码本身&#xff0c;而是配置开发环境。记得我刚开始学Java时&#xff0c;光是下载安装JDK、配置环境变量就折腾了大半天&#xff0c;还没开始写代码就已经被劝退了。直到发现了InsCode(快马)平台&#xff0c;才真正体会到什么…...

VMware性能分配实战:CPU、内存与存储的黄金比例

1. VMware性能分配的核心逻辑 第一次用VMware创建虚拟机时&#xff0c;很多人会直接套用默认配置——比如给Windows 10分配4GB内存、2个vCPU。但当我同时启动3个这样的虚拟机时&#xff0c;宿主机16GB内存瞬间被吃光&#xff0c;而CPU利用率却只有30%。这个现象揭示了VMware资源…...

QUARTUS 2 基本操作使用(quartus13.0)

本文从建立完工程开始&#xff0c;到下载结束 编写设计文件 点击Files&#xff0c;可以添加设计文件 设置工程顶层 ​编辑 再此介绍下工具栏&#xff0c;只介绍用的多的 绑定引脚&#xff1a;fpga大部分引脚都是GPIO&#xff0c;因此给他编辑代码后&#xff08;赋予他功能&am…...

Avalonia11 Canvas拖拽与动态渲染保姆级教程:从MVVM绑定到事件处理完整流程

Avalonia11 Canvas拖拽与动态渲染实战&#xff1a;构建高性能迷你地图导航系统 在复杂的图形界面应用中&#xff0c;迷你地图导航已经成为提升用户体验的标准配置。想象一下&#xff0c;当你在处理一张超大的设计图纸或地图时&#xff0c;如何快速定位到感兴趣的局部区域&#…...