Hadoop——HDFS存储模型

本文深入探讨HDFS的存储模型,解析文件如何被切割成块(Block),块的大小及副本机制,以及这些设计如何满足分布式环境下的可靠性和性能需求。

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

HDFS存储模型是从逻辑层面上谈HDFS,具体物理架构见本博客《Hadoop——HDFS架构设计》

  1. HDFS系统中,文件线性字节切割成块(Block),且每个块都有偏移量(offset)id
    在这里插入图片描述
  2. 各文件block大小可以不一样,比如A的块大小为4KB,B的块大小为8KB,但是每个文件中,除了最后一个块大小可以与其余块不同,其余块大小必须相同
  3. block块应根据硬件的I/O特性调整,在Hadoop 1.x版本时,block块大小默认为64MB,在Hadoop 2.x版本时,block块大小默认为128MB
  4. 由于是分布式环境,所以block块被分散在集群的各个节点中,但是block具有location(也就是说每个block块会有一个属性记录当前block块的地址)
  5. block块具有副本(replication),副本是满足可靠性和性能的关键,副本不能出现在同一节点(为了容灾考虑)上,副本之间没有主从概念,所有副本“地位”一致,比如block 1有3个副本,则说明整个集群中有3个block 1
  6. 文件上传时可以指定block块的大小和副本数,上传之后只能修改副本数,不能再更改block块的大小了
  7. 文件是一次写入多次读取的,且不支持修改文件,相当于只读。不修改的原因很简单,因为这会造成block块大小不一致,offset不成规律。但是允许在文件后追加数据,因为这不会更改前面block块的大小,不影响offset

以上所有关于block的限制都是为了计算时的便利,这也是为什么Hadoop要做一个自己文件系统,而不用他家文件系统的本质原因

我将在下一篇博客介绍HDFS的架构设计

### HadoopHDFS的关系 Hadoop是一个能够对大量数据进行分布式处理的软件框架[^3]。作为Apache开源项目的一部分,其核心组件包括但不限于HDFSHadoop Distributed File System)、MapReduce计算引擎以及其他生态系统工具。 #### HDFS的功能特性 HDFS专为满足流式读取大规模文件的需求而设计,在可靠性方面表现出色。该系统具有如下特点: - **大文件支持**:适合存储超大型单个文件。 - **容错机制**:即使部分硬件发生故障也能保障数据安全和服务连续性。 - **高吞吐量**:优化批量顺序读写操作性能而非随机访问效率。 - **简单的一致性模型**:一次写入多次读取语义简化了应用程序开发复杂度[^2]。 具体来说,HDFS实现了以下重要功能: - **文件分块存储**:为了提高并行处理能力和降低传输成本,会把较大的文件切分成固定大小的数据块,默认情况下每一块大约128MB(对于较新的版本),这些碎片会被复制多份分散保存于不同机器之上以增强冗余保护措施。 - **统一命名空间**:提供了类似于POSIX标准下的层次化目录结构让用户可以方便地按照路径定位资源位置;同时维持着全局唯一的inode表记录所有对象属性信息以便快速检索查询[^1]。 ```bash [haojunjie@hadoop102 hadoop-3.1.3]$ hadoop fs -ls / ``` 上述命令展示了如何查看根目录下存在的子项列表,这正是得益于HDFS所提供的直观易用的操作接口使得用户能像对待本地磁盘那样轻松管理和操纵远程集群上的资料集合。 - **元数据管理**:依靠名为NameNode的服务进程集中管控整个体系内的逻辑视图——即所谓的“超级管理员”,不仅掌管着各层级节点之间的关联关系还负责协调调度实际承载有效负载的工作单元(DataNodes),确保整体运作顺畅高效的同时也便于实施权限控制策略防止非法篡改行为的发生。 综上所述,虽然同属Hadoop范畴之内但两者侧重点各有差异:前者更侧重于构建一套完整的解决方案平台,后者则专注于解决海量静态数据持久化的难题。二者相辅相成共同构成了现代数据中心不可或缺的技术基石之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值