Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >小白看架构 · HDFS1.0架构

小白看架构 · HDFS1.0架构

作者头像
简熵
发布于 2023-03-06 13:33:35
发布于 2023-03-06 13:33:35
3140
举报
文章被收录于专栏:逆熵逆熵
HDFS,是一个分布式文件存储系统。那我们自然可以去联想比如fastdfs等我们java领域的分布式文件系统。大概是下面这样子的,那么HDFS

有什么区别呢?为什么就能在大数据领域成为一个不可或缺的基础组件呢?

小白网上搜索了很多关于HDFS的设计理念和优点。如下:

  1. 首先肯定是支持超大数据集,几十亿的数据,通过分布式存储,分散到多台机器上去,妥妥的没毛病。
  2. 高可用性,大数据需要大量的机器去承载数据,一般都会采用普通的服务器去集群部署,是机器就会故障,更不用说不是那种专业的商用数据服务器了。HDFS可以自动探查到集群中的某个机器故障了,会自动进行故障恢复。
  3. 流式数据处理,大概意思就是基于流的形式来读写数据,保证高吞吐量的读写。
  4. 简化的一致性模型,一次写入,多次读。没有读写冲突,一致性也不需要额外维护。一个文件只有一次写入,之后只能追加,不能随便修改之前的数据。
  5. 尽量移动计算,不要移动数据。通过MapReduce或者其他计算框架计算时,尽可能是让计算任务靠近数据,而不要通过网络去移动传输数据。

HDFS的架构是什么样子呢?常见的有主从架构,master-slave模式。这里就要介绍一下概念,首先NameNode,一个jvm进程,一个集群只有一个,可以看成是master,是整个集群的中心指挥官,其实就是文件命名空间,文件目录的形式,/a/b/c,可以通过目录去对应文件。这里有一个block的概念,一个大的文件最终存储到硬件上会分成几个块,比如1G,分成8块,每块128M,可能会存储到机器1,机器2,或者更多。

DataNode,运行在每一台要存储数据的机器上,对这台机器上存储的文件数据进行交互,管理。负责管理一个文件最终存储到本机器的具体的一个或多个块,block1,block3,可能还有一个block2在其他机器上。

那么,当你想要查找某个文件的时候,就可以问NameNode,他在哪里?NameNode就告诉你这个文件有几个块,分别在哪几台机器上。那么你就可以去和这几台机器通信,获取对应的文件块。

我们再来看看NameNode里面的元数据这个概念,元数据,包括文件目录结构,以及目录结构下有哪些文件,每个文件有几个block,各个block存储在哪一台DataNode机器上,基本这些构成了元数据,存储在NameNode机器的内存中,当然还有些文件权限,文件限制等元数据。这是一种文件系统的层级目录,目录->子目录->文件,所以我们可以创建目录,创建文件,读写文件,像我们操作文件一样。而且hadoop里面我们通过Linux的很多命令都可以进行操作,hadoop fs -mkdir -p /usr/local/1.txt 这个就是创建目录和文件。hadoop fs -put 文件 就是上传文件,等等。

那么,当我们的客户端进行各个文件操作的时候,肯定会对元数据进行操作和修改,这里的元数据是就是都交给NameNode进行管理的。NameNode里有一个概念叫做EditLog。编辑操作日志,当你操作一次文件,就记录一条日志,每一条日志都会写到磁盘中持久化。一条条日志可以还原出整个文件目录层级。还有个概念叫做FsImage。所有的目录结构,文件和DataNode,Block的映射关系。这些会完整地存储到FsImage里面,并且FsImage是存储在磁盘文件上,持久化存储。

NameNode在内存中维护着一份元数据,所有的读写操作都是操作的内存,这样子会有很高的性能。然后每隔一段时间,执行一个叫做Checkpoint操作,这里的间隔时间是可以配置的,会读取磁盘里所有的EditLog文件,全部都还原到内存中一个FsImage缓存,然后将FsImage重新写入到磁盘中,并且将EditLog都清理掉。

每次NameNodeode启动的时候也会读取FsImage文件和EditLog文件去下载一份缓存到内存中。

那么hadoop到底是怎么通过fsimage和EditLog来实现元数据的管理存储机制呢?hadoop1.x时候,NameNode启动,将fsImage读入内存,根据EditLog一条条还原元数据到最新状态,将最新的fsimage写入磁盘文件,接着清空掉EditLog。紧接着,NameNode不断修改元数据,直接修改内存中的元数据,并且将变更日志记录到EditLog中去。并且为了防止EditLog变得越来越大,定时做checkpoint,将最新的元数据fsimage写入到磁盘,清除掉EditLog。

