Hadoop-HDFS架构与设计

news2024/10/5 21:25:43

HDFS架构与设计

  • 一、背景和起源
  • 二、HDFS概述
    • 1.设计原则
      • 1.1 硬件错误
      • 1.2 流水访问
      • 1.3 海量数据
      • 1.4 简单一致性模型
      • 1.5 移动计算而不是移动数据
      • 1.6 平台兼容性
    • 2.HDFS适用场景
    • 3.HDFS不适用场景
  • 三、HDFS架构图
    • 1.架构图
    • 2.Namenode
    • 3.Datanode
  • 四、HDFS数据存储
    • 1.数据块存储
    • 2.副本机制
  • 五、元数据持久化
    • 1.Namenode元数据
    • 2.元数据过程
    • 3.元数据checkpoint
  • 总结
  • 参考

一、背景和起源

HDFS是一个构建在廉价机器上的分布式文件存储系统。最初是Doug Cutting为了解决Nutch网页搜索所面对的海量数据处理问题,根据Google的GFS论文,实现的一个分布式文件存储系统并命名为NDFS(Nutch Distributed File System),之后改名为HDFS(Hadoop Distributed File System),成为Hadoop项目的一部分。

二、HDFS概述

1.设计原则

1.1 硬件错误

硬件错误是比软件异常更容易出现的情况,HDFS由成千上百台廉价服务器组成、每个保存整个文件系统的部分数据。如果任意一台服务器出现硬件错误都会导致HDFS部分不可用,所以针对错误的快速检测和自动修复是HDFS框架需要解决核心问题。

1.2 流水访问

HDFS支持应用程序采用流式访问数据,更注重数据访问的吞吐量而不是数据访问的低延迟问题。

1.3 海量数据

存储在HDFS的数据量都是非常大的,一般都是几百G左右。HDFS支持大文件存储并且具有很高的数据带宽。一个HDFS集群需要控制数百个节点,保存几百万个文件。

1.4 简单一致性模型

简单一致性模型是指一个文件经过创建、写入和关闭之后不会在进行修改。也就是文件是一次写入多次读取,这样简化了数据一致性问题,也是提高数据访问吞吐量的一个基础。

1.5 移动计算而不是移动数据

当需要计算海量数据时,将海量数据传输到计算节点将在网络传输中消耗非常多资源和时间。HDFS因此提供了对应接口可以将计算移动到数据所在节点。

1.6 平台兼容性

HDFS需要兼容各种平台降低平台耦合性。

2.HDFS适用场景

  • 由廉价大量服务器组建
  • 批量访问
  • 高吞吐量数据访问
  • 大文件

3.HDFS不适用场景

  • 随机访问
  • 低延迟访问
  • 小文件

三、HDFS架构图

1.架构图

在这里插入图片描述
HDFS采用master/slave架构。一个HDFS集群由一个Namenode和一定数量的Datanodes组成。HDFS暴露了文件系统的名字空间,用户能够以文件的形式在上面存储数据。
一个典型的部署场景是一台机器上只运行一个Namenode实例,而集群中的其它机器分别运行一个Datanode实例。这种架构并不排斥在一台机器上运行多个Datanode,只不过这样的情况比较少见。

2.Namenode

Namenode是一个中心服务器,负责管理文件系统的名字空间(namespace)以及客户端对文件的访问。Namenode执行文件系统的名字空间操作,比如打开、关闭、重命名文件或目录。它也负责确定数据块到具体Datanode节点的映射。

3.Datanode

Datanode一般是一个节点一个,负责管理它所在节点上的存储。Datanode负责处理文件系统客户端的读写请求,在Namenode的统一调度下进行数据块的创建、删除和复制。从内部看,一个文件其实被分成一个或多个数据块,这些块存储在一组Datanode上

四、HDFS数据存储

在这里插入图片描述
Namenode全权管理数据的存储,Namenode周期性的从集群中每个Datanode接受心跳信号和块状态报告。接收到心跳信号意味着DataNode节点工作正常,块状态报告包含该Datanode上的所有数据块列表。

1.数据块存储

HDFS是一个跨机器可靠的存储超大文件的集群。每个文件被划分为一系列的数据块存储,除了最后一个,所有数据块大小都是相同的。HDFS中的文件都是一次性写入的并且一个时刻只能有一个写入者。

