上海古都建筑设计集团,上海办公室装修设计公司,上海装修公司高质量的内容分享社区,上海装修公司我们不是内容生产者,我们只是上海办公室装修设计公司内容的搬运工平台

HDFS 原理 详解

guduadmin24小时前

前言

一、HDFS的设计原理

二、什么是零拷贝

三、什么是DMA

四、HDFS 架构剖析

         HDFS 架构整体概述

          HDFS 架构图

五、HDFS 集群角色介绍

1.主角色: namenode

2 从角色:datanode

3 主角色辅助角色: secondarynamenode 

六、HDFS重要特性--主从架构

 七、HDFS重要特性--分块存储机制

八、HDFS重要特性--副本机制

九、HDFS重要特性--namespace

十、HDFS重要特性--元数据管理

十一 、HDFS重要特性--数据块存储

十二 、 HDFS读流程和写流程

 一  HDFS 读原理

 二  HDFS写原理

十三 、 HDFS小文件处理

 十四  、安全模式 

前言

  这是HDFS是Hadoop 核心重要的组件之一 , 解决大数据计算中的海量存储数据  

  下面是HDFS原理 架构 以及模块组成  


提示:以下是本篇文章正文内容,下面案例可供参考 如有问题欢迎大家纠正,评论或者私信

一、HDFS的设计原理

   1.大数据文件 , 文件分块存储

   2.流式数据访问,一次写入多次读取

   3.不支持动态改变文件内容 , 而是要文件一次写入就不做变换,要是做变化也只能在

     文件末添加内容 

   4.廉价硬件,硬件故障

   5.利用DMA 引擎的零拷贝技术进行文件的传输和同步

二、什么是零拷贝

      传统情况 

        HDFS 原理 详解,第1张

零拷贝技术:

          HDFS 原理 详解,第2张

三、什么是DMA

  DMA 将一个内存区

从一个设备复制到另一个, 当中央处理器初始化这个传输动作,传输动作本身是由DMA控制器来实行和完成

四、HDFS 架构剖析

         HDFS 架构整体概述

1 HDFS是Hadoop Distribute File System 的简称,意为:Hadoop分布式文件系统。 Hdfs是hadoop分发文件系统的简称,意为:hadoop分布式文件系统。

2 HDPS是hadop核心组件之一,作为大数据生态圈最底层的分布式存储服务而存在

3 HDPS解决的问题就是大数据如何存储,它是横跨在多台计算机上的文件存储系统并且具有高度的容销 Hdps解决的问题就是大数据如何存储,它是横跨在多台计算机上的文件存储系统并且具有高度的容销

              HDFS 原理 详解,第3张

     HDFS 架构图

1·HDFS集群遵循主从架构(master/slave )。通常包括一个主节点和多个从节点。

2·在内部,文件分块存储,每个块根据复制因子存储在不同的从节点计算机上形成备份。

3·主节点存储和管理文件系统namespace,即有关文件块的信息,例如块位置,权限等﹔从节点存储文件的数据块。

4·主从各司其职,互相配合,共同对外提供分布式文件存储服务。当然内部细节对于用户来说是透明的。

5 SecondaryNameNode是主角色的辅助角色,帮助主角色进行元数据的合并。HDFS 原理 详解,第4张

HDFS 原理 详解,第5张

五、HDFS 集群角色介绍

1.主角色: namenode

 

   NameNode是Hadoop分布式文件系统的核心,架构中的主角色。

   NameNode维护和管理文件系统元数据,包括名称空间目录树结构、文件和块的位置信息、访  问     权限等信息。

●基于此,NameNode成为了访问HDFS的唯一入口。

NameNode内部通过内存和磁盘文件两种方式管理元数据。

·其中磁盘上的元数据文件包括Fsimage内存元数据镜像文件和edits log ( Journal)编辑日志。

在Hadoop2之前,NameNode是单点故障。Hadoop 2中引入的高可用性。Hadoop群集体系结构允许在群集中以热备配

置运行两个或多个NameNode。

HDFS 原理 详解,第6张

2 从角色:datanode

DataNode是Hadoop HDFS中的从角色,负责具体的数据块存储。

DataNode的数量决定了HDFS集群的整体数据存储能力。通过和NameNode配合维护着数据块。

HDFS 原理 详解,第7张

3 主角色辅助角色: secondarynamenode 

除了DataNode和NameNode之外,还有另一个守护进程,它称为secondary NameNode。充当NameNode的辅助节点,但不能替代NameNode。

当NameNode启动时,NameNode合并Fsimage和edits log文件以还原当前文件系统名称空间。如果edits log过大不利于加载,Secondary NameNode就辅助NameNode从NameNode下载Fsimage文件和edits log文件进行合并。 

HDFS 原理 详解,第8张

六、HDFS重要特性--主从架构

HDFS采用master/slave架构。一般一个HDFS集群是有一个Namenode和一定数目的Datanode组成。

Namenode是HDFS主节点,Datanode是HDFS从节点,两种角色各司其职,共同协调完成分布式的文件存储服务。

HDFS 原理 详解,第9张


 七、HDFS重要特性--分块存储机制

