【Hadoop】详解HDFS

Hadoop 分布式文件系统(HDFS)被设计成适合运行在通用硬件上的分布式文件系统,它是一个高度容错性的系统,适合部署在廉价的机器上,能够提供高吞吐量的数据访问,非常适合大规模数据集上的应用。为了做到可靠性,HDFS创建了多份数据块的副本,并将它们放置在服务器群的计算节点中,MapReduce 可以在它们所在的节点上处理这些数据。

1. HDFS 的设计目标

  • 存储大规模数据:HDFS 可以存储并管理 PB 级甚至 EB 级的数据。
  • 高容错性:数据自动保存多个副本,副本丢失自动恢复
  • 高吞吐量:适合流式数据访问,支持高并发读写,一次写入,可多次读取,确保数据的一致性。
  • 低成本:可以在普通硬件上运行,降低存储成本。

2. HDFS 的设计思想和体系架构

HDFS采用主从架构。一个HDFS集群是由一个NameNode和一定数目的DataNodes 组成。其中 NameNode 是一个中心服务器,负责文件系统的名字空间(namespace)管理以及客户端对文件的访问。集群中的DataNode一般是一个节点一个,负责管理它所在节点上的存储。

HDFS设计思想

从内部看,一个文件其实被分成一个或多个数据块,这些块存储在一组DataNode(server)之上。NameNode执行文件系统的名字空间操作,比如打开、关闭、重命名文件或目录,同时它也负责确定数据块到具体DataNode节点的映射。DataNode负责处理文件系统客户端的读写请求,在NameNode的统一调度下进行数据块的创建、删除和复制。

HDFS框架结构

 

HDFS使用Java语言开发,因此任何支持Java的机器都可以部署NameNode或DataNode。 由于采用了可移植性极强的Java语言,这就使得HDFS可以部署到几乎所有类型的机器上。

三.NameNode

1.NameNode的作用

  • 元数据管理:Namenode 是HDFS的元数据节点,负责文件系统的名字空间(Namespace)管理以及客户端对文件的访问。
  • 文件元数据操作:NameNode 负责文件元数据的操作,如创建、删除、重命名文件或目录。
  • 数据块管理:NameNode 决定数据块的副本存放在哪些 DataNode 上。读取文件时,NameNode 会尽量让用户先读取最近的副本(通过网络拓扑距离来衡量),以降低带宽消耗和读取时延。
  • 心跳机制:NameNode 周期性地从每个 DataNode 接收心跳信号和块状态报告。心跳信号表示 DataNode 工作正常,块状态报告包含 DataNode 上所有数据块的信息列表。

2. NameNode 的目录结构

NameNode 的元数据存储在本地文件系统的以下目录中:${dfs.name.dir}/current/

包含以下文件:

  • VERSION:是Java properties 文件,保存 HDFS 的版本信息
  • edits:修改日志(Edit Log),记录对文件系统元数据的修改。存储在本地文件系统中。
  • fsimage:命名空间镜像文件,保存整个文件系统的命名空间包括数据块映射信息,文件属性等等。存储在本地文件系统中。
  • fstime:记录最后一次检查点(checkpoint)的时间。

3. NameNode 的启动与检查点

NameNode 在内存中保存着整个文件系统的命名空间和文件数据块映射的映像,这个关键的元数据结构设计得非常紧凑,因而一个有4G内存的NameNode就足以支撑巨大量的文件和目录。

(1)启动过程

  • NameNode 从硬盘读取 FsImage 和 Edit Log。
  • 将 Edit Log 中的事务应用到内存中的 FsImage。
  • 将更新后的 FsImage 保存到本地磁盘,并删除旧的 Edit Log。

(2)检查点(Checkpoint)

  • 定期将内存中的元数据保存到 FsImage,并清理 Edit Log。
  • 由 Secondary NameNode 辅助完成。

4. Secondary NameNode 的作用

