0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于HDFS的概述及组成与架构详解

jf_f8pIz0xS 来源:CSDN技术社区 作者:苜苜的烂笔头 2021-04-15 13:34 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一、 HDFS简介

1.1 HDFS的概述

HDFS是基于 流数据 访问模式的 分布式文件系统 ,其设计建立在 “一次写入、多次读取” 的基础上,提供高吞吐量、高容错性的数据访问,能很好地解决海量数据的存储问题。

流数据 是指数千个数据源 持续生成 的数据,可以理解为随时间延续而 无限增长 的动态数据集合。

通俗点说,如果把数据比如成一个水库,那么流进去的水,就是流数据(就像我们听的音乐,属于音乐流;而看到的文字、图片这些较为固定的,一次性下载的,形成不了流)。

在Hadoop生态圈中,HDFS属于底层基础,负责存储文件。

1.2 HDFS的优点

HDFS的优点:

高容错性。提供了容错和恢复机制,副本丢失后,自动恢复。

高可靠性。数据自动保存多个副本,通过多副本提高可靠性。

适合大数据处理。可以处理超大文件,比如 TB级甚至PB级 的文件。

适合批处理。移动计算而非移动数据;数据位置暴露给计算框架。

支持流式数据访问。一次性写入,多次读取(一个数据集一旦生成,就会被复制分发到不同的存储节点,各节点可以进行读取/访问);保证数据一致性。

低成本运行。可以运行在低成本的硬件之上。

HDFS 默认保存 3 份副本。

第一个副本:放置在 上传文件 的数据节点(第一个副本如果是在 集群外 提交,则随机挑选一个 CPU 比较空闲 、 磁盘不太满 的节点);

第二个副本:放置在与 第一个副本 不同 的机架的节点上;

第三个副本:放在与 第二个副本 相同 的机架的其他节点上。

1.3 HDFS的缺点

HDFS的缺点:

不适合处理 低延迟 的数据访问。比如用户 要求时间比较短 的低延迟应用(主要处理高数据吞吐量的应用)。

不适合处理 大量的小 文件。会造成寻址时间超过读取时间;会占用NameNode大量内存,因为NameNode把文件系统的元数据存放在内存中(文件系统的容量由NameNode的大小决定),小文件太多会消耗NameNode的内存。

不适合 并发写入。一个文件只能有一个写入者,HDFS暂不支持多个用户对同一个文件的写操作。

不适合 任意修改 文件。仅支持append(附加),不支持在文件的任意位置进行修改。

二、 HDFS的组成与架构

HDFS的组成架构图及各部分功能如下所示:

2.1 NameNode节点

当用户访问数据文件时,为了保证能够读取到每一个数据块, HDFS有一个专门 负责保存文件属性信息的节点,这个节点就是 NameNode 节点(即 名称节点 )。

2.1.1 节点职责

NameNode节点 是HDFS的管理者,负责保存和管理HDFS的元数据。

其职责有以下三个方面:

① 管理维护HDFS的命名空间

NameNode管理HDFS系统的命名空间,维护文件系统树以及文件系统树中所有文件的元数据。管理这些信息的的文件分别是 edits(操作日志文件) 和 fsimage(命名空间镜像文件) 。

editlog(操作日志):在NameNode启动的情况下,对HDFS进行的各种操作进行记录。(HDFS客户端执行的所有操作都会被记录到editlog文件中,这些文件由edits文件保存)

fsimage:包含HDFS中的元信息(比如修改时间、访问时间、数据块信息等)。

② 管理DataNode上的数据块

负责管理数据块上所有的元数据信息(管理DataNode上数据块的均衡,维持副本数量)。

③ 接收客户端的请求

接收客户端文件上传、下载、创建目录等的请求。

2.2 DataNode节点

HDFS首先把大文件切分成若干个小的数据块,再把这些数据块写入不同的节点,这个 负责保存文件数据的节点就是 DataNode 节点(即 数据节点 )。

2.2.1 节点职责

