HDFS元数据管理实战篇

           HDFS元数据管理实战篇
node

                                   做者:尹正杰ide

版权声明:原创做品,谢绝转载!不然将追究法律责任。工具

 

 

 

一.HDFS元数据概述oop

1>.什么是HDFS元数据fetch

  NameNode的主要工做是存储HDFS命名空间,HDFS元数据(或HDFS命名空间)是由inode(其存储属性,如权限,修改,访问时间和磁盘空间配额)表示的文件和目录的层次结构。命名空间还包括文件到块ID的映射关系。

  NameNode存储HDFS元数据,而DataNode存储实际的HDFS数据。当客户端链接到Hadoop读取和写入数据时,它们首先链接到NameNode,从而直到实际数据块存储在哪里或往哪一个DataNode写入其数据。。

  HDFS元数据包括如下信息:
    (1)HDFS文件位置(持久化);
    (2)HDFS文件的全部权和权限(持久化);
    (3)HDFS数据块的名称(持久化);
    (4)HDFS数据块的位置(为持久化,仅在内存中存储,该信息由集群的全部DataNodes节点汇报而来);

  舒适提示:
    除了上面的第4条,元数据文件fsimage包括以上列出的全部元数据。

2>.检查点优化

  NameNode维护命名空间树,以及将数据块映射到集群中的DataNode。inode和块列表一块儿定义命名空间的元数据,称为映像(fsimage)。

  NameNode将整个映像存储在其内存中,并在NameNode文件系统上存储该映像的记录。命名空间的这个持久记录称为检查点。

  NameNode将对HDFS文件系统的更改写入日志,命名为编辑日志。很重要的一点是,仅当NameNode启动,用户请求或者辅助节点或Standby NameNode建立新的检查点时才会改变检查点,不然NameNode在运行时不会改变它的检查点。

  当NameNode启动时,它会从磁盘上的检查点初始化命名空间映像,并重播日志中的全部更改。在开始为客户端提供服务以前,他会建立一个新的检查点(fsimage文件)和一个空编辑日志文件。

  舒适提示:
    fsimage文件包含存储在DataNode上的数据块和HDFS文件之间的映射信息。若是这个文件丢失或损坏,则存储在DataNode上的HDFS数据没法被访问,好像全部的数据已经消失了!

3>.fsimage和编辑日志spa

  当客户端将数据写入HDFS时,写操做会更改HDFS元数据,固然,这些更改将由NameNode记录到编辑日志中。同时,NameNode还将更新其元数据的内存。

  每一个客户端事务由NameNode记录在预写日志中,NameNode在向客户端发送确认以前刷新并同步编辑日志。

  NameNode处理来自集群中多个客户端的请求,所以为了优化将这些事务保存到磁盘的过程,它批处理多个客户端事务。

 

二.下载最新的fsimage文件日志

1>.fsimage和编辑日志的存储位置code

  fsimage和编辑日志时与HDFS元数据相关联的两个关键结构。NameNode将这了两个结构存储在由hdfs-site.xml文件中的配置参数"dfs.namenode.name.dir"(映像文件)和"dfs.namenode.edits.dir"(编辑文件)指定的存储路径。

  以下图所示,是咱们上面提到的两个参数指定的目录内容。

  舒适提示:
    Secondary NameNode(或Standby NameNode)具备相同的文件结构。
    另外须要注意的是,编辑日志由多个编辑段组成的,每一个段都是以"edits_*"开头的文件;fsimage文件固然以"fsimage_*"开头。

2>.下载最新的映像(fsimage)文件xml

[root@hadoop105.yinzhengjie.com ~]# hdfs dfsadmin -help fetchImage 
-fetchImage <local directory>:
    Downloads the most recent fsimage from the Name Node and saves it in    the specified local directory.

[root@hadoop105.yinzhengjie.com ~]# 
[root@hadoop105.yinzhengjie.com ~]# hdfs dfsadmin -help fetchImage
[root@hadoop105.yinzhengjie.com ~]# ll
total 0
[root@hadoop105.yinzhengjie.com ~]# 
[root@hadoop105.yinzhengjie.com ~]# hdfs dfsadmin -fetchImage ./          #下载最新的映像文件到当前目录
20/09/02 00:54:34 INFO namenode.TransferFsImage: Opening connection to http://hadoop101.yinzhengjie.com:50070/imagetransfer?getimage=1&txid=latest
20/09/02 00:54:34 INFO common.Util: Combined time for fsimage download and fsync to all disks took 0.00s. The fsimage download took 0.00s at 3000.00 KB/s. Synchronous (fsync) write to disk of /root/./fsimage_0000000000000004419 took 0.00s.
[root@hadoop105.yinzhengjie.com ~]# 
[root@hadoop105.yinzhengjie.com ~]# 
[root@hadoop105.yinzhengjie.com ~]# ll
total 4
-rw-r--r-- 1 root root 3731 Sep  2 00:54 fsimage_0000000000000004419
[root@hadoop105.yinzhengjie.com ~]# 
[root@hadoop105.yinzhengjie.com ~]# hdfs dfsadmin -fetchImage ./          #下载最新的映像文件到当前目录

3>.舒适提示

  NameNode仅存储文件系统元数据,例如磁盘上fsimage文件中的文件,块,目录和权限信息,它将实际块位置信息保留在内存中。

  当客户端读取数据时,NmaeNode会高速客户端文件块所在位置。在这一点上,客户端不须要进一步与NameNode进行关于数据自己传送的通讯。

  因为NameNode元数据具备的关键性质,所以应配置多个目录做为dfs.namenode.name.dir配置参数的值。在理想状况下,推荐使用NFS设备挂载点,这样作的目的是能够保证数据的冗余性。

 

三.离线映像查看器

 

1>.如何查看映像文件的内容呢?

  下载映像文件后, 如何查看其内容呢?以下图所示,下载的映像文件其是一个二进制文件,咱们不能使用文本工具去查看相应的内容(若是您强行这样作,根本得不到该文件存储的正确信息,以下图所示)。

  能够使用离线映像查看器(oiv)查看fsimage文件的内容,从而了解集群的命名空间。此工具将fsimage文件的内容转换为人类可读的格式,并容许经过只读WebHDFS API检查HDFS的命名空间。

  生产环境中fsimage文件通常都至关大(若是您的集群数据量在刚刚达到PB级别,那么映像文件一般都能达到GB的容量),OIV能够帮助您快速处理文件的内容。正如其名,它能够离线帮我们查看映像文件。

  舒适提示:
    上面咱们提到了如何下载映像文件,细心的小伙伴估计已经发现了,若是你能够直接登陆到NameNode节点,压根就无需下载映像文件。只要到对应的存储目录拷贝一份便可,千万别试图去修改它!(若是你之意要这样作,修改前最好作好备份哟~)
 

 

2>.

 

3>.

相关文章
相关标签/搜索