Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >HDFS系列(1) | HDFS文件系统的简单介绍

HDFS系列(1) | HDFS文件系统的简单介绍

作者头像
不温卜火
发布于 2020-10-28 07:36:12
发布于 2020-10-28 07:36:12
1.3K00
代码可运行
举报
文章被收录于专栏:不温卜火不温卜火
运行总次数:0
代码可运行

Hadoop分布式环境搭建(简单高效~)这篇博客中,博主在最后为大家带来了HDFS的初体验。但是当时只是尝试测试一下集群是否有错误,因此,本篇博文为大家带来HDFS的文件系统介绍。

在介绍文件系统之前我们首先需要了解HDFS的作用。我们都知道HDFS是Hadoop的一个核心组件,那在Hadoop中HDFS扮演着怎样的一个角色呢?我们可以通过下图直观的了解。

  • 上图中个部分的作用:
  • HDFS:一个高可靠、高吞吐量的分布式文件系统,对海量数据的存储。
  • MapReduce:一个分布式的资源调度和离线并行计算框架。
  • Yarn:基于HDFS,用于作业调度和集群资源管理的框架。

话不多说,开始进入正题

一. HDFS基本介绍

HDFSHadoop Distribute File System 的简称,意为:Hadoop 分布式文件系统。是 Hadoop 核心组件之一,作为最底层的分布式存储服务而存在。

分布式文件系统解决的问题就是大数据存储。它们是横跨在多台计算机上的存储系统。分布式文件系统在大数据时代有着广泛的应用前景,它们为存储和处理超大规模数据提供所需的扩展能力。

可以把HDFS理解为将多个节点上的容量汇总到一起,拼接成一个大的文件系统,在一个节点上上传数据,在其他的节点上都能够访问使用。

二. HDFS的组成架构及作用

  • 1. 在HDFS中,使用主从节点的方式,即使用Master和Slave结构对集群进行管理。一般一个 HDFS 集群只有一个Namenode 和一定数目的Datanode 组成。Namenode 是 HDFS 集群主节点,Datanode 是 HDFS集群从节点,两种角色各司其职,共同协调完成分布式的文件存储服务。

那么如何生动的理解这一过程呢,博主准备如下图片使大家能够使大家能够能加容易的理解这一概念:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
由上图可知:
   NameNode(Master)管理者 - 只负责管理,管理集群内各个节点。
   SecondaryNameNode 辅助管理 – 只负责辅助NameNode管理工作。
   DataNode(Slave) 工作者,是负责工作,周期向NameNode汇报,进行读写数据。
  • 2. HDFS集群包括,NameNode,DataNode,clent以及Secondary Namenode(在第九部分有图解)

①NameNode(Master)

  • 1.管理HDFS的名称空间
  • 2.配置副本策略
  • 3.管理数据块(Block)映射信息
  • 4.处理客户端读写请求

②DataNode(Slave)

  • 1.存储实际的数据块
  • 2.执行数据块的读/写操作

③ Client

  • 1.文件切分。文件上传HDFS的时候,Client将文件切分成一个一个的Block,然后进行上传
  • 2.与NaneNode交互,获取文件的位置信息
  • 3.与DataNode交互,读取或者写入数据
  • 4.Client提供一些命令来管理HDFS,比如NameNode格式化
  • 5.Client可以通过一些命令来访问HDFS,比如对HDFS增删查改操作

④SecondaryNameNode:

  • 1.辅助NameNode,分担其工作量,比如定期合并Fsimage和Edits,并推送给NameNode
  • 2.在紧急情况下,可辅助恢复NameNode

三. HDFS分块存储

HDFS将所有的文件全部抽象成为block块来进行存储,不管文件大小,全部一视同仁都是以block块的统一大小和形式进行存储,方便我们的分布式文件系统对文件的管理。

块的默认大小在Hadoop2.x版本中是128M,老版本为64M。block块的大小可以通过hdfs-site.xml当中的配置文件进行指定。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 <property>
        <name>dfs.block.size</name>
        <value>块大小 以字节为单位</value>//只写数值就可以
    </property>

注意: 你需要了解知识点: 一个文件100M,上传到HDFS占用几个快?一个块128M,剩余的28M怎么办? 事实上,128只是个数字,数据超过128M,便进行切分,如果没有超过128M,就不用切分,有多少算多少,不足128M的也是一个块。这个块的大小就是100M,没有剩余28M这个概念。

四. 抽象成数据块的好处

为什么要要将数据抽象成数据块呢?又有哪些好处?

  1. 一个文件有可能大于集群中任意一个磁盘 10T*3/128 = xxx块 2T,2T,2T 文件方式存—–>多个block块,这些block块属于一个文件
  2. 使用块抽象而不是文件可以简化存储子系统
  3. 块非常适合用于数据备份进而提供数据容错能力和可用性