DataNode节点 负责存储数据,把Block(数据块)以Linux文件的形式保存在磁盘上,并根据Block标识和字节范围来读写块数据。

其职责有以下三个方面:

① 保存数据块

一个数据块会在多个DataNode进行冗余备份(在某一个DataNode最多只有一个备份)。

② 负责客户端对数据块的IO请求

在客户端执行写操作时,DataNode之间会相互通信,保证写操作的一致性。

③ 定期和NameNode进行心跳通信,接受NameNode的指令

如果NameNode节点10分钟没有收到DataNode的心跳信息,就会将其上的数据块复制到其他DataNode节点。

因此,NameNode节点上并不会永久保存DataNode节点上的数据块信息,而是通过与DataNode节点心跳联系的方式,来更新节点上的映射表,以此减轻负担。

问题:HDFS数据块默认大小为128M(Hadoop2.2之前为64M),将HDFS的数据块设置得很大的目的是什么?(传统数据块只有512个字节)

答:为了减少寻址开销,让HDFS的文件传输时间由传输速率决定(如果块设置得足够大,从磁盘 传输数据的时间 会明显大于 定位这个块开始位置 所需的时间)。

2.3 SecondaryNameNode节点

HDFS有一个定期创建命名空间的检查点(CheckPoint)操作的节点,也就是SecondaryNameNode节点(即 第二名称节点)。

出于可靠性考虑,SecondaryNameNode节点与NameNode节点通常运行在不同的机器上,且SecondaryNameNode节点与NameNode节点的内存要一样大。

(如果想了解 SecondaryNameNode 的工作流程,可以参考这篇文章:浅析 SecondaryNameNode 的工作流程 )

问题:一般情况下,一个集群中的SecondaryNameNode节点也是只有一个的原因是什么?

答:因为如果多的话,会增加NameNode的压力,使其忙于元数据的传输/接收、日志的传输/切换,从而导致性能下降;同时,NameNode节点也不支持做并发检查点。

2.3.1 节点职责

SecondaryNameNode节点 定期把NameNode的 fsimage 和 edits 下载到本地,再将它们加载到内存并进行合并,最后把合并后新的 fsimage 返回NameNode (这个过程称为检查点)。

经典问题:NameNode与SecondaryNameNode有没有关系?

SecondaryNameNode节点的工作流程可以参考这篇文章:

其职责有以下两个方面:

① 防止edits过大

定期合并 fsimage 和 edits 文件,使 edits 大小保持在限制范围内。这样做减少了重新启动NameNode时合并 fsimage 和 edits 耗费的时间,从而减少了NameNode启动的时间。

② 做冷备份

对一定范围内数据做快照性备份,在NameNode失效时能恢复部分 fsimage 。

好了,HDFS 及其组成框架介绍完成。

