HDFS总结

来源:互联网 发布:东方不败知夫君是死神 编辑:程序博客网 时间:2024/06/08 17:42

本文以如下两个方面展开:HDFS的组成,HDFS的各组成的工作方式也就是HDFS的功能是怎样实现的

 

一、HDFS是什么

HDFS(Hadoop Distributed File System),是Apache基金会下的项目Hadoop的一个主要组成部分。Hadoop的另一个主要组成部分是MapReduce,作者受到谷歌的论文GFS的启发而设计出的一个分布式文件存储系统。它和MapReduce一起组成了Hadoop,其中,HDFS负责海量数据的存储,MapReduce负责海量数据的计算。

 

二、HDFS的组成

(1)Namenode 元数据结点

一个HDFS的Namenode只有一台,它并不真正存储数据,而是存储元数据,什么是元数据呢?简单来讲,数据是分成很多个数据块(block)存放在分布式文件系统的不同的Datanode上,而元数据就记录了这个文件在文件系统的哪些节点上,副本在哪些节点上等等的映射信息。客户端进行读写首先是通过Namenode的。

(2)Datanode 数据节点

一个HDFS通常具有很多台Datanode,它们是文件真正存放的地方。文件经过切分之后写入到多台Datanode,切分工作由客户端完成,每个文件块(block)写入成功一次之后,由Datanode通过网络继续往下分发,直到达到系统要求的副本数。假如在某个文件块拷贝过程中失败了,被拷贝文件块所在的节点收不到拷贝成功的信号,就会将情况上报给Namenode,Datanode就再安排某一个节点接收这个文件块的拷贝。

(3)Secondary Namenode 从元数据节点

从元数据节点,不是Namenode的备份。它有另外的功能,它的功能要配合Namenode的工作方式进行工作,下文将会详细叙述。

 

三、Datanode的工作方式

 

 

 

(1)客户端发出指令,要读入某个文件,通知Namenode,Namenode经过查询发现在文件系统的相同目录下还没有这个文件,同意写入。

(2)客户端将文件块写入到多个Datanode,每个文件块写入成功一次就表示写入成功了。

(3)拥有某一个文件块的节点将这个文件块向下传递,直到达到副本个数,这样就在多个机器上存有同一个文件同一个块的多个副本,这样可以提高系统的可靠性和节点的吞吐量。

 

四、Namenode的工作方式

 


(1)Namenode并不存储真实数据,而是数据在文件系统的各种信息,这种信息,也就是虚拟文件目录和文件的实际存储位置的映射关系,叫做元数据。

(2)元数据全部存在于内存,也全部存在于内存的镜像文件fsimage中,这两者的内容完全等价。

(3)客户端执行写操作的时候,并不是直接将记录写进内存,而是以日志的形式写进一个叫做edits log的文件中,这个文件固定大小64Mb。

(4)当edits log满了之后,Secondary Node会将edits log和fsimage合并成一个新的fsimage,并替换edits log。

 

五、Secondary Namenode的工作:checkkpoint操作

 

 

 

(1)edits log满了之后,Namenode发一条消息给Secondary Namenode,然后Secondary Namenode告诉Namenode停止向edits log中写入数据了,将数据写入到edits.new文件中。

(2)Secondary Namenode下载文件edits log和fimage到本机,将两者合并成一个新的文件fsimage.checkpoint,将新文件上传到Namenode。

(3)最后一步,将edits log和fsimage分别用edits.new和fsimage替换掉,原文件删除,这样就完成了edits log的更新。


0 0
原创粉丝点击