前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Hadoop分布式文件系统(HDFS)

Hadoop分布式文件系统(HDFS)

作者头像
大数据老哥
发布于 2021-03-23 13:27:13
发布于 2021-03-23 13:27:13
1.5K0
举报

一、介绍

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

二、HDFS 设计原理

2.1 HDFS 架构

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

  • NameNode : 负责执行有关 文件系统命名空间 的操作,例如打开,关闭、重命名文件和目录等。它同时还负责集群元数据的存储,记录着文件中各个数据块的位置信息。
  • DataNode:负责提供来自文件系统客户端的读写请求,执行块的创建,删除等操作。

2.2 文件系统命名空间

HDFS 的 文件系统命名空间 的层次结构与大多数文件系统类似 (如 Linux), 支持目录和文件的创建、移动、删除和重命名等操作,支持配置用户和访问权限,但不支持硬链接和软连接。NameNode 负责维护文件系统名称空间,记录对名称空间或其属性的任何更改。

2.3 数据复制

由于 Hadoop 被设计运行在廉价的机器上,这意味着硬件是不可靠的,为了保证容错性,HDFS 提供了数据复制机制。HDFS 将每一个文件存储为一系列,每个块由多个副本来保证容错,块的大小和复制因子可以自行配置(默认情况下,块大小是 128M,默认复制因子是 3)。

2.4 数据复制的实现原理

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

在写入程序位于 datanode 上时,就优先将写入文件的一个副本放置在该 datanode 上,否则放在随机 datanode 上。之后在另一个远程机架上的任意一个节点上放置另一个副本,并在该机架上的另一个节点上放置最后一个副本。此策略可以减少机架间的写入流量,从而提高写入性能。

如果复制因子大于 3,则随机确定第 4 个和之后副本的放置位置,同时保持每个机架的副本数量低于上限,上限值通常为 (复制系数 - 1)/机架数量 + 2,需要注意的是不允许同一个 dataNode 上具有同一个块的多个副本。

2.5 副本的选择

为了最大限度地减少带宽消耗和读取延迟,HDFS 在执行读取请求时,优先读取距离读取器最近的副本。如果在与读取器节点相同的机架上存在副本,则优先选择该副本。如果 HDFS 群集跨越多个数据中心,则优先选择本地数据中心上的副本。

2.6 架构的稳定性

1. 心跳机制和重新复制

每个 DataNode 定期向 NameNode 发送心跳消息,如果超过指定时间没有收到心跳消息,则将 DataNode 标记为死亡。NameNode 不会将任何新的 IO 请求转发给标记为死亡的 DataNode,也不会再使用这些 DataNode 上的数据。由于数据不再可用,可能会导致某些块的复制因子小于其指定值,NameNode 会跟踪这些块,并在必要的时候进行重新复制。

2. 数据的完整性

由于存储设备故障等原因,存储在 DataNode 上的数据块也会发生损坏。为了避免读取到已经损坏的数据而导致错误,HDFS 提供了数据完整性校验机制来保证数据的完整性,具体操作如下:

当客户端创建 HDFS 文件时,它会计算文件的每个块的 校验和,并将 校验和 存储在同一 HDFS 命名空间下的单独的隐藏文件中。当客户端检索文件内容时,它会验证从每个 DataNode 接收的数据是否与存储在关联校验和文件中的 校验和 匹配。如果匹配失败,则证明数据已经损坏,此时客户端会选择从其他 DataNode 获取该块的其他可用副本。

3.元数据的磁盘故障

FsImageEditLog 是 HDFS 的核心数据,这些数据的意外丢失可能会导致整个 HDFS 服务不可用。为了避免这个问题,可以配置 NameNode 使其支持 FsImageEditLog 多副本同步,这样 FsImageEditLog 的任何改变都会引起每个副本 FsImageEditLog 的同步更新。

4.支持快照

快照支持在特定时刻存储数据副本,在数据意外损坏时,可以通过回滚操作恢复到健康的数据状态。

三、HDFS 的特点

3.1 高容错

由于 HDFS 采用数据的多副本方案,所以部分硬件的损坏不会导致全部数据的丢失。

3.2 高吞吐量

HDFS 设计的重点是支持高吞吐量的数据访问,而不是低延迟的数据访问。

3.3 大文件支持

HDFS 适合于大文件的存储,文档的大小应该是是 GB 到 TB 级别的。

3.3 简单一致性模型

HDFS 更适合于一次写入多次读取 (write-once-read-many) 的访问模型。支持将内容追加到文件末尾,但不支持数据的随机访问,不能从文件任意位置新增数据。

3.4 跨平台移植性

