Touch HDFS (hadoop分布式文件系統)

总览

注:本文为学习课程内容整理

环境

具体见上一章:

  • hadoop各结点:
    hadoop01hadoop02hadoop03
    NameNodeSecondaryNameNode
    DataNodeDataNodeDataNode
    NodeManagerNodeManagerNodeManager
    JobHistoryServer
    ResourceManager

1. Hadoop文件系统

  • hadoop有一个抽象的文件系统概念

  • HDFS是hadoop文件系统的一个实现

  • Java抽象类org.apache.hadoop.fs.FileSystem定义了Hadoopp中的一个文件系统接口

    在这里插入图片描述

2. 什么是HDFS

  • HDFS(Hadoop Distributed FileSystem)最初作为apache Nutch项目的基础架构开发, 是 apache hadoop core项目的一部分
  • 适合运行在通用硬件设备上, 有高容错性, 适合部署在廉价机器上
  • 提供高吞吐量的数据访问, 适合大规模数据集上的应用

3. HDFS设计目标

适用

  1. 超大文件

    指具有几百MB, GB, TP, 的文件, 目前已经有pb级的Hadoop集群

  2. 流式数据访问

    指一次写入, 多次读取的访问模式, 数据集通常由数据源直接生成或复制, 然后长时间在此数据集上进行操作

  3. 商用硬件

    不需要高可靠性的机器, 而是在商用硬件集群上运行.

不适用

  1. 低时延的数据访问

    不适合低时延的数据访问, 比如几十ms级别的时延, hdfs是设计为大量数据吞吐量优化的, 可能会以时延提高为代价

  2. 大量小文件

    hdfs的namenode将元数据的信息存储在namenode内存中, 因此, hdfs的存储文件数受限于namenode内存容量, 大量小文件会导致namenode内存中存储大量的文件相关信息

  3. 多用户写入, 任意修改文件

    hdfs只支持单用户写入, 而且写入方式总是以"只添加"的方式写入到文件末尾.
    不支持多个写入者; 不支持在文件任意位置修改文件

4. HDFS概念

概念

  1. Block(数据块)
  2. NameNode(管理节点)
  3. SecondaryNamenode(辅助节点)
  4. DataNode(工作节点)
  5. 块缓存
  6. 联邦HDFS

概念图
在这里插入图片描述

4.1. Block(数据块)

  • HDFS的最基本存储单位, DFS上的文件被划分为多个块大小的分块作为独立的存储单元, 默认块大小为 128M, 小于分块的文件 不会 占据整个块的空间
  • 数据块的设置原则
    1. hdfs的块比磁盘的块大, 这样, 从磁盘传输数据的时间会远大于定位这个块开始位置的时间
    2. 这个参数不应该过大, 因为MR的map任务通常一次只处理一个块的数据, 若任务太少, 减少了并发性, 作业速度降低
  • 数据块的好处
    1. 文件被分成很多块存储在很多磁盘中, 所以其大小可以大于网络中任意磁盘容量
    2. 简化了存储子系统的设计, 块大小固定, 计算磁盘存储多少个块就相对容易
    3. 块适合用于数据备份, 给i高容错能力和可用性

4.2. Namenode(管理节点)

  • 管理文件系统的命名空间, 维护系统树及整颗树内的所有文件和目录
  • 命名镜像文件和编辑日志文件
  • 记录每个文件中各个块的数据节点信息, 在系统启动时根据节点信息重建
    在这里插入图片描述
    在这里插入图片描述
  • 设置namenode
    在这里插入图片描述

4.2.1 NameNode深入

  • namenode目录结构
    在这里插入图片描述
  • Namenode–VERSION
    在这里插入图片描述
    • layoutVersin: 负整数, 描述当前hdfs的永久性数据结构的版本, 该版本号与hadoop版本无关, 更新递减;
    • namespaceID: 是该文件系统的唯一标识符, 是文件系统首次格式化时创建的, 任何新注册的datanode是不知道该值的, 因此,namenode 可以通过改属性鉴别新建的datanode
    • cTime: 时间戳, 创建namenode时为0
    • staorageType: 该节点的类型
  • NameNode–edits
    在这里插入图片描述
  • NameNode–fsimage
    在这里插入图片描述

4.3. SecondaryNameode(辅助节点)

  • NameNode的备份; 定期合并编辑日志与命名空间镜像
  • 一般在单独物理机上运行, 需要和namenode一样的内存. 占用大量的cpu时间
  • 保存合并的命名空间镜像, 在namenode发生故障时启用
  • 设置SecondaryNameNode
    在这里插入图片描述

4.3.1 SecondaryNameNode深入

  • SecondaryNameNode–目录结构
    在这里插入图片描述
    • current与previouse.checkpoint与namenode的current布局相同. 在namenode发生故障时, 可以直接从secondaryNameNode恢复数据

SecondaryNameNode工作原理

在这里插入图片描述
在这里插入图片描述

4.4. DataNode(工作节点)

  • 根据需要存储和检索数据块, 并定期向namenode发送他们所存储的块列表
  • HDFS默认块大小128m, 以数据块形式存储数据
  • Replication: 副本容量, 默认3个 可以在hdfs-site.xml的dfs.replication属性进行设置
  • datanode设置
    在这里插入图片描述

4.4.1 深入DataNode

  • 目录结构
    在这里插入图片描述
  • DataNode–VERSION
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

4.5. 块缓存

  • datanode从磁盘读取块, 对频繁访问的文件, 其对应块被显示的缓存在datanode的内存中, 以堆外块缓存的形式存在
  • 默认情况下, 一个块仅缓存在一个datanode的内存中, 作业调度器通过缓存块的datanode上运行任务吗利用块缓存优势提高效率

4.6. 联邦HDFS

  • namenode在内存中保存每个文件每个块的引用信息, 因此namenode的内存将限制系统的横向发展
  • 联邦HDFS允许namenod实现扩展, 其中每个namenode管理dfs命名空间中的一部分
  • 如: 一个namenode管理/user目录下的所有文件, 一个namenode管理/share目录下的所有文件

5. HDFS数据读取流程

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hadoop分布式文件系统(HDFS)是Hadoop核心组件之一,用于解决大数据存储的问题。它是一个横跨多台计算机的存储系统,采用了master/slave(主从)架构。一个HDFS集群由一个Namenode和一定数量的Datanode组成。Namenode是HDFS集群的主节点,负责协调和管理文件系统的元数据,而Datanode是从节点,负责存储实际的数据块。\[1\]\[2\] HDFS的设计目标之一是能够在面对硬件错误时继续运行而不让用户感知到明显的中断。因此,HDFS使用商用硬件,并且具备错误检测和快速、自动恢复的能力。由于HDFS可能由成百上千个服务器组成,任何一个组件都可能发生故障,因此这种容错能力对于保证系统的可靠性至关重要。\[3\] #### 引用[.reference_title] - *1* *2* [Hadoop分布式文件系统(HDFS)](https://blog.csdn.net/Melody_12/article/details/104866522)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Hadoop分布式文件系统(HDFS)](https://blog.csdn.net/XueFengPlay/article/details/78869007)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值