(1)辅助 NameNode

  • Secondary NameNode 不是 NameNode 的备用节点,而是辅助 NameNode 完成检查点。
  • 主要功能是定期合并 FsImage 和 Edit Log,防止 Edit Log 过大。

(2)检查点过程

  1. Secondary NameNode 通知 NameNode 生成新的 Edit Log。
  2. 从 NameNode 获取 FsImage 和旧的 Edit Log。
  3. 将 FsImage 加载到内存,并应用 Edit Log 中的事务,生成新的 FsImage。
  4. 将新的 FsImage 传回 NameNode。
  5. NameNode 更新 FsImage 和 Edit Log,并记录检查点时间。

Secondary NameNode并不是NameNode出现问题时候的备用节点,它和NameNode负责不同的事情。其主要功能就是周期性地将NameNode的命名空间镜像文件和修改日志合并,以防日志文件过大。合并过后的命名空间镜像文件也在Secondary NameNode保存了一份,以防止在 NameNode失败的时候,可以安全恢复。Secondary NameNode 通常在一个独立的机器上运行,它的内存要求和主 NameNode 是一样的。Secondary NameNode在配置后通过 start-dfs.sh 启动。

四.DateNode

1.DataNode的作用

  • 数据存储:DataNode是文件系统中真正存储数据的地方,一个数据块在DataNode磁盘存储时,会存储数据块本身,以及元数据包括数据块的长度、块数据的校验和、以及时间戳。
  • 数据块管理:DataNode是HDFS文件系统的工作节点,DataNode会按照客户端或者是NameNode的调度来存储和检索数据,并定期向NameNode发送它所存储的数据块列表。
  • 与 NameNode 通信:DataNode启动后向NameNode注册,注册成功后,周期性每小时向NameNode上报所有的块信息,心跳频率每3秒一次,心跳返回结果带有 NameNode 给该 DataNode 的命令,如复制块数据到另一台机器,或删除某个数据块等等。
  • 节点状态:如果 NameNode超过10分钟没有收到某个DataNode的心跳,则认为该节点不可用。集群在运行中可以安全地加入或剔除状态异常的机器。

2. DataNode 的目录结构

DataNode 的数据存储目录结构如下:${dfs.data.dir}/current/

包含以下内容:

  • VERSION:存储 DataNode 的版本信息。
  • blk_<id>存储数据块的二进制数据。
  • blk_<id>.meta存储数据块的元数据,包括校验和、长度和时间戳。

五 .HDFS数据块

1.数据块大小:默认情况下,HDFS 的数据块大小为 128MB(Hadoop 2.x 及以上版本)或 64MB(Hadoop 1.x 版本)。用户可以根据需要调整块大小。

2.数据块分布:HDFS 通过数据块副本机制实现高容错性。默认情况下,每个数据块会被复制到 3 个不同的 DataNode 上。

而在传统的块存储介质中,块是读写的最小数据单位(扇区),传统文件系统是基于存储块进行操作 的,为了节省文件分配表空间,一般会对物理存储块进行整合,通常为 4KB 或 64KB。

那为什么HDFS 的块远远大于传统文件系统的块?

  • 块大小较小,文件会被分割成更多的数据块,导致元数据量大幅增加,占用大量 NameNode 内存。较大的块大小可以减少元数据量,降低 NameNode 的内存压力。NameNode 的元数据管理更加高效。
  • 减少寻址开销:在传统文件系统中,较小的块大小会导致更多的磁盘寻址操作,增加 I/O 开销。HDFS 的较大块大小可以减少寻址次数,提高数据访问效率
  • HDFS 设计用于处理大规模数据,适合流式数据访问(即顺序读取大文件)。较大的块大小可以减少数据块的切换频率提高数据读取的吞吐量

 

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

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

相关文章

计算机网络:计算机网络的概念

1.计算机网络&#xff1a;由若干个结点和链接这些的链路组成。 2.集线器&#xff08;Hub&#xff09;&#xff1a;可以把多个结点连接起来&#xff0c;组成一个计算机网络。 不能避免数据冲突的情况 3.交换机&#xff08;Switch&#xff09;:可以把多个结点连接起来&#x…