HDFS 具有良好的跨平台移植性,这使得其他大数据计算框架都将其作为数据持久化存储的首选方案。

附:图解HDFS存储原理

说明:以下图片引用 (https://blog.csdn.net/hudiefenmu/article/details/37655491)

1. HDFS写数据原理

2. HDFS读数据原理

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

第二部分:读写故障的处理

第三部分:DataNode 故障处理

副本布局策略

彩蛋

资源获取 获取Flink面试题,Spark面试题,程序员必备软件,hive面试题,Hadoop面试题,Docker面试题,简历模板,优质的文章等资源请去 下方链接获取 GitHub自行下载 https://github.com/lhh2002/Framework-Of-BigData Gitee 自行下载 https://gitee.com/li_hey_hey/dashboard/projects

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据老哥 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
基于Charlieplexing算法(查理复用算法)的LED矩阵控制设计
简单来说就是:希望能够用较少的I/O口控制较多的LED灯!按照Charlieplexing 方法,n个引脚可以有n*(n-1)个组合,也就是说,可以用n个引脚驱动n*(n-1)个LED灯!帅吧!比起我们一个引脚控制1个LED灯,多了n-1倍。使用行列式驱动,也没这个控制的多。到底多了多少呢?计算一下:
不脱发的程序猿
2021/01/20
1.1K0
单片机入门:点亮多个LED灯
本设计需要点亮4个LED小灯,熄灭4个LED灯。 LED(发光二极管)正极接+5V电源,负极接单片机P1口,这样只要单片机P1口输出低电平就可以导通二极管,实现LED灯的点亮。
电子工程师成长日记
2022/07/21
3.9K0
单片机入门:点亮多个LED灯
蓝桥杯嵌入式之LED讲解
LED是比较简单且常用的模块。通过高低电平可以控制LED灯的亮灭。常见的可以用LED灯的闪烁表示程序的正常运行,也可以用LED灯的亮灭表示电梯所在的楼层或某些警告的有无等。
用户5935416
2019/08/01
1.3K0
一文解决STC51单片机的IO配置问题
我们学习单片机,到底学什么呢?最终落脚点,就是落在单片机的IO口上,其实最终就是操作单片机的IO口,什么串口通讯,IIC通信协议,中断,定时器,最终在单片机上体现出来的还是我们对单片机IO口的操作。既然那么重要,今天我们就来好好的说一说单片机的IO口。
单片机技术宅
2020/03/17
3K0
CC2530基础实验一 IO实验
编写程序控制实验板上的LED1和LED2的亮、灭状态,使它们以流水灯方式进行工作,即实验板通电后两个发光二极管以下述方式工作: ①通电后LED1和LED2都熄灭。 ②延时一段时间后LED1点亮。 ③延时一段时间后LED2点亮,此时LED1和LED2都处在点亮状态。 ④延时一段时间后LED1熄灭。 ⑤延时一段时间后LED2熄灭,此时LED1和LED2都处在熄灭状态。 ⑥返回步骤②循环执行。
w候人兮猗
2020/07/01
1.4K0
CC2530基础实验一    IO实验
嵌入式-使用蜂鸣器加LED灯实现按键发送SOS求救信号
GPIO:GPIO 是通用输入输出端口的简称,简单来说就是 STM32 可控制的引脚,STM32 芯片的 GPIO 引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。
会洗碗的CV工程师
2024/02/09
6900
嵌入式-使用蜂鸣器加LED灯实现按键发送SOS求救信号
STM32F103GPIO-LED点灯
GPIO(General-Purpose IO ports,通用输入/输出接口),用于感知外界信号(输入模式)和控制外部设备(输出模式),如图 6.1.1 所示的STM32F103ZET6芯片四周的细引脚就是GPIO。
韦东山
2022/05/05
9450
STM32F103GPIO-LED点灯
【51单片机】点亮LED灯(四种形式)
💖作者简介:大家好,我是泽奀。全栈领域新星创作者🥇  📝个人主页:weixin_52632755的博客_泽奀_CSDN博客 🎉点赞➕评论➕收藏 == 养成习惯😋 📖本系列:也会跟着我男神哔哩哔哩江科大的视频为主! https://blog.csdn.net/weixin_52632755/category_11316267.html 介绍两个比较好用的软件 1、网易有道词典         2、福昕阅读器(PDF) 网易有道词典对我这种英语渣渣来说就是福星了 福昕阅读器我个人认为也是我比较喜欢去用
謓泽
2022/12/12
1.2K1
【51单片机】点亮LED灯(四种形式)
51单片机模拟IIC以及引脚模式
IIC协议(Inter-Integrated Circuit Protocol),也叫I2C协议,是一种串行通信协议,用于在数字集成电路(IC)之间进行通信。它是由Philips公司(现在的NXP公司)在20世纪80年代开发的,并且现在被广泛应用于数字集成电路之间的通信。
云深无际
2023/05/24
7110
51单片机模拟IIC以及引脚模式
物联网-点灯闪灯实验(三个灯)
注意:在实验过程中,要确保电流在3~20mA之间,以避免烧坏二极管。同时,确保连接的线路正确无误,以避免发生短路等安全事故。
会洗碗的CV工程师
2024/02/04
5180
物联网-点灯闪灯实验(三个灯)
物联网-GPIO输入—按键检测
通过按键控制三个LED灯的关灭,按下按键k2,LED显示流水灯样式,按下按键k3,LED从新开始显示流水灯。
会洗碗的CV工程师
2024/02/07
4570
物联网-GPIO输入—按键检测
基于51单片机的交通灯控制系统设计开题报告_交通灯控制系统设计的毕业论文
第一章 硬件设计与原理 以AT89C51单片机为核心,起着控制作用。系统包括数码管显示电路、复位电路、时钟电路、发光二级管电路和按键电路。设计思路分为六个模块:复位电路、晶振电路模块、AT89C51、数码管显示电路、发光二级管电路和按键电路这六个模块。
全栈程序员站长
2022/11/08
1.1K0
基于51单片机的交通灯控制系统设计开题报告_交通灯控制系统设计的毕业论文
PIC32MZEF学习笔记之:初识板卡
企鹅号小编
2017/12/27
1.3K0
PIC32MZEF学习笔记之:初识板卡
物联网-GPIO输出—使用固件库点亮LED灯
本实验板连接了 3 个 LED 灯,这些 LED 灯的阴极都是连接到 STM32 的 GPIO 引脚, 只要我们控制 GPIO 引脚的电平输出状态,即可控制 LED 灯的亮灭。 若您使用的实验板 LED 灯的连接方式或引脚不一样,只需根据我们的工程修改引脚即可,程序的控制原理相同。
会洗碗的CV工程师
2024/02/05
3110
物联网-GPIO输出—使用固件库点亮LED灯
【51单片机】要实现动静态数码管,你首先需要知道这些【数码管项目前置知识】
YY的秘密代码小屋
2024/02/09
4900
【51单片机】要实现动静态数码管,你首先需要知道这些【数码管项目前置知识】
【51单片机】室友用一把王者时间,学会了去使用数码管。
♐ 写在前面 ---- 💖 作者简介:大家好,我是泽奀。 🏆 嵌入式领域新星创作者 ➕ 作者周榜: 45 ➕ 总排名: 5135 👑  📝 个人主页:泽奀的博客_CSDN博客 🎉 欢迎 点赞 ➕ 评论 ➕ 收藏 == 养成习惯😜 📣 系列专栏:【51单片机】系列_泽奀的博客-CSDN博客 💬 总结:希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🖊 ✉️ 我们并非登上我们所选择的舞台,演出并非我们所选择的剧本 ♦   📖 本系列:哔哩哔哩江科大51单片机的视频为主! ---- 目录 ♐ 写在前面
謓泽
2022/12/12
5780
【51单片机】室友用一把王者时间,学会了去使用数码管。
5V单通道继电器模块使用说明和接线图
在本教程中,我们将讨论 5V 单通道继电器模块及其重要特性,例如引出线、引脚配置详细信息、特性、工作、与微控制器的接口和应用程序。继电器是一种用作开关的机电设备。直流电流用于为打开或关闭接触开关的继电器线圈通电。单路5V继电器内部电路由常开触点、常闭触点和线圈组成。
IDC科技
2023/04/19
11K0
5V单通道继电器模块使用说明和接线图
接口与通信-独立按键
独立按键一共8个,有对应的插槽可以连接在单片机的任意IO口。去抖动的方式,我们采用软件延时的方法。过程如下:
会洗碗的CV工程师
2024/02/18
3570
接口与通信-独立按键
TTL反相器、OC门、TS门、推挽输出、开漏输出
这是一个TTL反相器,这是经过了很多工程师多种设计最终沉淀出来的电路,这个电路是比较成熟的。我们只需要对这个电路进行解析即可,不需要再去研究当初是如何设计出来的。
WuShF
2023/04/22
1.4K0
TTL反相器、OC门、TS门、推挽输出、开漏输出
【STM32】GPIO口以及EXTI外部中断
输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等
s-little-monster
2024/08/09
4740
【STM32】GPIO口以及EXTI外部中断
推荐阅读
相关推荐
基于Charlieplexing算法(查理复用算法)的LED矩阵控制设计
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档