通常DataNode从磁盘中读取块,但对于访问频繁的文件,其对应的块可能被显示的缓存在DataNode的内存中,以堆外块缓存的形式存在。默认情况下,一个块仅缓存在一个DataNode的内存中,当然可以针对每个文件配置DataNode的数量。作业调度器通过在缓存块的DataNode上运行任务,可以利用块缓存的优势提高读操作的性能。

例如: 连接(join)操作中使用的一个小的查询表就是块缓存的一个很好的候选。 用户或应用通过在缓存池中增加一个cache directive来告诉namenode需要缓存哪些文件及存多久。缓存池(cache pool)是一个拥有管理缓存权限和资源使用的管理性分组。 例如一个文件 130M,会被切分成2个block块,保存在两个block块里面,实际占用磁盘130M空间,而不是占用256M的磁盘空间

五. HDFS副本机制

HDFS视硬件错误为常态,硬件服务器随时有可能发生故障。为了容错,文件的所有 block 都会有副本。每个文件的 block 大小和副本系数都是可配置的。应用程序可以指定某个文件的副本数目。副本系数可以在文件创建的时候指定,也可以在之后改变。 数据副本默认保存三个副本,我们可以更改副本数以提高数据的安全性,怎样修改副本数呢?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vim hdfs-site.xml

<property>
      <name>dfs.replication</name>
      #  这里填写副本数,修改完毕之后记得重启集群生效
      <value>3</value>
</property>

六. Hadoop2.7.2副本节点选择

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
第一个副本在client所处的节点上。如果客户端在集群外,随机选一个。
第二个副本和第一个副本位于相同机架,随机节点。
第三个副本位于不同机架,随机节点。

七. 名字空间(NameSpace)

HDFS 支持传统的层次型文件组织结构。用户或者应用程序可以创建目录,然后将文件保存在这些目录里。文件系统名字空间的层次结构和大多数现有的文件系统类似:用户可以创建、删除、移动或重命名文件。 Namenode 负责维护文件系统的名字空间,任何对文件系统名字空间或属性的修改都将被Namenode 记录下来。 HDFS 会给客户端提供一个统一的抽象目录树,客户端通过路径来访问文件, 形如:hdfs://namenode:port/dir-a/dir-b/dir-c/file.data。

八. Namenode 元数据管理

  • 1.我们把目录结构及文件分块位置信息叫做元数据。Namenode负责维护整个hdfs文件系统的目录树结构,以及每一个文件所对应的 block 块信息(block 的id,及所在的datanode服务器)。
  • 2. Namenode节点负责确定指定的文件块到具体的Datanode结点的映射关系。在客户端与数据节点之间共享数据。
  • 3.管理Datanode结点的状态报告,包括Datanode结点的健康状态报告和其所在结点上数据块状态报告,以便能够及时处理失效的数据结点。

九. Datanode 数据存储

  • 1. 文件的各个 block 的具体存储管理由 datanode 节点承担。每一个 block 都可以在多个datanode 上。Datanode 需要定时向 Namenode 汇报自己持有的 block信息。 存储多个副本(副本数量也可以通过参数设置 dfs.replication,默认是 3)。
  • 2.向Namenode结点报告状态。每个Datanode结点会周期性地向Namenode发送心跳信号和文件块状态报告。

心跳是每3秒一次,心跳返回结果带有namenode给该datanode的命令如复制块数据到另一台机器,或删除某个数据块。如果超过10分钟没有收到某个datanode的心跳,则认为该节点不可用。 DataNode启动后向namenode注册,通过后,周期性(1小时)的向namenode上报所有的块信息。

  • 3.执行数据的流水线复制。当文件系统客户端从Namenode服务器进程获取到要进行复制的数据块列表后,完成文件块及其块副本的流水线复制。

一个数据块在datanode上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳。

