大数据技术原理与应用 笔记 第3章 分布式文件系统HDFS

本文详细介绍了HDFS(Hadoop Distributed File System),包括其设计目标、局限性、核心概念如块和两大组件(名称节点、数据节点)、体系结构、存储原理以及编程实践。HDFS适用于海量数据存储,但不适用于低延迟访问和多用户写入。块的设计旨在分摊磁盘寻址开销,而名称节点和数据节点确保了数据的管理和存储。HDFS的读写过程通过数据节点的流水线复制实现高效率。文章还提供了启动和操作HDFS的基本命令。

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

简介

全称 Hadoop Distributed File System
简称HDFS

解决海量数据的分布式存储问题。

分布式文件系统

在大数据时代,单台计算机无法存储海量数据,所以要使用集群来进行存储。

在这里插入图片描述

HDFS实现目标

  1. 兼容廉价的硬件设备
  2. 实现流数据读写(特点!)
  3. 支持大数据集(不限制文件大小)
  4. 支持简单的文件模型
  5. 强大的跨平台兼容性

HDFS自身的局限性

  1. 不适合低延迟数据访问(HDFS不具备实时性,不能满足实时性需求)
  2. 无法高效存储大量小文件(会导致元数据的索引结构非常庞大,这样检索的效率就会大大降低)
  3. 不支持多用户写入及任意修改文件

HDFS相关概念

整个HDFS当中最核心的概念。
作用:为了分摊磁盘读写开销,也就是在大量数据间分摊磁盘寻址的开销。
HDFS的一个块要比普通文件系统的块大很多。

为什么这么设计(大块)呢?
支持面向大规模数据存储
降低分布式节点的寻址开销
缺点:
如果块过大会导致MR就一两个任务在执行,这样就完全牺牲了MR的并行度,发挥不了分布式并行处理的效果。

HDFS采用这种抽象的块的概念设计好处

  1. 支持大规模文件存储
  2. 简化系统设计
  3. 适合数据备份

HDFS两大组件

名称节点

NameNode名称节点:存储着元数据
元数据:

  • 文件是什么
  • 文件被分成多少块
  • 每个块和文件是怎么映射的
  • 每个块被存储在哪个服务器上面

NameNode里的数据结构有这两种:
在这里插入图片描述
在这里插入图片描述
fsimage不保存数据的位置信息,数据的位置信息是在单独的一块内存中存放的。

当一个数据节点加进来,会向NameNode汇报。
在这里插入图片描述
由于editlog会不断增大,越来越大以后也会影响整个系统的性能。

第二名称节点secondaryNameNode就是为了解决这个问题,同时它也是名称节点的冷备份。
在这里插入图片描述
在这里插入图片描述
怎么解决EditLog不断增大的问题?

NameNode中维护的FsImage和EditLog这两个数据结构,EditLog会在整个过程中不断增大。
第二名称节点会定期和第一名称节点定期通信,在某个阶段会请求第一名称节点停止使用EditLog。
第一名称节点收到这个停止请求后,会马上停止,并生成一个edits.new文件,会把新到达的更新全写到edits.new里去,旧的EditLog等待第二名称节点来取走。
第二名称节点通过httpget把FsImage和EditLog都下载到本地,然后做合并操作,得到一个新的FsImage,再发送给名称节点。
第一名称节点会将FsImage和edits.new合并成Edit,成为新的EditLog。

数据节点

数据节点的数据会保存到各自本地的Linux文件中。

HDFS体系结构

结构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值