HDFS分布式文件系统详解

目录

什么是文件系统?

为什么出现了HDFS分布式文件系统

HDFS的设计目标

分布式文件系统的结构

HDFS 读写文件流程


什么是文件系统?

文件系统是操作系统的一部分,它是一个软件程序,主要用于管理和存储文件。文件系统提供了各种接口和命令,便于用户通过他们对文件进行各种操作。

为什么出现了HDFS分布式文件系统

大数据时代的到来,人们对数据的依赖性越来越大、上网产生的数据量急剧增加、信息量爆炸式增长。因此,只是通过增加计算机的硬盘容量处理数据难以达到要求,这样将所有的数据存储和处理在同一台计算机上便不可行了。此时通过增加计算机的横向容量,即增加计算机的数量,将数据分布在多台计算机上的Hadoop 分布式计算便诞生了。而HDFS是Hadoop 分布式计算的一个重要组成部分,分布式文件系统。

HDFS的设计目标

  1. 高容错性。HDFS被设计成可运行于由成千上万的PC或服务器组成的集群上,在系统处理数据的过程中,硬件发生故障可能是常态,为了保证数据的正常处理,数据在HDFS中会自动保存多份,并且存储于不同的机架上,这样就可以大大增加系统容错性。
  2. 流式数据访问。通过分块机制,不需要等待全部数据的到来,只需要将数据分块,一块一块的进行处理,增加实时性。
  3. 面向大数据集。运行于HDFS之上的应用一般都具有大数据集。HDFS不适合小文件的处理,占用 namenode 节点。
  4. 不允许数据修改。由于HDFS处理的都是大数据集,因此,当数据上传到Hadoop集群后,会进行文件的切割、复制、分发等操作,当写好的数据被修改时相当于再来一遍该过程。
  5. 移动计算程序而不是计算数据。在靠近数据存储的位置进行数据处理是最有利的方式,这样减少了大量数据的传输,消除了网络的拥堵。因此HDFS提供了接口来让代码移动到靠近数据存储的位置。

分布式文件系统的结构

HDFS 架构主要由四部分组成,Client、NameNode、SecondaryNameNode、DataNode。

  • Client 为客户端。主要功能如下:
  1. 文件切分 。当文件要写入HDFS时,Client 会将文件切分成无数的block,一个一个的依次写入。
  2. 与namenode 交互。从namenode 获取文件所要存储的位置。
  3. 与datanode 交互。进行数据传输,写入或读取数据。
  4. 管理和访问HDFS。
  • namenode为名称节点,也称为主节点。
  1. 管理着数据节点和数据块之间的映射关系。
  2. 可以在默认的情况下进行文本复制。
  3. 响应客户端请求(上传、下载、复制文件信息等 )。
  • datanode为数据节点。
  1. 管理数据块,执行数据块的读写操作。数据节点中保存着数据块,数据块用来存储数据。
  2. datanode 保持着与namenode 之间的通讯,以执行namenode 的指令。同时namenode 可以确保datanode 是否正常工作,如果超过10分钟的时间没有接受datanode 的指令,则会将该地对应的数据块复制到其他正常的datanode 中。
  • 块:在操作系统中,文件系统一般会将磁盘划分为相同大小的 “磁盘块”,用来进行文件读写,它是文件系统进行读写的最小单位,在 HDFS 中,同样也是如此,但不同的是,HDFS 中块的大小一般为64MB或128MB。
  • 名称节点(主节点namenode ):保存文件的属性信息,便于用户能够访问到所有的数据块。

HDFS 读写文件流程

写文件流程:

  1. 首先客户端向namenode 请求上传文件,并传输想要创建文件的目录。
  2. namenode 检查该目录树是否可以创建文件,并响应给客户端可以上传文件。
  3. Client 请求上传第一个block。
  4. namenode 返回可以存储数据的三个节点。
  5. Client 请求datanode建立Block 传输通道,以此来实现数据的多份存储。
  6. datanode 返回建立通道成功。
  7. Client 直接向namenode 返回的三个datanode 节点写入数据。

读文件流程:

 

  1.  首先客户端向namenode 请求下载,传入文件的目录。
  2. namenode 返回给Client 文件的存储位置(查询文件元数据,得到存储文件的datanode 地址)。
  3. Client 请求读数据。
  4. 采用就近原则读取datanode 中的数据。

 

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值