本次的分享就到这里了,喜欢的各位小伙伴们希望你们能够点赞和关注呀

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/04/23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
HDFS文件系统介绍(1)
在Hadoop(CDH)分布式环境搭建(简单易懂,绝对有效!)这篇博客中,小菌在最后为大家带来了HDFS的初体验。一些大数据专业的粉丝私信小菌希望能再详细讲讲HDFS的相关内容。于是本次分享,小菌将为
大数据梦想家
2021/01/22
6390
HDFS文件系统介绍(1)
HDFS基本介绍
HDFS 是 Hadoop Distrbute File System 的简称,意为:Hadoop 分布式文件系统。是Hadoop核心组件之一,作为最底层的分布式存储服务而存在。 分布式文件系统解决的问题就是大数据存储。它们是横跨在多台计算机上的存储系统。分布式文件系统在大数据时代有着广泛的应用前景,它们为存储和处理超大规模数据提供所需的扩展能力。 HDFS 文件系统的容量 理解: 将多个节点的容量汇总到一起拼接成一个大的文件系统, 在一个节点上传数据,在其他的节点上都能够访问使用。
用户4870038
2021/02/05
8590
HDFS基本介绍
二、分布式文件系统HDFS及其简单使用
在现代的企业环境中,单机容量往往无法存储大量数据,需要跨机器存储。统一管理分布在集群上的文件系统称为分布式文件系统。
润森
2022/08/18
4500
二、分布式文件系统HDFS及其简单使用
Hadoop分布式文件系统HDFS
为了保证数据的可靠性和容错性,HDFS会为每个数据块创建多个副本(默认为3个),并将这些副本分布到不同的DataNode上。当某个DataNode出现故障时,可以从其他DataNode上获取数据块的副本,从而确保数据的可靠性。
一身黑Lil
2024/05/10
2030
Hadoop分布式文件系统HDFS
2021年大数据Hadoop(七):HDFS分布式文件系统简介
在现代的企业环境中,单机容量往往无法存储大量数据,需要跨机器存储。统一管理分布在集群上的文件系统称为分布式文件系统 。
Lansonli
2021/10/11
5650
HDFS分布式文件存储系统详解
优点: 1.处理超大文件 能用来存储管理PB级的数据 1PB = 1024TB 2.处理非结构化数据、半结构化数据、结构化数据 流式的访问数据 一次写入、多次读取 3.运行于廉价的商用机器集群上 可运行在低廉的商用硬件集群上 故障时能继续运行且不让用户察觉到明显的中断
全栈程序员站长
2022/08/22
1.6K0
HDFS分布式文件存储系统详解
【史上最全】Hadoop 核心 - HDFS 分布式文件系统详解(上万字建议收藏)
Hadoop 分布式系统框架中,首要的基础功能就是文件系统,在 Hadoop 中使用 FileSystem 这个抽象类来表示我们的文件系统,这个抽象类下面有很多子实现类,究竟使用哪一种,需要看我们具体的实现类,在我们实际工作中,用到的最多的就是HDFS(分布式文件系统)以及LocalFileSystem(本地文件系统)了。
五分钟学大数据
2021/02/08
2.3K0
【史上最全】Hadoop 核心 - HDFS 分布式文件系统详解(上万字建议收藏)
分布式文件系统HDFS原理一网打尽
HDFS是一个分布式文件系统,具有良好的扩展性、容错性以及易用的API。核心思想是将文件切分成等大的数据块,以多副本的形式存储到多个节点上。HDFS采用了经典的主从软件架构,其中主服务被称为NameNode,管理文件系统的元信息,而从服务被称为DataNode,存储实际的数据块,DataNode与NameNode维护了周期性的心跳,为了防止NameNode出现单点故障,HDFS允许一个集群中存在主NameNode,并通过ZooKeeper完成Active NameNode的选举工作。HDFS提供了丰富的访问方式,用户可以通过HDFS shell,HDFS API,数据收集组件以及计算框架等存取HDFS上的文件。
大数据真好玩
2021/07/30
1.3K0
分布式文件系统 HDFS 简介
文章目录 1. HDFS 简介 2. HDFS起源发展 3. HDFS设计目标 4. HDFS应用场景 5. HDFS重要特性--主从架构 6. HDFS重要特性--分块存储机制 7. HDFS重要特性--副本机制 8. HDFS重要特性--namespace 9. HDFS重要特性--元数据管理 10. HDFS重要特性--数据块存储 1. HDFS 简介 HDFS( Hadoop Distributed File System ),意为:Hadoop分布式文件系统。是Apache Hadoop核心组件之
兮动人
2021/06/11
1.5K0
分布式文件系统 HDFS 简介
Hadoop HDFS分布式文件系统设计要点与架构
1、硬件错误是常态,而非异常情况,HDFS可能是有成百上千的server组成,任何一个组件都有可能一直失效,因此错误检测和快速、自动的恢复是HDFS的核心架构目标。 2、跑在HDFS上的应用与一般的应用不同,它们主要是以流式读为主,做批量处理;比之关注数据访问的低延迟问题,更关键的在于数据访问的高吞吐量。 3、HDFS以支持大数据集合为目标,一个存储在上面的典型文件大小一般都在千兆至T字节,一个单一HDFS实例应该能支撑数以千万计的文件。 4、 HDFS应用对文件要求的是write-one-read-many访问模型。一个文件经过创建、写,关闭之后就不需要改变。这一假设简化了数据一致性问 题,使高吞吐量的数据访问成为可能。典型的如MapReduce框架,或者一个web crawler应用都很适合这个模型。 5、移动计算的代价比之移动数据的代价低。一个应用请求的计算,离它操作的数据越近就越高效,这在数据达到海量级别的时候更是如此。将计算移动到数据附近,比之将数据移动到应用所在显然更好,HDFS提供给应用这样的接口。 6、在异构的软硬件平台间的可移植性。
黄规速
2022/04/14
5370
HDFS伪分布式环境搭建
HDFS是主/从式的架构。一个HDFS集群会有一个NameNode(简称NN),也就是命名节点,该节点作为主服务器存在(master server).
JavaEdge
2021/10/18
6260
HDFS工作机制和原理
HDFS是一种分部式的文件系统,在他出现以前就已经存在了很多中分布式文件系统,但是他们都是部署在服务器上,需要高的POSIX接口,同时他们默认服务器是稳定的可以提供大量资源。
Tim在路上
2020/08/04
1.2K0
大数据技术之Hadoop(HDFS)第1章 HDFS概述
Hadoop分布式文件系统(HDFS)是指被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统(Distributed File System)。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的。HDFS是Apache Hadoop Core项目的一部分。
用户7656790
2020/08/18
6970
大数据技术之Hadoop(HDFS)第1章 HDFS概述
Hadoop(四)HDFS集群详解
前言   前面几篇简单介绍了什么是大数据和Hadoop,也说了怎么搭建最简单的伪分布式和全分布式的hadoop集群。接下来这篇我详细的分享一下HDFS。   HDFS前言:     设计思想:(分而治之)将大文件、大批量文件,分布式存放在大量服务器上,以便于采取分而治之的方式对海量数据进行运算分析。     在大数据系统中作用:为各类分布式运算框架(如:mapreduce,spark,tez,……)提供数据存储服务。   分布式文件系统:     问题引发:海量数据超过了单台物理计算机的存储能力     解
用户1195962
2018/01/18
2.3K0
Hadoop(四)HDFS集群详解
HDFS 为何在大数据领域经久不衰?
HDFS是最早的大数据存储系统,存储着宝贵的数据资产,各种新算法、框架要想得到广泛使用,必须支持HDFS,才能获取已存储在里面的数据。所以大数据技术越发展,新技术越多,HDFS得到的支持越多,越离不开HDFS。HDFS也许不是最好的大数据存储技术,但依然是最重要的大数据存储技术。
JavaEdge
2022/04/06
3520
HDFS 为何在大数据领域经久不衰?
HDFS 原理、架构与特性介绍
本文主要讲述 HDFS原理-架构、副本机制、HDFS负载均衡、机架感知、健壮性、文件删除恢复机制 1:当前HDFS架构详尽分析  HDFS架构  •NameNode  •DataNod
用户1177713
2018/02/24
3.4K0
HDFS 原理、架构与特性介绍
HDFS是如何设计架构的?
Hadoop到目前为止发展已经有10余年,版本经过无数次的更新迭代,目前业内大家把Hadoop大的版本分为Hadoop1.0、Hadoop2.0、Hadoop3.0 三个版本。
大数据老哥
2021/01/28
5510
HDFS是如何设计架构的?
Hadoop(四)HDFS集群详解
  前面几篇简单介绍了什么是大数据和Hadoop,也说了怎么搭建最简单的伪分布式和全分布式的hadoop集群。接下来这篇我详细的分享一下HDFS。
大道七哥
2019/09/10
1.8K0
Hadoop(四)HDFS集群详解
进击大数据系列(四):Hadoop 架构基石分布式文件系统 HDFS
随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统。
民工哥
2023/08/22
5360
进击大数据系列(四):Hadoop 架构基石分布式文件系统 HDFS
【Hadoop研究】Hadoop分布式文件系统HDFS的工作原理详述
Hadoop分布式文件系统(HDFS)是一种被设计成适合运行在通用硬件上的分布式文件系统。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。它能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。要理解HDFS的内部工作原理,首先要理解什么是分布式文件系统。 1、分布式文件系统 多台计算机联网协同工作(有时也称为一个集群)就像单台系统一样解决某种问题,这样的系统我们称之为分布式系统。 分布式文件系统是分布式系统的一个子集,它们解决的问题就是数据存储。换句话说,它们是横跨在多台计算机上的存储系统。存
陆勤_数据人网
2018/02/27
1.4K0
【Hadoop研究】Hadoop分布式文件系统HDFS的工作原理详述
相关推荐
HDFS文件系统介绍(1)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验