其他分享
首页 > 其他分享> > 3.HDFS存储系统

3.HDFS存储系统

作者:互联网

一、NameNode、SecondaryNameNode以及DataNode

  1> Namenode(NN):元数据节点  ---->  存储的是目录

一个HDFS集群只有一个活跃的NN。

NameNode被格式化之后,将在Hadoop的/data/tmp/dfs/name/current目录中产生如下文件:

fsimage_0000000000000000000
fsimage_0000000000000000000.md5
seen_txid
VERSION

  1、Edits文件:存放HDFS文件系统的所有更新操作的路径,文件系统客户端执行的所有写操作首先会被记录到Edits文件中。

  2、Fsimage文件:HDFS文件系统元数据的一个永久性的检查点,其中包含HDFS文件系统的所有目录和文件inode的序列化信息。
  3、seen_txid文件:保存的是一个数字,就是最后一个edits_的数字。
  4、每次NameNode启动的时候都会将Fsimage文件读入内存,加载Edits里面的更新操作,保证内存中的元数据信息是最新的、同步的,可以看成NameNode启动的时候就将Fsimage和Edits文件进行了合并。


  edits文件会特别多,namenode会将这些edits传给Secondarynamenode(理解为秘书),

由它来存储并合并,在将合并后的Fsimage文件传回给namenode。

 

  2> SecondaryNameNode(SNN): 从元数据节点  ---->  相当于Namenode的秘书

  接受namenode传来的edits文件按,并每隔一段时间后将他们合并压缩成一个Fsimage文件,将他传回给Namenode,Namenode需要的时候直接从这里读取就即可,没有再去读edits文件。

 

  3> DataNode(DN):数据节点  ---->  真正存储数据并进行备份的地方

保存、检索Block。接收的数据真正存储的地方。一个集群可以有多个数据节点。

 

二、读写过程

  1、HDFS副本机制:

  为避免数据丢失,创建多个数据的副本,他的存放满足以下特点:

副本默认书为3份。
一个在本地机架节点 一个在同机架不同节点 (通过机架感知) 一个在不同机架上的某一节点

 

  2、读文件

  客户端发出请求,传递给DistributedFilesystem,由他向Namenode申请,Namenode获取对应的数据所在块的位置,传递给他,他再返回给客户端;客户端通过这个位置信息,依靠FSDataInputStream去读取相应位置上的文件

 

 

  3、写文件

  客户端发出请求,传递给DistributedFilesystem,由他向Namenode申请,Namenode获取距离客户端最接近的节点位置,传递给他,他再返回给客户端;客户端通过这个位置信息,以FSDataOutputStream去在对应的节点上存储数据,存储完成后,通过机架感应,在同机架的另一个节点位置上再写(备份),这一步完成后,再去其他的任意机架上的某一节点,再去备份。这样存储的数据就有三份(副本机制)。

 

标签:HDFS,文件,存储系统,Namenode,机架,节点,客户端
来源: https://www.cnblogs.com/zyp0519/p/15246005.html