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

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

简介

全称 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体系结构

结构

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值