如果想进一步了解 HDFS 的工作机制,可以参考这篇文章:图文详解 HDFS 工作机制及其原理 。
编辑:lyn

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • HDFS
    +关注

    关注

    1

    文章

    32

    浏览量

    10070
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    芯源MCU架构是不是基本都是ARM架构?还有其他的架构吗?

    芯源MCU架构是不是基本都是ARM架构?还有其他的架构吗?
    发表于 11-20 06:21

    企业级HDFS高可用与YARN资源调度方案

    作为一名在大数据运维领域摸爬滚打8年的老兵,我见过太多因为基础架构不够健壮而导致的生产事故。今天,我想和大家分享一套经过实战检验的 HDFS 高可用与 YARN 资源调度方案,这套方案帮助我们团队将平台可用性从 99.5% 提升到 99.99%,年故障时间从 43 小时降
    的头像 发表于 09-08 17:15 534次阅读

    新能源汽车高压架构详解

    应读者建议,讲一下高压电气架构,花了一点时间做了一些图,便于直观理解,分析一下高压架构的发展历程和趋势。
    的头像 发表于 09-02 15:01 2605次阅读
    新能源汽车高压<b class='flag-5'>架构</b><b class='flag-5'>详解</b>

    光伏智能电网的组成架构

    光伏智能电网是融合光伏发电与智能电网技术的现代电力系统,其核心目标是通过智能化手段实现光伏发电的高效接入、灵活调控与优化运行,从而提升电网的可靠性、经济性和环保性。以下从组成架构两方面展开
    的头像 发表于 07-22 10:54 780次阅读

    MySQL的组成结构与结构化查询语言详解

    MySQL作为世界上最流行的开源关系型数据库管理系统,采用了分层架构设计
    的头像 发表于 07-14 11:21 423次阅读

    Nginx架构拆分集群详解

    单台服务器运行整个 LNMP 架构会导致网站访问缓慢,当系统内存被吃满时,很容易导致系统出现oom,从而kill掉MySQL数据库,为了避免这种情况的发生,我们可以将数据库服务拆分到独立的服务器上部署。
    的头像 发表于 06-28 16:03 477次阅读
    Nginx<b class='flag-5'>架构</b>拆分集群<b class='flag-5'>详解</b>

    Transformer架构概述

    由于Transformer模型的出现和快速发展,深度学习领域正在经历一场翻天覆地的变化。这些突破性的架构不仅重新定义了自然语言处理(NLP)的标准,而且拓宽了视野,彻底改变了AI的许多方面。
    的头像 发表于 06-10 14:24 932次阅读
    Transformer<b class='flag-5'>架构</b><b class='flag-5'>概述</b>

    SSH常用命令详解

    SSH常用命令详解
    的头像 发表于 06-04 11:30 1705次阅读

    FPC组成简介及工程设计规范

    FPC产品简介概述: 1,FPC概念 2,FPC产品结构组成 3,FPC材料 4,FPC产品类型 5,FPC产品特征 FPC(Flexible Printed Circuit)挠性印刷电路版,简称
    发表于 05-27 15:10

    详解电动汽车的区域控制架构

    故障情况。不同于传统的域架构,区域控制架构采用集中控制和计算的方式,将分散在各个 ECU 上的软件统一交由强大的中央计算机处理,从而为下游的电子控制和配电提供了更高的灵活性。
    的头像 发表于 05-15 09:23 1856次阅读
    <b class='flag-5'>详解</b>电动汽车的区域控制<b class='flag-5'>架构</b>

    芯片新关税涉及的品牌/标签/产地—详解

    芯片新关税涉及的品牌/标签/产地—详解
    的头像 发表于 04-16 17:44 843次阅读
    芯片新关税涉及的品牌/标签/产地—<b class='flag-5'>详解</b>

    水电站技术供水系统方案概述及技术优势

    水电站技术供水系统是水电厂生产过程中不可或缺的重要组成部分,它为各种机电设备的稳定运行提供必要的冷却、润滑和水压操作等功能。
    的头像 发表于 04-10 14:33 585次阅读
    水电站技术供水系统方案<b class='flag-5'>概述及</b>技术优势

    SVPWM的原理及法则推导和控制算法详解

    SVPWM 是近年发展的一种比较新颖的控制方法,是由三相功率逆变器的六个功率开关元件组成的特定开关模式产生的脉宽调制波,能够使输出电流波形尽 可能接近于理想的正弦波形。空间电压矢量 PWM 与传统
    发表于 03-14 14:51

    开关电源各部电路详解

    开关电源原理及各功能电路详解 一、 开关电源的电路组成:: 开关电源的主要电路是由输入电磁干扰滤波器(EMI)、整流滤波电路、功率变换电路、PWM控制器电路、输出整流滤波电路组成。辅助电路有输入过
    发表于 03-10 16:51

    百问MQTT协议分析 - MQTT简述及协议报文格式组成

    16.1 mqtt协议介绍 16.1.1 概述 ​MQTT是一个客户端服务端架构的发布/订阅模式的消息传输协议。它的设计思想是轻巧、开放、简单、规范,易于实现。这些特点使得它对很多场景来说都是很好
    发表于 12-13 09:29