C/C++类型转换

目录 C语言中的类型转换 隐式类型转换&#xff1a; 显示类型转换&#xff1a; 总结&#xff1a; C中的类型转换 static_cast: reinterpret_cast: const_cast: dynamic_cast: RTTI C语言中的类型转换 在C语言中&#xff0c;如果赋值运算符左右两侧类型不同&#xff0c;或者形参…

发行基础:宣传片

转载自官方文件 --------------- 宣传片 概览 作为 Steam 发行流程的一部分&#xff0c;您需要上传自己产品的宣传片。 宣传片将会显示在您的产品商店页的顶端&#xff0c;通常是您的潜在客户第一眼会看见的内容。 最佳实践 在 Steam 平台上&#xff0c;宣传片是产品营销中…

MyBatis-Plus (超详细 Spring版)

1 MyBatis-Plus 简介 1.1 简介 MyBatis-Plus&#xff08;简称MP&#xff09;是一个 MyBatis的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为 简化开发、提高效率而生。 1.2 特性 无侵入&#xff1a;只做增强不做改变&#xff0c;引入它不会对现有…

地下井室可燃气体监测装置:守护地下安全,防患于未“燃”!

在城市的地下&#xff0c;隐藏着无数的燃气管道和井室&#xff0c;它们是城市基础设施建设的重要部分&#xff0c;燃气的使用&#xff0c;给大家的生活提供了极大的便利。在便利生活的背后&#xff0c;也存在潜在的城市安全隐患。 近年来&#xff0c;地下井室可燃气体泄漏事故…

BGP 基本配置实验

实验拓扑 实验需求 按照图示配置 IP 地址&#xff0c;R1 和 R5 上使用环回口模拟业务网段&#xff0c;R2&#xff0c;R3&#xff0c;R4 的环回口用于配置 Router-id 和建立 IBGP 邻居AS 200 运行 OSPF 实现内部网络互通R1&#xff0c;R2&#xff0c;R4&#xff0c;R5 运行 BGP…

解锁AIGC新时代:通义万相2.1与蓝耘智算平台的完美结合引领AI内容生成革命

前言 通义万相2.1作为一个开源的视频生成AI模型&#xff0c;在发布当天便荣登了VBench排行榜的榜首&#xff0c;超越了Sora和Runway等业内巨头&#xff0c;展现出惊人的潜力。模型不仅能够生成1080P分辨率的视频&#xff0c;而且没有时长限制&#xff0c;能够模拟自然动作&…

梦三国2游戏下载

梦三国2是由杭州电魂网络科技股份有限公司自主研发的一款将rts元素融合到rpg网游中的即时战略网络游戏。该作保留了前作的三国文化背景&#xff0c;继承了其特色玩法&#xff0c;优化了画面和操作体验&#xff0c;还基于玩家们的需求提供了有趣新颖的地图和系统。游戏主要分为p…

模型微调-基于LLaMA-Factory进行微调的一个简单案例

模型微调-基于LLaMA-Factory进行微调的一个简单案例 1. 租用云计算资源2. 拉取 LLaMa-Factory3. 安装依赖环境4. 启动 LLaMa-Factory 界面5. 从 Huggingface 下载模型6. 模型验证7. 模型微调 1. 租用云计算资源 以下示例基于 AutoDL 云计算资源。 在云计算平台选择可用的云计…

【十三】Golang 通道

&#x1f4a2;欢迎来到张胤尘的开源技术站 &#x1f4a5;开源如江河&#xff0c;汇聚众志成。代码似星辰&#xff0c;照亮行征程。开源精神长&#xff0c;传承永不忘。携手共前行&#xff0c;未来更辉煌&#x1f4a5; 文章目录 通道通道声明初始化缓冲机制无缓冲通道代码示例 带…

聊天服务器分布式改造