HDPS中的文件在物理上是分块存储(block )的,块的大小可以通过配置参数来规定,参数位于hdfs-default.xml中: dfs.blocksize。默认大小是128M ( 134217728 )。

  • HDFS中文件在逻辑上是连续的,提供一个文件目录树
  • block块大小计算
    1. 理想寻址时间为10ms
    2. 理想读取文件时间为寻址时间的10%
    3. 市面上磁盘的存储速率为100M/s
    4. 因此block块大小:10ms/10% *100M/s = 100M -> 128M

    HDFS 原理 详解,第10张

    八、HDFS重要特性--副本机制

      1 文件的所有block都会有副本。每个文件的block大小 ( dfs.blocksize )和副本系数( dfs.replication )都是可配置的。副本系数可以在文件创建的时候指定,也可以在之后通过命令改变。

      2 默认dfs.replication的值是3,也就是会额外再复制2份,连同本身总共3份副本。

    HDFS 原理 详解,第11张

    九、HDFS重要特性--namespace

    1 HDFS支持传统的层次型文件组织结构。用户可以创建目录,然后将文件保存在这些目录里。文件系统名字空间的层次结构和大多数现有的文件系统类似∶用户可以创建、删除、移动或重命名文件。

    2 Namenpde负责维护文件系统的namespace名称空间,任何对文件系统名称空间或属性的修改都将被Namenode记录下来。

    3 HDFS会给客户端提供一个统一的抽象目录树,客户端通过路径来访问文件,形如: hdfs://namenode :port/dir-a/dir-b/dir-c/file.data。

    HDFS 原理 详解,第12张

    十、HDFS重要特性--元数据管理

    在HDFS中,Namenode管理的元数据具有两种类型︰

    ●文件自身属性信息

    文件名称、权限,修改时间,文件大小,复制因子,数据块大小。

    HDFS 原理 详解,第13张

    ●文件块位置映射信息

    记录文件块和DataNode之间的映射信息,即哪个块位于哪个节点上。

    HDFS 原理 详解,第14张

    十一 、HDFS重要特性--数据块存储

    ·文件的各个block的具体存储管理由DataNode节点承担。每一个block都可以在多个DataNode上存储。

    HDFS 原理 详解,第15张

    十二 、 HDFS读流程和写流程

     一  HDFS 读原理

    1、HDFS客户端提交读操作到NameNode上,NameNode收到客户端提交的请求后,会先判断此客户端在此目录下是否有读权限,如果有,则给客户端返回存放数据块的节点信息,即告诉客户端可以到相关的DataNode节点下去读取数据块;

    2、客户端拿到块位置信息后,会去和相关的DataNode直接构建读取通道,读取数据块,当所有数据块都读取完成后关闭通道,并给NameNode返回状态信息,告诉NameNode已经读取完毕。

    HDFS 原理 详解,第16张

     二  HDFS写原理

    1、HDFS客户端提交写操作到NameNode上,NameNode收到客户端提交的请求后,会先判断此客户端在此目录下是否有写权限,如果有,然后进行查看,看哪几个DataNode适合存放,再给客户端返回存放数据块的节点信息,即告诉客户端可以把文件存放到相关的DataNode节点下;

    2、客户端拿到数据存放节点位置信息后,会和对应的DataNode节点进行直接交互,进行数据写入,由于数据块具有副本replication,在数据写入时采用的方式是先写第一个副本,写完后再从第一个副本的节点将数据拷贝到其它节点,依次类推,直到所有副本都写完了,才算数据成功写入到HDFS上,副本写入采用的是串行,每个副本写的过程中都会逐级向上反馈写进度,以保证实时知道副本的写入情况;

    3、随着所有副本写完后,客户端会收到数据节点反馈回来的一个成功状态,成功结束后,关闭与数据节点交互的通道,并反馈状态给NameNode,告诉NameNode文件已成功写入到对应的DataNode。

    HDFS 原理 详解,第17张

    十三 、 HDFS小文件处理

     

    (1)会有什么影响

    (1)存储层面:

    1个文件块,占用namenode多大内存150字节

    1亿个小文件*150字节

    1个文件块 * 150字节

    128G能存储多少文件块?   128 * 1024*1024*1024byte/150字节 = 9亿文件块

    (2)计算层面:

    每个小文件都会起到一个MapTask,占用了大量计算资源

    2)怎么解决

    (1)采用har归档方式,将小文件归档。将多个小文件打包成一个后缀为.har文件,这样减少namenode内存使用的同时,仍然允许对文件进行透明的访问。

    (2)采用CombineTextInputFormat。可以将多个小文件从逻辑上规划到一个切片中,这样,多个小文件就可以交给一个 maptask。

    (3)有小文件场景开启JVM重用;如果没有小文件,不要开启JVM重用,因为会一直占用使用到的task卡槽,直到任务完成才释放。

    JVM重用可以使得JVM实例在同一个job中重新使用N次,N的值可以在Hadoop的mapred-site.xml文件中进行配置。通常在10-20之间

    
        mapreduce.job.jvm.numtasks
        10
        How many tasks to run per jvm,if set to -1 ,there is  no limit
       

     十四  、安全模式 

    1 安全模式是HDFS所处的一种特殊状态,在这种状态下,文件系统只接受读数据请求,而不接受创建、删除、修改等变更请求。同时会对数据块进行大量校验,导致资源的分配和申请耗时远超预期。

    2  在NameNode主节点启动时,HDFS首先进入安全模式,DataNode在启动的时候会向namenode汇报可用的block等状态,当整个系统达到安全标准时,HDFS自动离开安全模式。如果HDFS处于安全模式下,则文件block不能进行任何的副本复制操作,hdfs集群刚启动的时候,默认30S钟的时间是出于安全期的,只有过了30S之后,集群脱离了安全期,然后才可以对集群进行操作

    总结

    提示:这里对文章进行总结:

    例如:以上就是今天要讲的内容,本文仅仅简单介绍了HDFS的原理,而HDFS为我们提供了大数据的海量存储 方便我们处理海量数据

网友评论

搜索
最新文章
热门文章
热门标签