`

Hadoop理论部分--HDFS文件系统祥解

阅读更多

主要提及知识点:

NameNode定义及机制,DataNode定义及机制,

Hdfs运行机制,HDFS数据存储单元(Block),

NameNode祥解,SecondaryNameNode的定义,SecondaryNameNode执行合并过程,

DataNode祥解,Block的副本放置策略,HDFS读数据流程,HDFS写数据流程,安全模式

 

NameNode 

存储"元数据" ps:如文件名称/文件大小/文件可执行权限等

元数据保存在内存中 持久化在磁盘上 加电后读入内存待用

保存文件,文件存储单元block,datanode之间的映射关系

 

DataNode

存储文件内容持久化于磁盘

维护Bolockid到datanode本地文件的映射关系

 

Hdfs运行机制

一般来说整个HDFS拥有一个名字节点(即NameNode,存储文件元数据)和多个数据节点(即DataNode,存储文件内容).

 

DataNode中的机制

1.数据复制机制(冗余机制)

2.故障检测机制(心跳包-检测是否宕机、块报告-安全模式下检测、数据完整性检测-校验和比较)

 

NameNode中的机制

1.日志文件、镜像文件 

空间回收机制

 

HDFS数据存储单元(Block)

Block默认数据块大小为64MN,若不足64MB按照64MB占用。ps:仅是逻辑接口,不是实际占用大小。

一个文件的存储方式:按照大小被切分为若干个block,存储到不同节点上,默认情况下每个block都有三个副本。

Block大小和副本数通过client端上传文件时设置,文件上传成功后副本数可以更改,但是Block size不可变更。

如果发生某个机器A宕机,HDFS系统中实际的副本数小于设置的副本数(即blockA在此机器A上的副本丢失),那么HDFS将会从如机器B自动复制一份正常的blockA到另一台空闲的机器C上。

 

NameNode祥解

主要功能:接受客户端的读写服务

保存的元数据信息(metadate信息):

1.文件拥有者信息owership和执行权限permissions (该类数据保存在磁盘上名为fsimage)

2.文件包含哪些块(每个块的编号) (该类数据保存在磁盘上名为fsimage)

3.Block保存在哪个DataNode(该类数据存储在内存中 不会保存在磁盘上 当HDFS系统启动时 由DataNode启动时上报至NameNode 收到后存储在内存中) 

NameNode的metadata信息在启动后会加载到内存:

1.metadata存储到磁盘文件名为"fsimage"

2.Block的位置信息不会保存到"fsimge"

3.edits文件 记录对metadata的操作日志(注:当新增文件或删除文件时并不会直接修改metadata信息及fsimage文件信息,发生时将直接记录edits文件日志,在一定时间间隔后,再根据edits记录对上述两种文件执行数据同步操作 edits文件存储在磁盘上)

工作数据都在内存上

 

SecondaryNameNode !面试会问!

SecondaryNameNode的主要工作是帮助NameNode合并editslog减少NameNode启动时间

SecondaryNameNode执行合并的时机:1或2满足则执行合并

1.根据配置文件设置的时间间隔fs.checkpoint.period 默认3600s

2.根据配置文件设置edits log大小 fs.checkpoint.size 规定edits文件的最大值默认是64MB

它不是NameNode的备份但它可以做一部分的元数据的数据备份,并不是实时备份.

一部分数据备份的意思是:仅仅备份在上一次合并时的fsimage数据,但在上一次合并之后创建的edits文件操作数据并不备份,也就是说在上一次合并后发生的文件操作数据将会被丢失.所以说只可以备份一部分数据.

在SecondaryNameNode合并后将获得一个新的fsimage,并发送给NameNode,替换原来的fsimage使文件得到刷新.

 

SecondaryNameNode执行合并过程:

Step1.将NameNode的edits和fsimage拷贝(在拷贝的同时将形成一个新的edits文件,名如edits.new)至SecondaryNameNode

Step2.然后进行merge,merge后文件名为fsimage.ckpt

Step3.merge完成后将该文件推送给NameNode

Step4.NameNode在接到合并后的文件fsimage.ckpt替换原先的fsimage.

注意:执行合并任务后的edits文件为合并任务起始时创建的edits.new文件.(合并后edits.new重命名为edits)

整体流程归纳:

用户执行一个增加或删除操作时首先刷新NameNode工作数据(在内存中),而后在执行合并时再将磁盘上的数据进行更新.

 

NameNode的作用即相当于计算机的分区表,根据数据在其中的位置去相应的DataNode寻找数据.

 

DataNode祥解

存储数据(block)

在启动DataNode线程时将会向NameNode汇报block信息

通过向NameNode发送心跳保持与其的联系(默认3s一次),如果NameNode10分钟没有收到DataNode的心跳,则认为其宕机,将会拷贝剩余正常的Block到其它的DataNode.

 

Block的副本放置策略

第一个副本:放置在上传文件的DataNode;如果是集群外提交,则随机挑选一台磁盘不太满,cpu不太忙的节点.

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

第三个副本:放置在与第二个副本相同的机架节点上.

更多副本:随机节点

 

 

HDFS读数据流程

Step1.客户端发送读请求 调用DistributedFileSystemAPI中的open()函数至NameNode

Step2.NameNode返回block locations

Step3.调用FSDataInputStreamAPI中Read()方法"并发"读取各Block中的文件信息

Step4.取回给block文件在client合并成一个文件

Step5.关闭流

 

 

HDFS写数据流程

Step1.客户端发送读请求 调用DistributedFileSystemAPI中的create()函数传入文件名,文件大小,拥有者等信息 并发送请求至NameNode

Step2.NameNode处理分析该文件存储后应切分为多少块,每个块应存储的位置(具体存在哪一个DataNode).返回给客户端

Step3.调用FSDataOutputStreamAPI中write()方法,将其中一个block写入其中一个DataNode中,仅写入一次,剩余副本由DataNode新启动的线程继续按照副本放置规则继续写入至其他DataNode,副本写入完成后将返回ack确认信息

Step4.客户端接收到ack确认信息后 发送请求至NameNode 通知此文件写入成功

Step5.关闭流

注意:block副本的产生机制,是由被写入block的datanode自己进行该block的副本复制备份,而不是由客户端写入其他剩余副本,客户端仅写入一次block

 

 

安全模式

NameNode启动时,首先将映像文件fsimage载入内存,并执行编辑日志edits中的各项操作

一旦内存中成功建立文件系统元数据的映射,则创建一个新的fsimage文件(这个操作不需要SecondayNameNode)和一个空的编辑日志

此时NameNode运行在安全模式.即NameNode的文件系统对于客户端来说是只读的.(只会显示目录,现实文件内容等.如果尝试写/删除/重命名都会失败).

再此阶段NameNode收集各个DataNode的报告,当数据块打到最小副本数以上时,会被认为是安全的,在一定billion的数据块被确认为安全后,再过若干时间,安全模式结束

当检测到副本数不足的数据块时,该块会被复制直到达到最小副本数,系统中数据块的位置并不是由NameNode维护的,而是以块列表的形式存储在DataNode中.

 

注:每一次NameNode启动时都将执行安全模式当中的所有操作,首先将进入安全模式.即初始化系统阶段.

 

 

分享到:
评论

相关推荐

    大数据--Hadoop HDFS

    大数据 Hadoop HDFS 详解

    hadoop hdfs-site配置文件详解

    hadoop hdfs-site配置文件详解

    详解Hadoop核心架构HDFS

    详解Hadoop核心架构HDFS

    hdfs-site.xml配置文件详解

    hdfs-site.xml配置文件详解,有需要的可以下载哈哈哈哈哈

    hadoop3.3.3-winutils

    Hadoop3.x在组成上没有变化Hadoop Distributed File System,简称HDFS,是一个分布式文件系统。 (1)NameNode(nn):存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、文件权限),以及每...

    hadoop hdfs配置文件详解

    hadoop的 hdfs配置文件 对文件的每项property进行中文描述 希望的家支持 过几天还会献上其他

    个人笔记_hadoop-hdfs架构详解.docx

    个人笔记_hadoop之hdfs架构详解

    Hadoop从入门到上手企业开发

    039 HDFS文件系统读写流程及HDFS API两种方式读取文件 040 详解HDFS API之FileSystem方式基本操作二 041 讲解分析Configuration和FileSystem类源代码 042 引出HDFS实际应用场景之合并文件和使用getmerge命令并查看...

    Hdfs的使用--详解

    1.hdfs简介 2.hdfs的shell常用命令 3.hdfs的系统组成介绍 4.hdfs的组成部分详解

    hadoophdfs写入文件原理详解共2页.pdf.zip

    hadoophdfs写入文件原理详解共2页.pdf.zip

    详解Hadoop核心架构HDFS+MapReduce+Hbase+Hive

    通过对Hadoop分布式计算平台最核心的分布式文件系统HDFS、MapReduce处理过程,以及数据仓库工具Hive和分布式数据库Hbase的介绍,基本涵盖了Hadoop分布式平台的所有技术核心。通过这一阶段的调研总结,从内部机理的...

    hadoop配置文件详解

    hadoop配置文件详解,core-site.xml是全局配置,hdfs-site.xml和mapred-site.xml分别是hdfs和mapred的局部配置。

    HDFS详解和配置文件

    HDFS(Hadoop Distributed File System,Hadoop分布式文件系统)是Hadoop中提供的一套用于进行分布式存储的文件系统。 HDFS本身是Doug Cutting根据Google的论文(简称为GFS)来实现的,因此早期的HDFS和GFS除了实现语言...

    Hadoop HDFS_Shell命令详解.pdf

    Hadoop HDFS_Shell命令详解

    Hadoop实战-第2版-陆嘉恒.pdf

    HDFS文件结构11. Hive详解12. HBase详解13. Mahout简介14. Pig详解15. ZooKeeper详解16. Avro详解17. Chukwa详解18. Hadoop的常用插件与开发19. Hadoop在yahoo的应用附录A: 云计算在线监测平台附录B: Hadoop安装...

    Hadoop HDFS原理分析,技术详解

    HDFS概述,HDFS客户端操作,HDFS数据流,namenode工作机制,datanode工作机制,HDFS 高可用集群配置

    Hadoop各组件详解(HDFS篇)

    1.HDFS 分布式文件存储系统 2.MapReduce 分布式离线计算框架 ​3.Yarn Hadoop资源调度器 1.HDFS HDFS的设计特点是: 1、大数据文件,非常适合上T级别的大文件或者一堆大数据文件的存储,如果文件只有几个G甚至更小...

    细细品味Hadoop集群6-10

    特别好的Hadoop教程,基本上等于手把手教了,每一步都非常详细 (第6期)_WordCount运行详解 (第7期)_Eclipse开发环境设置 (第8期)_HDFS初探之旅 (第9期)_MapReduce初级案例 (第10期)_MySQL关系数据库

    hadoop常见错误以及处理方法详解

    1、hadoop-root-datanode-master.log 中有如下错误:ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in导致datanode启动不了。原因:每次namenode format...

Global site tag (gtag.js) - Google Analytics