浅析HDFS架构和设计

本文深入探讨Hadoop的分布式文件系统HDFS,解析其工作模式、文件系统命名空间、数据复制、元数据持久化、健壮性等关键特性,适合HDFS初学者。HDFS采用主从架构,通过数据块复制保障数据可靠性,支持一次写入多次读取,适合大数据分析。此外,文章还讨论了文件系统命名空间、数据组织、存储空间回收等主题。
摘要由CSDN通过智能技术生成

作者 | 大尊

hdfs是hadoop的分布式文件系统,即Hadoop Distributed Filesystem。下面主要讲下HDFS设计中的比较重要的点,使读者能通过简短的文章一窥HDFS的全貌,适合对HDFS有一点了解,但是对HDFS又感到困惑的初学者。本文主要参考的是hadoop 3.0的官方文档。

链接:http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html

当数据集的大小超过了一台物理机所能存储的能力时,就需要将它进行分区并存储到若干不同的独立的计算机上,其中管理跨多台计算机存储的文件系统称为分布式文件系统。

目录
  • 使用HDFS的场景

  • HDFS的工作模式

  • 文件系统命名空间(namespace)

  • 数据复制

  • 文件系统元数据的持久化

  • 通讯协议

  • 健壮性

  • 数据组织

  • 可访问性

  • 存储空间回收

1、使用HDFS的场景

HDFS适合于以流式数据访问模式来存储超大的文件。即一次写入,多次读取,在数据集上长时间进行各种分析,每次分析都涉及该数据集数据的大部分甚至全部,对于超大文件,hadoop目前以支持存储PB级数据。

HDFS并不适合要求低时间延迟数据访问的应用,因为HDFS是为高数据吞吐量应用而优化的,这就有可能以时间延迟大为代价。

HDFS文件系统所能存储的文件总数受限于namenode的内存容量,根据经验,100百万的文件,且每个文件占一个数据块,那至少需要300MB的内存。

目前hadoop文件可能只有一个writer,而且写操作总是将数据添加在文件末尾,不支持在文件的任意位置进行修改。

相对于普通文件系统的数据块,HDFS也有块的概念,默认是128MB,HDFS上的文件也被划分成块大小的多个分块,作为独立的存储单元,不过HDFS中小于一个块大小的文件不会占据整个块的空间。如果没有特别指出,文中提到的块特指HDFS的块。

为何HDFS的块如此之大,其目的是为了最小化寻址开销。这个数也不能设置的过大,mapreduce中的map任务通常一次只处理一个块中的数据,因此如果任务数太少,作业的运行速度就会比较慢。

2、HDFS的工作模式

HDFS采用master/slave架构,即一个namenode(管理者)多个datanode(工作者)。

namenode负责管理文件系统的命名空间。维护着文件系统树和整个树内所有的文件和目录,这些信息都保存在两个文件中,命名空间镜像文件和编辑日志文件。namenode也记录了每个文件中各个块所在的数据节点信息。datanode是文件系统的工作节点,它们需要存储并检索数据块(受客户端或namenode调度),并定期向namenode发送它们所存储的块的列表。

如果没有namenode,文件系统将无法使用,因为我们不知道如何根据datanode的块重建文件,所以对namenode进行容错是非常重要的。为此hadoop提供了两种机制。

第一种机制是备份那些组成文件系统元数据持久状态的文件。一般,在将持久化文件写入本地磁盘的同时,写入远程挂载的NFS。

第二种方法是运行一个辅助namenode,这个辅助namenode定期通过编辑日志合并命名空间镜像,并在本地保存合并后的命名空间镜像的副本,在namenode发生故障时启用。但是在主节点失效时,难免会丢失部分数据,这时可以把存储在NFS的namenode元数据复制到辅助的namenode上作为新的namenode运行。这其中涉及到故障转移的机制。稍后会做一点分析。

3、文件系统命名空间(namespace)

HDFS支持传统的层次型文件组织结构。用户或者应用程序可以创建目录,然后将文件保存在这些目录里。

文件系统名字空间的层次结构和大多数现有的文件系统类似:用户可以创建、删除、移动或重命名文件。HDFS支持用户磁盘配额和访问权限控制,目前还不支持硬链接和软链接。但是HDFS架构并不妨碍实现这些特性。

Namenode负责维护文件系统的名字空间,任何对文件系统名字空间或属性的修改都将被Namenode记录下来。应用程序可以设置HDFS保存的文件的副本数目。文件副本的数目称为文件的副本系数&#

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值