目前的聊天室是单节点的&#xff0c;无论是http接口还是socket接口都在同一个进程&#xff0c;无法承受太多人同时在线&#xff0c;容灾性也非常差。因此&#xff0c;一个成熟的IM产品一定是做成分布式的&#xff0c;根据功能分模块&#xff0c;每个模块也使用多个节点并行部署…

DeepSeek 医疗大模型微调实战讨论版(第一部分)

DeepSeek医疗大模型微调实战指南第一部分 DeepSeek 作为一款具有独特优势的大模型,在医疗领域展现出了巨大的应用潜力。它采用了先进的混合专家架构(MoE),能够根据输入数据的特性选择性激活部分专家,避免了不必要的计算,极大地提高了计算效率和模型精度 。这种架构使得 …

深入解析 BitBake 日志机制:任务调度、日志记录与调试方法

1. 引言&#xff1a;为什么 BitBake 的日志机制至关重要&#xff1f; BitBake 是 Yocto 项目的核心构建工具&#xff0c;用于解析配方、管理任务依赖&#xff0c;并执行编译和打包任务。在 BitBake 构建过程中&#xff0c;日志记录机制不仅用于跟踪任务执行情况&#xff0c;还…

OpenCV计算摄影学(16)调整图像光照效果函数illuminationChange()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 对选定区域内的梯度场应用适当的非线性变换&#xff0c;然后通过泊松求解器重新积分&#xff0c;可以局部修改图像的表观照明。 cv::illuminati…

【DuodooTEKr 】多度科技 以开源之力,驱动企业数字化转型

多度科技 背景 / Background 在全球产业链重构与国内经济双循环的浪潮下&#xff0c;中国制造业与贸易企业正面临数字化升级的迫切需求。开源技术作为数字化转型的基石&#xff0c;不仅能打破技术壁垒、降低企业成本&#xff0c;更能通过协作创新加速产业智能化进程。 多度科技…

VBA经典应用69例应用7:从字符串中删除数字

《VBA经典应用69例》&#xff08;版权10178981&#xff09;&#xff0c;是我推出的第九套教程&#xff0c;教程是专门针对初级、中级学员在学习VBA过程中可能遇到的案例展开&#xff0c;这套教程案例众多&#xff0c;紧贴“实战”&#xff0c;并做“战术总结”&#xff0c;以便…

Vue 系列之:插槽

前言 插槽是定义在子组件中的&#xff0c;相当于一个占位符&#xff0c;父组件可以在这个占位符中填充HTML代码、组件等内容。 插槽显不显示、怎样显示是由父组件来控制的&#xff0c;而插槽在哪里显示就由子组件来进行控制。 基本使用 子组件&#xff1a; <template&g…

一周热点-OpenAI 推出了 GPT-4.5,这可能是其最后一个非推理模型

在人工智能领域,大型语言模型一直是研究的热点。OpenAI 的 GPT 系列模型在自然语言处理方面取得了显著成就。GPT-4.5 是 OpenAI 在这一领域的又一力作,它在多个方面进行了升级和优化。 1 新模型的出现 GPT-4.5 目前作为研究预览版发布。与 OpenAI 最近的 o1 和 o3 模型不同,…

IP,MAC,ARP 笔记

1.什么是IP地址 IP 地址是一串由句点分隔的数字。IP 地址表示为一组四个数字&#xff0c;比如 192.158.1.38 就是一个例子。该组合中的每个数字都可以在 0 到 255 的范围内。因此&#xff0c;完整的 IP 寻址范围从 0.0.0.0 到 255.255.255.255。 IP 地址不是随机的。它们由互…

【A2DP】MPEG - 2/4 AAC 编解码器互操作性要求详解

目录 一、概述 二、编解码器特定信息元素(Codec Specific Information Elements ) 2.1 信息元素结构 2.2 对象类型(Object Type) 2.3 MPEG - D DRC 2.4 采样频率(Sampling Frequency) 2.5 通道(Channels) 2.6 比特率(Bit rate) 2.7 可变比特率(VBR) 三、…