2.副本机制

副本机制是HDFS容错、可靠性和性能的关键,可以指定文件的副本数量。HDFS采用一种为机架感知的策略来改进数据的可靠性、可用性和网络带宽的利用率。

五、元数据持久化

1.Namenode元数据

Namenode保存整个HDFS的元数据信息,这些数据都会被持久化到Fsimage文件和Editlog文件。
Fsimage文件是存放上次checkpoint生成的文件系统元数据。
EditLog 文件存放文件系统的操作日志,也就是用户对目录、文件的每个写操作(包括创建、删除、写入等)都会被记录到 Editlog 文件中。

2.元数据过程

2.1 Namenode启动,如果是第一次会创建Fsimage文件和Editlog文件。如果不是第一次启动,会从本地文件系统加载Fsimage文件和Editlog文件到内存,然后在内存中将两个文件内容进行合并。
2.2 客户端对元数据进行增删改请求
2.3 Namenode将操作记录到Editlog文件
2.4 Namenode将内存元数据更新

3.元数据checkpoint

文件系统的操作记录都会持久化到Editlog文件,随着系统运行会导致有大量的Editlog文件。hdfs会定期对Editlog文件进行日志合并,然后和内存中元数据一起写入到fsimage文件,这个过程就是checkpoint。
由于checkpoint过程会耗时比较长,如果在Active Namenode上执行checkpoint可能会影响文件的正常读写,因此checkpoint通常由Standby Namenode触发,其大概流程为:
3.1 Standby Namenoden向Active Namenode请求下载最新的一批editlog文件
3.2 Standby Namenoden完成editlog文件的下载后,执行所有这些editlog文件中的操作,并更新在内存中记录的元数据信息
3.3 Standby Namenoden将内存中的元数据信息按一定的格式保存到fsimage文件中
3.4 Standby Namenoden将生成的fsimage上传到ann中
3.5 Standby Namenoden和Active Namenode删除各自老的editlog文件和fsimage文件

总结

本文对Hadoop中的HDFS分布式文件系统的架构设计进行了解。hdfs采用常见的主从架构,由集中元数据存储Namenode和分散的数据存储Datanode节点组成,支持高可靠性高吞吐量的批量读取大文件海量数据。

参考

Apache HDFS文档: HDFS架构

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

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

相关文章

基于 Redis 实现的分布式锁

获取锁 互斥:确保只有一个线程获得锁 # 添加锁 利用setnx的互斥性 127.0.0.1:6379> setnx lock thread1释放锁 手动释放锁 超时释放:获取锁时设置一个超时时间 #释放锁 删除即可 127.0.0.1:6379> del lock两步合成一步 help setSET key value …

轻量封装WebGPU渲染系统示例<31>- 若干线条对象(源码)

线条对象包括: AABB包围盒,OBB包围盒, 曲线,直线,圆,坐标轴,视锥体线框,矩形网格等。 当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/rendering/src/voxgpu/sample/LineOb…

【kafka】 查看节点的消息

对于初学者来说,可能想去节点看看有没有消息产生和消费,可以去kafka的bin目录下执行这个命令: kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic myTopic --from-beginning 这个命令可以理解为:生产过的消…

HarmonyOS分布式文件系统开发指导

分布式文件系统概述 分布式文件系统(hmdfs,HarmonyOS Distributed File System)提供跨设备的文件访问能力,适用于如下场景: 两台设备组网,用户可以利用一台设备上的编辑软件编辑另外一台设备上的文档。平板…

threejs(13)-着色器设置点材质