还有个问题就是定时做checkpoint操作,将editLog和fsimage合并,会有很多读写,很消耗性能和时间,这时就有一个一个架构方案,引入了Secondary NameNode系统组件。一般它部署在一台新的机器上,专门在后台做checkpoint操作,每隔一段时间,通知NameNode先不要写EditLog,可以暂时写一个newEditlog,然后拉取NameNode的EditLog和FsImage到本地,进行合并,写一份新的fsimage到磁盘。然后将最新的fsimage推送到NameNode上,同时呢,NameNode也会将NewEditLog改为Editlog。Secondary NameNodeameNode也是NameNode的一个冷备份。如果NameNode挂掉了,最多损失checpoint之后一些元数据变更,大部分元数据还在fsImage在Secondary NameNod上有一份存储着。一般一小时一次或者EditLog大小超过64MB,就会执行一次。紧接着,又出现了了一个checkpoint Node 其实就和Secondary NameNode一样,做同样的操作。

紧接着还出现了一种架构,就是Backup Node,出现的初衷也是为了checkpoint Node那种下载EditLog和fsimage进行合并的思路。backupNode是什么思路呢?backupNode就是在内存中放入一份和NameNode一样的fsImage数据,同时还接受NameNode传输过来的EditLog流,然后写入到自己本地。同时将EditLog应用到内存的fsimage中。backupNode还会定时做checkpoint操作,将内存中的数据写到磁盘上fsimage文件,覆盖老的fsimage,将EditLog清空。

这些就是小白学到的HDFS1.0的架构。不过现在HDFS3.0都出来了,小白还要再接再厉,继续努力学习。文中有错误的地方欢迎碧友们指出来,谢谢。

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

