Hadoop - HDFS(体系结构介绍、HDFS数据处理、Hadoop Shell基本操作、HDFS Java API)

本文深入介绍了Hadoop的分布式文件系统HDFS,包括其架构、数据处理流程、错误恢复机制、Shell操作及Java API的使用。HDFS采用主从结构,NameNode作为中心服务器管理元数据,DataNode存储数据块,通过多副本保证数据的容错性和可用性。数据读写过程涉及客户端与DataNode的交互,支持快速错误检测和恢复。Hadoop Shell提供了丰富的文件操作命令,Java API则为开发人员提供了便捷的文件系统操作接口。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

* HDFS的工作原理是答辩重点(块、元数据、主/从节点SecondaryNameNode,FsImage、EditImage、存取策略/规则、数据出错与恢复、读写过程)

集群和分布式概念:

  • 集群:集群就是逻辑上处理同一任务的机器集合,可以属于同一机房,也可分属不同的机房
  • 分布式:分布式文件系统把文件分布存储到多个计算机节点上,成千上万的计算机节点构成计算机集群

集群就是逻辑上处理同一任务的机器集合,可以属于同一机房,也可分属不同的机房。分布式这个概念可以运行在某个集群里面,某个集群也可作为分布式概念的一个节点。一句话,就是:“分头做事”与“一堆人”的区别。

分布式文件系统的结构:

分布式文件系统在物理结构上是由计算机集群中的多个节点构成的,这些节点分为两类,一类叫“主节点”(Master Node)或者也被称为“名称结点”(NameNode),另一类叫“从节点”(Slave Node)或者也被称为“数据节点”(DataNode)。

大规模文件系统的整体结构

HDFS是存储数据的地方,就像电脑的硬盘一样,文件都存储在这个上面,MapReduce是对数据进行处理计算的,它有个特点就是不管多大的数据只要给它时间它就能把数据跑完,但是时间可能不是很快,所以它叫数据的批处理。YARN是体现Hadoop平台概念的重要组件,有了它大数据生态体系的其它软件就能在hadoop上运行了,这样就能更好的利用HDFS大存储的优势和节省更多的资源,比如我们就不用再单独建一个spark的集群了,让它直接跑在现有的hadoop yarn上面就可以了

HDFS架构

HDFS:分布式存储

HDFS优点:

  • 高容错性:数据自动保存多个副本、副本丢失后、自动恢复
  • 适合批处理:移动计算而非数据,数据位置暴露给计算框架
  • 适合大数据处理:GBTB甚至PB级数据,百万规模以上的文件数量
  • 可构建在廉价机器上:通过多副本提高可靠性,提供了容错和恢复机制

HDFS缺点:大量小文件存储在hdfs上时,压缩成一个文件(网盘不允许文件修改:百度、360网盘,国内80%的网盘都是基于hadoop

  • 低延迟数据访问:比如毫秒级,低延迟与高吞吐率
  • 小文件存储:占用NameNode大量内存,寻道时间超过读取时间
  • 并发写入、文件随机修改:一个文件只能有一个写着,仅支持append
HDFS架构

HDFS 采用Master/Slave的架构来存储数据,这种架构主要由四个部分组成,分别为HDFS Client、NameNode、DataNode和Secondary NameNode。下面我们分别介绍这四个组成部分。

:HDFS块默认大小为64MB

块(Block)HDFS的文件被分成块进行存储,块是文件存储处理的逻辑单元

在HDFS所有的文件在存储的时候都是把文件切分成相同固定大小的数据块,每个块默认大小64MB字节。当文件传过来之后,系统把它拆分成块进行存储,若文件大小不到64MB,则单独存成一个block,存储到不同节点上, 默认情况下每个block都有三个副本。从管理上看,块是整个文件存储、处理的逻辑单元。我们进行的文件备份、查找也都是按照块来处理的。

注意: Block大小和副本数通过Client端上传文件时设置,文件上传成功后副本数可以变更,Block Size不可变更。

HDFS块存储优势:

支持大规模文件存储:一个大规模文件可以被分拆成若干个文件块,不同的文件块可以被分发到不同的节点上。

简化系统设计:简化了存储管理、方便了元数据的管理。

适合数据备份:每个文件块都可以冗余存储到多个节点上,大大提高了系统的容错性和可用性。

节点:NameNode和DataNode

NameNode(名称节点)是管理节点,存放元数据:①文件与数据块的映射表  ②数据块与数据节点的映射表

HDFS体系结构

NameNode是管理节点,主要存放元数据。元数据包括两个部分:一个是文件和数据块的映射表;另一个是数据块和数据节点的映射表。客户如果一个访问请求,那么他NameNode读取元数据 NameNode返回相关的信息,说明这个文件是存放在哪一些节点上面,于是他去向这些节点去读取数据块获取到数据块之后再进行组装,拼装成之前想要的文件HDFS里的主节点NameNode

数据结构
  • NameNode负责管理分布式文件系统的命名空间(Namespace),保存了两个核心的数据结构,即FsImageEditLog
  • FsImage用于维护文件系统树以及文件树中所有的文件和文件夹的元数据
  • 操作日志文件EditLog中记录了所有针对文件的创建、删除、重命名等操作
  • 名称节点记录了每个文件中各个块所在的数据节点的位置信息

名称节点运行期间EditLog不断变大的问题,靠SecondaryNameNode第二名称节点解决。

第二名称节点HDFS架构中的一个组成部分,它是用来保存名称节点中对HDFS 元数据信息的备份,并减少名称节点重启的时间。SecondaryNameNode一般是单独运行在一台机器上。

在名称节点运行期间,HDFS的所有更新操作都是直接写到EditLog中,久而久之, EditLog文件将会变得很大

虽然这对名称节点运行时候是没有什么明显影响的,但是,当名称节点重启的时候,名称节点需要先将FsImage里面的所有内容映像到内存中,然后再一条一条地执行EditLog中的记录,当EditLog文件非常大的时候,会导致名称节点启动操作非常慢,而在这段时间内HDFS系统处于安全模式,一直无法对外提供写操作,影响了用户的使用。

SecondaryNameNode

SecondaryNameNode的工作情况:

  • 1SecondaryNameNode会定期和NameNode通信,请求其停止使用EditLog文件,暂时将新的写操作写到一个新的文件edit.new上来,这个操作是瞬间完成,上
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值