着色器材质内置变量 three.js着色器的内置变量,分别是 gl_PointSize:在点渲染模式中,控制方形点区域渲染像素大小(注意这里是像素大小,而不是three.js单位,因此在移动相机是,所看到该点在屏幕…

PTE-RS 练习(二)

目录 内容分漏多漏少没有什么关系 Write Essay 感知比记忆强的多 记住骨干,剩下脑补 套上有含义的帽子 , 套上了信息就会很牢固 谁在说,为什么会说这句话 听不懂那个文本如何处理 要产生表达欲 会分为很多的块 做好意群分割…

论文精读 MediaPipe BlazeFace

BlazeFace:Sub-millisecond Neural Face Detection on Mobile GPUs BlazeFace:基于移动GPUs的亚毫秒神经人脸检测 论文地址:arxiv.org/pdf/1907.05047.pdf 源码地址:GitHub - tkat0/PyTorch_BlazeFace: Unofficial PyTorch implementation…

AI大模型的制作:RAG和向量数据库,分别是什么?

目录 一、什么是 AI 大模型 二、RAG 三、向量数据库 四、如何制作一个好的 AI 大模型 一、什么是 AI 大模型 AI大模型是指具有大规模参数和复杂结构的人工智能模型。传统的机器学习模型通常有限的参数量,而AI大模型则通过增加参数量和层数来提升模型的表达能力…

《洛谷深入浅出进阶篇》 P2367语文成绩——差分

上链接:P2367 语文成绩 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P2367 上题干: 题目背景 语文考试结束了,成绩还是一如既往地有问题。 题目描述 语文老师总是写错成绩,所以当她修改成绩的…

【vue+amap】高德地图绘制多边形区域

参考文档&#xff1a; 高德地图参考手册 高德地图示例代码 1、高德地图控制台创建应用&#xff0c;获取权限ak 高德地图控制台 Ps.本项目里按钮等基础控件使用的是element-ui版本控件 2、项目内全局引入 index.html内引入高德地图代码&#xff1a; <script type"te…

【Linux系统编程十七】:(基础IO4)--文件系统(inode与软硬链接)

【Linux系统编程十六】&#xff1a;文件系统&#xff08;inode与软硬链接&#xff09; 一.磁盘硬件二.文件系统(inode)三.软硬链接 一.磁盘硬件 Linux下的文件在磁盘中存储&#xff0c;文件的内容和属性是分开存储的&#xff01; 文件的内容存储在数据块。 文件的属性存储在in…

github 私人仓库clone的问题

github 私人仓库clone的问题 公共仓库直接克隆就可以&#xff0c;私人仓库需要权限验证&#xff0c;要先申请token 1、登录到github&#xff0c;点击setting 打开的页面最底下&#xff0c;有一个developer setting 这里申请到token之后&#xff0c;注意要保存起来&#xff…

【3】Spring Boot 3 集成mybatis-plus+druid+mysql

目录 【3】Spring Boot 3 集成组件&#xff1a;Druid Mybatis Plus Mysql集成方案1. Hikari jdbc mysql 集成方案增加依赖添加配置Spring Testng 测试用例 2. Druid Mybatis Plus Mysql集成方案2.1 配置Druid添加依赖配置启动Spring Boot Web StarterSpring Testng测试用…

VS项目属性变量

VS项目属性变量 $(SolutionDir) 获取解决方案的路径 $(Platform) 平台名字 → x86 / x64 $(ProjectName) 工程名字 $(Configuration) 当前的项目模式 → Debug / Release

第十九章总结:Java绘图

19.1&#xff1a;Java绘图类 19.2&#xff1a;绘制图形 package nineteentn; import java.awt.*; import javax.swing.*;public class DrawCircle extends JFrame {private final int OVAL_WIDTH 80; // 圆形的宽private final int OVAL_HEIGHT 80; // 圆形的高public DrawC…

接口测试和功能测试有什么区别

本文主要分为两个部分&#xff1a; 第一部分&#xff1a;主要从问题出发&#xff0c;引入接口测试的相关内容并与前端测试进行简单对比&#xff0c;总结两者之前的区别与联系。但该部分只交代了怎么做和如何做&#xff1f;并没有解释为什么要做&#xff1f; 第二部分&#xff1…

JavaScript中的事件冒泡、事件捕获、事件委托

DOM事件流&#xff08;event flow &#xff09;存在三个阶段&#xff1a;事件捕获阶段、处于目标阶段、事件冒泡阶段。 Dom标准事件流的触发的先后顺序为&#xff1a;先捕获再冒泡。即当触发dom事件时&#xff0c;会先进行事件捕获&#xff0c;捕获到事件源之后通过事件传播进行…

应届裁员,天胡开局——谈谈我的前端一年经历

应届裁员&#xff0c;天胡开局——谈谈我的前端一年经历 许久没有更新了&#xff0c;最近一个月都在忙&#xff0c;没错&#xff0c;正如题目所说&#xff0c;裁员然后找工作… 这周刚重新上班&#xff0c;工作第二天&#xff0c;感慨良多&#xff0c;记录些什么吧。 去年十…