本文分享自 逆熵架构 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
小白看架构 · HDFS2.0
今天小白接着来探究hadoop2.0下,架构发生了哪些变化?前文也对1.0的架构进行了浅谈,【小白看架构 · HDFS1.0架构】,文中若有错误之处,欢迎大家留言讨论,谢谢大家。
简熵
2023/03/06
4100
小白看架构 · HDFS2.0
大数据教程-01HDFS的基本组成和原理
起源于2003年谷歌的Google File System相关论文,随后Doug Cutting(我们下面就叫他切哥吧)基于GFS的论文实现了分布式文件系统,并把它命名为NDFS(Nutch Distributied File System)。
马一特
2022/05/10
5910
大数据教程-01HDFS的基本组成和原理
HDFS 原理、架构与特性介绍
本文主要讲述 HDFS原理-架构、副本机制、HDFS负载均衡、机架感知、健壮性、文件删除恢复机制 1:当前HDFS架构详尽分析  HDFS架构  •NameNode  •DataNod
用户1177713
2018/02/24
3.4K0
HDFS 原理、架构与特性介绍
Hadoop HDFS 实现原理图文详解
Hadoop分布式文件系统 (HDFS) 是运行在通用硬件(commodity hardware)上的分布式文件系统(Distributed File System)。
一个会写诗的程序员
2021/12/16
1.4K0
Hadoop HDFS 实现原理图文详解
HDFS原理 | 一文读懂HDFS架构与设计
HDFS(Hadoop Distributed File System)是我们熟知的Hadoop分布式文件系统,是一个高容错的系统,能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS以流式数据访问模式存储超大文件,将数据按块分布式存储到不同机器上,并被设计成适合运行在普通廉价硬件之上。本文根据Hadoop官网HDFS Architecture这一章节提炼而成,加上笔者自己的理解,希望能够帮助读者快速掌握HDFS。
大数据技术架构
2020/04/21
5K0
HDFS原理 | 一文读懂HDFS架构与设计
必须掌握的分布式文件存储系统—HDFS
HDFS(Hadoop Distributed File System)分布式文件存储系统,主要为各类分布式计算框架如Spark、MapReduce等提供海量数据存储服务,同时HBase、Hive底层存储也依赖于HDFS。HDFS提供一个统一的抽象目录树,客户端可通过路径来访问文件,如hdfs://namenode:port/dir-a/a.data。HDFS集群分为两大角色:Namenode、Datanode(非HA模式会存在Secondary Namenode)
大数据学习与分享
2020/07/12
1.1K0
必须掌握的分布式文件存储系统—HDFS
【愚公系列】2024年02月 大数据教学课程 022-Hadoop的HDFS
HDFS是Hadoop分布式文件系统(Hadoop Distributed File System)的缩写。它是一种分布式文件系统,旨在将大量的数据存储在Hadoop集群中的多台机器上。HDFS具有高度容错性,并且设计用于在低成本硬件上部署。它允许高吞吐量的数据访问,并为大数据应用程序提供可扩展的存储。HDFS是Apache Hadoop生态系统的关键组件之一,许多组织使用它来存储和处理大型数据集。
愚公搬代码
2025/06/02
740
【愚公系列】2024年02月 大数据教学课程 022-Hadoop的HDFS
什么是HDFS?算了,告诉你也不懂。
上一篇已经讲解了「大数据入门」的相关基础概念和知识了,这篇我们来学学HDFS。如果文章有错误的地方,不妨在评论区友善指出~
Java3y
2020/03/05
4680
Hadoop之HDFS概念与体系结构
HDFS是什么 Hadoop Distributed File System(简称HDFS)是Hadoop分布式文件系统。 HDFS有着高容错性(fault-tolerant)的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求(requirements)这样可以实现流的形式访问(streaming access)文
天策
2018/06/22
8050
彻底理解大数据 HDFS 分布式文件系统,这篇就够了
点击上方“芋道源码”,选择“设为星标” 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java 2021 超神之路,很肝~ 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 RocketMQ 源码解析 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析 作业调度中间件 Elastic-Job 源码解析 分布式事务中间件 TCC-Transaction
芋道源码
2022/03/04
7.6K0
Hadoop HDFS分布式文件系统设计要点与架构
1、硬件错误是常态,而非异常情况,HDFS可能是有成百上千的server组成,任何一个组件都有可能一直失效,因此错误检测和快速、自动的恢复是HDFS的核心架构目标。 2、跑在HDFS上的应用与一般的应用不同,它们主要是以流式读为主,做批量处理;比之关注数据访问的低延迟问题,更关键的在于数据访问的高吞吐量。 3、HDFS以支持大数据集合为目标,一个存储在上面的典型文件大小一般都在千兆至T字节,一个单一HDFS实例应该能支撑数以千万计的文件。 4、 HDFS应用对文件要求的是write-one-read-many访问模型。一个文件经过创建、写,关闭之后就不需要改变。这一假设简化了数据一致性问 题,使高吞吐量的数据访问成为可能。典型的如MapReduce框架,或者一个web crawler应用都很适合这个模型。 5、移动计算的代价比之移动数据的代价低。一个应用请求的计算,离它操作的数据越近就越高效,这在数据达到海量级别的时候更是如此。将计算移动到数据附近,比之将数据移动到应用所在显然更好,HDFS提供给应用这样的接口。 6、在异构的软硬件平台间的可移植性。
黄规速
2022/04/14
5420
深入理解HDFS 一
Hadoop的发展至今已经有十余年的历史了,其核心设计HDFS和MapReduce,分别解决了海量数据的存储和计算这两个问题。
soundhearer
2020/10/29
9320
深入理解HDFS 一
Hadoop重点难点:HDFS读写/NN/2NN/DN
NameNode在内存中保存着整个文件系统的名字空间和文件数据块的地址映射(Blockmap)。如果NameNode宕机,那么整个集群就瘫痪了。
大数据真好玩
2021/10/12
1.2K0
Hadoop重点难点:HDFS读写/NN/2NN/DN
hdfs介绍
HDFS(Hadoop Distributed File System)是 Apache Hadoop的一个子项目, 是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的。
leobhao
2022/06/28
1.5K0
hdfs介绍
深入浅出学大数据(三)分布式文件系统HDFS及HDFS的编程实践
此系列主要为我的学弟学妹们所创作,在某些方面可能偏基础。如果读者感觉较为简单,还望见谅!如果文中出现错误,欢迎指正~
不温卜火
2021/09/29
1.1K0
HDFS最基础使用
随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统。HDFS只是分布式文件管理系统中的一种。
ha_lydms
2023/10/04
3120
HDFS最基础使用
【史上最全】Hadoop 核心 - HDFS 分布式文件系统详解(上万字建议收藏)
Hadoop 分布式系统框架中,首要的基础功能就是文件系统,在 Hadoop 中使用 FileSystem 这个抽象类来表示我们的文件系统,这个抽象类下面有很多子实现类,究竟使用哪一种,需要看我们具体的实现类,在我们实际工作中,用到的最多的就是HDFS(分布式文件系统)以及LocalFileSystem(本地文件系统)了。
五分钟学大数据
2021/02/08
2.4K0
【史上最全】Hadoop 核心 - HDFS 分布式文件系统详解(上万字建议收藏)
哇!这就是HDFS!
今天是小史生日,为了庆祝自己今年喜提A厂offer,小史叫了二十多个人一起庆生,吕老师、小史姐姐、小林都去啦。
Java3y
2019/05/08
5880
哇!这就是HDFS!
hadoop 基础入门
sbin/start-yarn:nodemanager、resourcemanager
WindWant
2020/09/11
5010
hadoop 基础入门
大数据面试题(一):HDFS核心高频面试题
1)客户端向namenode请求上传文件,namenode检查目标文件是否已存在,父目录是否存在。
Lansonli
2022/12/12
5670
大数据面试题(一):HDFS核心高频面试题
相关推荐
小白看架构 · HDFS2.0
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档