HDFS 原理 详解

Posted 不知道叫啥了……

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDFS 原理 详解相关的知识,希望对你有一定的参考价值。

前言

一、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 引擎的零拷贝技术进行文件的传输和同步

二、什么是零拷贝

      传统情况 

        

零拷贝技术:

          

什么是DMA

  DMA 将一个内存区

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

HDFS 架构剖析

         HDFS 架构整体概述

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

2 HDPS是hadop核心组件之一,作为大数据生态圈最底层的分布式存储服务而存在
3 HDPS解决的问题就是大数据如何存储,它是横跨在多台计算机上的文件存储系统并且具有高度的容销 Hdps解决的问题就是大数据如何存储,它是横跨在多台计算机上的文件存储系统并且具有高度的容销

              

     HDFS 架构图

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


2·在内部,文件分块存储,每个块根据复制因子存储在不同的从节点计算机上形成备份。
3·主节点存储和管理文件系统namespace,即有关文件块的信息,例如块位置,权限等﹔从节点存储文件的数据块。

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

5 SecondaryNameNode是主角色的辅助角色,帮助主角色进行元数据的合并。

HDFS 集群角色介绍

1.主角色: namenode

 
   NameNode是Hadoop分布式文件系统的核心,架构中的主角色。
   NameNode维护和管理文件系统元数据,包括名称空间目录树结构、文件和块的位置信息、访  问     权限等信息。

●基于此,NameNode成为了访问HDFS的唯一入口。
NameNode内部通过内存和磁盘文件两种方式管理元数据。
·其中磁盘上的元数据文件包括Fsimage内存元数据镜像文件和edits log ( Journal)编辑日志。
在Hadoop2之前,NameNode是单点故障。Hadoop 2中引入的高可用性。Hadoop群集体系结构允许在群集中以热备配
置运行两个或多个NameNode。

2 从角色:datanode


DataNode是Hadoop HDFS中的从角色,负责具体的数据块存储。
DataNode的数量决定了HDFS集群的整体数据存储能力。通过和NameNode配合维护着数据块。

3 主角色辅助角色: secondarynamenode 


除了DataNode和NameNode之外,还有另一个守护进程,它称为secondary NameNode。充当NameNode的辅助节点,但不能替代NameNode。
当NameNode启动时,NameNode合并Fsimage和edits log文件以还原当前文件系统名称空间。如果edits log过大不利于加载,Secondary NameNode就辅助NameNode从NameNode下载Fsimage文件和edits log文件进行合并。 


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


HDFS采用master/slave架构。一般一个HDFS集群是有一个Namenode和一定数目的Datanode组成。
Namenode是HDFS主节点,Datanode是HDFS从节点,两种角色各司其职,共同协调完成分布式的文件存储服务。


 七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重要特性--副本机制

  1 文件的所有block都会有副本。每个文件的block大小 ( dfs.blocksize )和副本系数( dfs.replication )都是可配置的。副本系数可以在文件创建的时候指定,也可以在之后通过命令改变。
  2 默认dfs.replication的值是3,也就是会额外再复制2份,连同本身总共3份副本。

HDFS重要特性--namespace

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

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

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

●文件自身属性信息
文件名称、权限,修改时间,文件大小,复制因子,数据块大小。

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

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


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

十二  HDFS读流程和写流程

 一  HDFS 读原理

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

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

 二  HDFS写原理

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

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

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

十三  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之间

<property>
    <name>mapreduce.job.jvm.numtasks</name>
    <value>10</value>
    <description>How many tasks to run per jvm,if set to -1 ,there is  no limit</description>
</property>   

 十四  安全模式 

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

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

总结

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

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

大数据开发面试题详解:Hadoop的运行原理

hadoop的核心思想是MapReduce,但shuffle又是MapReduce的核心。shuffle的主要工作是从Map结束到Reduce开始之间的过程。

Hadoop不仅仅是大数据技术的核心重点,还是我们面试官面试的时候经常会问道的问题,本文将详细介绍Hadoop的运行原理。

技术分享图片技术分享图片?

hadoop运行原理包括HDFS和Mapreduce两部分。

1)HDFS自动保存多个副本,移动计算。缺点是小文件存取占用namenode内存,写入只支持追加,不能随机修改。

它存储的逻辑空间称为block,文件的权限类似linux。整体架构分三种节点,NN,SNN,DN

NN 负责读写操作保存metadata(Ownership Permission blockinfo)

SNN 负责辅助NN合并fsimage和edits,减少nn启动时间

DN 负责存数据,每个数据(文件)分割成若干block,每个block默认3个副本。启动后像NN发送心跳保持联系

NN保存的metadata在hdfs启动后加载到计算机内存,除block位置信息的metadata保存在OS文件系统中的fsimage文件中,对metadata的操作日志保存在OS文件系统中的edits文件中。block位置信息是hdfs启动后由DN上报NN再加载到内存的。

HDFS的安全模式:直到NN完全加载完metadata之前的这段时间。期间不能写入文件,DN检查各个block完整性,并修复。

2)MapReduce

离线计算框架,过程分为split map shuffle reduce四个过程

架构节点有:Jobtracker TaskTracker

Split将文件分割,传输到mapper,mapper接收KV形式的数据,经过处理,再传到shuffle过程。

Shuffle先进行HashPartition或者自定义的partition,会有数据倾斜和reduce的负载均衡问题;再进行排序,默认按字典排序;为减少mapper输出数据,再根据key进行合并,相同key的数据value会被合并;最后分组形成(key,value{})形式的数据,输出到下一阶段

Reduce输入的数据就变成了,key+迭代器形式的数据,再进行处理。

以上是对大数据技术面试题的详细解析,当然了,既然是面试题不可能只有一道,小编还在积极预测备选中,针对大数据技术的重点内容进行详细讲解和阶段测试,让同学们真正掌握大数据技术,通过一周一小测,一个月一大测的培训原则,给学生外界的学习推力。更多精彩,欢迎持续关注~

以上是关于HDFS 原理 详解的主要内容,如果未能解决你的问题,请参考以下文章

图文详解HDFS基本原理

大数据开发面试题详解:Hadoop的运行原理

图文详解HDFS工作机制

2021年 全网最细大数据学习笔记:Hadoop 之 HDFS 进程详解

Hadoop之详解HDFS架构

hadoop---hdfs详解