首页 > 其他分享 >HDFS架构与原理浅析

HDFS架构与原理浅析

时间:2023-05-23 20:55:23浏览次数:39  
标签:HDFS 存储 架构 文件 文件系统 namenode 数据 浅析

当需要存储的数据集的大小超过了一台独立的物理计算机的存储能力时,就需要对数据进行分区并存储到若干台计算机上去。管理网络中跨多台计算机存储的文件系统统称为分布式文件系统(distributed fileSystem)

分布式文件系统由于其跨计算机的特性,所以依赖于网络的传输,势必会比普通的本地文件系统更加复杂,比如:如何使得文件系统能够容忍节点的故障并且保证不丢失数据,这就是一个很大的挑战。

(一)HDFS简介及其基本概念

HDFS(Hadoop Distributed File System)是hadoop生态系统的一个重要组成部分,是hadoop中的的存储组件,在整个Hadoop中的地位非同一般,是最基础的一部分,因为它涉及到数据存储,MapReduce等计算模型都要依赖于存储在HDFS中的数据。HDFS是一个分布式文件系统,以流式数据访问模式存储超大文件,将数据分块存储到一个商业硬件集群内的不同机器上。

这里重点介绍其中涉及到的几个概念:

  1. 超大文件。目前的hadoop集群能够存储几百TB甚至PB级的数据。
  2. 流式数据访问。HDFS的访问模式是:一次写入,多次读取,更加关注的是读取整个数据集的整体时间。
  3. 商用硬件。HDFS集群的设备不需要多么昂贵和特殊,只要是一些日常使用的普通硬件即可,正因为如此,hdfs节点故障的可能性还是很高的,所以必须要有机制来处理这种单点故障,保证数据的可靠。
  4. 不支持低时间延迟的数据访问。hdfs关心的是高数据吞吐量,不适合那些要求低时间延迟数据访问的应用。
  5. 单用户写入,不支持任意修改。hdfs的数据以读为主,只支持单个写入者,并且写操作总是以添加的形式在文末追加,不支持在任意位置进行修改。

1.HDFS数据块

每个磁盘都有默认的数据块大小,这是文件系统进行数据读写的最小单位。这涉及到磁盘的相应知识,这里我们不多讲。

HDFS同样也有数据块的概念,默认一个块(block)的大小为128MB(HDFS的块这么大主要是为了最小化寻址开销),要在HDFS中存储的文件可以划分为多个分块,每个分块可以成为一个独立的存储单元。与本地磁盘不同的是,HDFS中小于一个块大小的文件并不会占据整个HDFS数据块

对HDFS存储进行分块有很多好处:

  1. 一个文件的大小可以大于网络中任意一个磁盘的容量,文件的块可以利用集群中的任意一个磁盘进行存储。
  2. 使用抽象的块,而不是整个文件作为存储单元,可以简化存储管理,使得文件的元数据可以单独管理。
  3. 冗余备份。数据块非常适合用于数据备份,进而可以提供数据容错能力和提高可用性。每个块可以有多个备份(默认为三个),分别保存到相互独立的机器上去,这样就可以保证单点故障不会导致数据丢失。

2.namenode和datanode

HDFS集群的节点分为两类:namenode和datanode,以管理节点-工作节点的模式运行,即一个namenode和多个datanode,理解这两类节点对理解HDFS工作机制非常重要。

namenode作为管理节点,它负责整个文件系统的命名空间,并且维护着文件系统树和整棵树内所有的文件和目录,这些信息以两个文件的形式(命名空间镜像文件和编辑日志文件)永久存储在namenode 的本地磁盘上。除此之外,同时,namenode也记录每个文件中各个块所在的数据节点信息,但是不永久存储块的位置信息,因为块的信息可以在系统启动时重新构建。

datanode作为文件系统的工作节点,根据需要存储并检索数据块,定期向namenode发送他们所存储的块的列表。

由此可见,namenode作为管理节点,它的地位是非同寻常的,一旦namenode宕机,那么所有文件都会丢失,因为namenode是唯一存储了元数据、文件与数据块之间对应关系的节点,所有文件信息都保存在这里,namenode毁坏后无法重建文件。因此,必须高度重视namenode的容错性。

元数据是指从信息资源中抽取出来的用于说明其特征、内容的结构化的数据(如题名,版本、出版数据、相关说明,包括检索点等),用于组织、描述、检索、保存、管理信息和知识资源。

为了使得namenode更加可靠,hadoop提供了两种机制:

  1. 第一种机制是备份那些组成文件系统元数据持久状态的文件,比如:将文件系统的信息写入本地磁盘的同时,也写入一个远程挂载的网络文件系统(NFS),这些写操作实时同步并且保证原子性。
  2. 第二种机制是运行一个辅助namenode,用以保存命名空间镜像的副本,在namenode发生故障时启用。(也可以使用热备份namenode代替辅助namenode)。

3.块缓存

数据通常情况下都保存在磁盘,但是对于访问频繁的文件,其对应的数据块可能被显式的缓存到datanode的内存中,以堆外缓存的方式存在,一些计算任务(比如mapreduce)可以在缓存了数据的datanode上运行,利用块的缓存优势提高读操作的性能。

4.联邦HDFS

namenode在内存中保存了文件系统中每个文件和每个数据块的引用关系,这意味着,当文件足够多时,namenode的内存将成为限制系统横向扩展的瓶颈。hadoop2.0引入了联邦HDFS允许系统通过添加namenode的方式实现扩展,每个namenode管理文件系统命名空间中的一部分,比如:一个namenode管理/usr下的文件,另外一个namenode管理/share目录下的文件。

5.HDFS的高可用性

通过备份namenode存储的文件信息或者运行辅助namenode可以防止数据丢失,但是依旧没有保证了系统的高可用性。一旦namenode发生了单点失效,那么必须能够快速的启动一个拥有文件系统信息副本的新namenode,而这个过程需要以下几步:

(1)将命名空间的副本映像导入内存 (2)重新编辑日志 (3)接收足够多来自datanode的数据块报告,从而重建起数据块与位置的对应关系。

上述实际上就是一个namenode的冷启动过程,但是在数据量足够大的情况下,这个冷启动可能需要30分钟以上的时间,这是无法忍受的。

Hadoop2.0开始,增加了对高可用性的支持。采用了双机热备份的方式。同时使用一对活动-备用namenode,当活动namenode失效后,备用namenode可以迅速接管它的任务,这中间不会有任何的中断,以至于使得用户根本无法察觉。

为了实现这种双机热备份,HDFS架构需要作出以下几个改变:

  1. 两个namenode之间要通过高可用共享存储来实现编辑日志的共享
  2. datanode要同时向两个namenode发送数据块的报告信息
  3. 客户端要使用特定机制来处理namenode的失效问题
  4. 备用namenode要为活动namenode设置周期性的检查点,从中判断活动namenode是否失效

HDFS系统中运行着一个故障转移控制器,管理着将活动namenode转移为备用namenode的转换过程。同时,每一个namenode也运行着一个轻量级的故障转移控制器,主要目的就是监视宿主namenode是否失效,并在失效时实现迅速切换。

 

标签:HDFS,存储,架构,文件,文件系统,namenode,数据,浅析
From: https://www.cnblogs.com/imreW/p/17426363.html

相关文章

  • 红包雨的架构设计及源码实现 中奖代码设计 一般有用 看1
    1.项目介绍学习目标系统的功能、背景、场景及需求在架构角度思索系统可能面临的问题以及解决方案运用中间件特性,完成架构设计主业务源码分析微服务的部署与动态扩容1.1项目概述1.1.1概述京东的红包雨大家可能都参与过,在某段时间内随机发放不同的红包,如果公司让你设计类似......
  • 【听书笔记-0611】-《一本书读懂股权架构》
    第一次听股权架构的讨论,豁然开朗,这本书确实是股权架构入门的一本好书!简单的讲解让我明白了金字塔架构、ab股、有限制合伙人这些平时生活人基本上耳熟能详却也不明所以概念,同时这本书里面关于阿里、小米、海底捞、土豆的案例,好像就是昨天发生的事情和新闻。这本书对于我最大的意义......
  • 浅析EasyCVR视频能力在自然灾害风险预警场景中的应用意义
    一、方案背景我国是自然灾害多发的国家,夏季也是灾害多发季节,山洪、泥石流、洪涝、冰雹、飓风、地震等自然灾害每年都给国家经济带来巨大的损失。建设自然灾害风险预警视频监控系统,实现对自然灾害的可视化预警监测和监管,并提供数据分析、设备管理、智能分析、实时告警等功能,辅助和提......
  • 从PaaS平台到技术中台,BoCloud博云直指“数字中国的架构师”
    在IaaS和SaaS如火如荼之后,PaaS也迎来了属于自己的春天。随着头部云服务商和技术创业公司纷纷入场,在业内正在打造“PaaS技术中台”的博云,能否为PaaS企业服务市场带来新的格局?BoCloud博云是一个难以下单一标签的公司,说它是单纯的容器,云管理,PaaS技术企业似乎都不够准确,但又都是博云的......
  • java中运行指令浅析
    后续业务可能需要在程序中运行指令,所以这里简单探究了一下,分别从win和linux两个平台进行研究,又以为java是跨平台语言,可能二者之间的区别应该只是返回内容与输入指令的不同.(还不是在win上开发)1.如何使用Runtime.getRuntime().exec("notepad");RuntimeUtil.exec(......
  • 浅析视频技术与AI智能识别技术在智慧矿山场景中的应用
    一、背景分析 能源与矿业是我国国民经济的重要物质生产部门和支柱产业之一,同时也是一个安全事故多发的高危行业,施工阶段的现场管理对工程成本、进度、质量及安全等至关重要。国家矿山安监局陆续发布(矿安〔2022)128号)文、(矿安综〔2023〕5号)文推动矿山重大灾害风险防控,山西、......
  • 浅析视频技术与AI智能识别技术在智慧矿山场景中的应用
    一、背景分析能源与矿业是我国国民经济的重要物质生产部门和支柱产业之一,同时也是一个安全事故多发的高危行业,施工阶段的现场管理对工程成本、进度、质量及安全等至关重要。国家矿山安监局陆续发布(矿安〔2022)128号)文、(矿安综〔2023〕5号)文推动矿山重大灾害风险防控,山西、贵州......
  • 【实践篇】领域驱动设计:DDD工程参考架构
    背景为什么要制定参考工程架构不同团队落地DDD所采取的应用架构风格可能不同,并没有统一的、标准的DDD工程架构。有些团队可能遵循经典的DDD四层架构,或改进的DDD四层架构,有些团队可能综合考虑分层架构、整洁架构、六边形架构等多种架构风格,有些在实践中可能引入CQRS解决读模型与......
  • linux 中 查看cpu架构
     001、uname-m[root@PC1~]#uname-mx86_64 002、arch[root@PC1~]#archx86_64 003、lscpu[root@PC1~]#lscpu ......
  • Netflix 网站架构学习
    Netflix网站架构学习Netflix架构的特点是他们没有自建数据中心,而是将服务直接架设在AWS的云服务上(EC2和S3),并通过自建CDNOpenConnect提供高质量的点播服务。Netflix采用微服务架构,将复杂业务流程拆解成独立的小型服务,服务间通过REST或RPC彼此调用。CDNCDN的主......