名字节点(NameNode)目录结构
2016-12-16 09:46
239 查看
本文章主要介绍名字节点元数据的存储目录结构,以及每个文件的基本内容。
我们首先了解一下transactionId的概念。当客户端没发起一次RPC请求对NameNode的名字空间进行修改后,NameNode会用一个唯一的transactionId标识。
①VERSION : 版本号、集群号、创建时间、类型等。
②edits_start ID-end ID : edits文件中存放的是客户端执行的所有更新命名空间的操作。每个edits文件都包含了文件名中start transaction id - end transaction id之间的所有事务。
③edits_inprogress__start transaction ID : 正在被追加的日志。所有从transaction id开始的新的修改操作都会被记录在此文件中,直到HDFS重置(roll)这个日志文件。
④fsimage_end transaction ID : Hadoop文件系统元数据的一个永久的检查点,包含了end transaction id之前的完整的HDFS名字空间元数据镜像。
⑤seen_txid : 保存最近一次fsimage或者edits_inprogress的transaction Id,这个Id并不是最新的事务Id。
⑥in_use.lock : 文件锁,防止一台机器同时启动多个Namenode进程导致目录数据不一致。
layoutVersion - HDFS metadata版本号,通常只有HDFS增加新特性时才会更新这个版本号。
namespaceID/clusterID/blockpoolID - 这三个ID在整个HDFS集群全局唯一,作用是引导Datanode加入同一个集群。在HDFS Federation机制下,会有多个Namenode,所以不同Namenode的namespaceID是不同的,分别管理一组blockpoolID,但是整个集群中,clusterID是唯一的,每次format namenode会生成一个新的,也可以使用-clusterid手工指定ID。
storageType - 有两种取值NAME_NODE /JOURNAL_NODE,对于JournalNode的参数dfs.journalnode.edits.dir,其下的VERSION文件显示的是JOURNAL_NODE。
Edits文件:存放HDFS文件系统的所有更新操作的路径,文件系统客户端执行的所有写操作首先会被记录到edits文件中。
fsimage和edits文件都是经过序列化的,在NameNode启动的时候,会将fsimage文件中的内容加载到内存中,之后执行edits文件中的各项操作,使得内存中的元数据和实际的同步,存在内存中的元数据支持客户端的读操作。
对于文件来说,包含的信息有修改时间、访问时间、块大小和组成一个文件块信息等。而对于目录来说,包含的信息主要有修改时间、访问控制权限等信息。fsimage并不包含DataNode的信息。
JournalNode(在高可用性模式下会出现)元数据存储路径设置core-site.xml :
一 目录结构图
NameNode 的元数据存储目录结构:二 文件基本介绍
current目录为当前集群正在使用的目录,previous目录是版本升级之前的目录。版本进行回滚的时候,previous目录就会发挥作用。我们首先了解一下transactionId的概念。当客户端没发起一次RPC请求对NameNode的名字空间进行修改后,NameNode会用一个唯一的transactionId标识。
①VERSION : 版本号、集群号、创建时间、类型等。
②edits_start ID-end ID : edits文件中存放的是客户端执行的所有更新命名空间的操作。每个edits文件都包含了文件名中start transaction id - end transaction id之间的所有事务。
③edits_inprogress__start transaction ID : 正在被追加的日志。所有从transaction id开始的新的修改操作都会被记录在此文件中,直到HDFS重置(roll)这个日志文件。
④fsimage_end transaction ID : Hadoop文件系统元数据的一个永久的检查点,包含了end transaction id之前的完整的HDFS名字空间元数据镜像。
⑤seen_txid : 保存最近一次fsimage或者edits_inprogress的transaction Id,这个Id并不是最新的事务Id。
⑥in_use.lock : 文件锁,防止一台机器同时启动多个Namenode进程导致目录数据不一致。
三 VERSION 文件详解
#Thu Dec 15 10:07:46 CST 2016 namespaceID=1277563549 clusterID=CID-a4ff16ba-4427-4f8a-bbaf-4665b3ce714b cTime=0 storageType=NAME_NODE blockpoolID=BP-1697576408-127.0.0.1-1481767666542 layoutVersion=-63
layoutVersion - HDFS metadata版本号,通常只有HDFS增加新特性时才会更新这个版本号。
namespaceID/clusterID/blockpoolID - 这三个ID在整个HDFS集群全局唯一,作用是引导Datanode加入同一个集群。在HDFS Federation机制下,会有多个Namenode,所以不同Namenode的namespaceID是不同的,分别管理一组blockpoolID,但是整个集群中,clusterID是唯一的,每次format namenode会生成一个新的,也可以使用-clusterid手工指定ID。
storageType - 有两种取值NAME_NODE /JOURNAL_NODE,对于JournalNode的参数dfs.journalnode.edits.dir,其下的VERSION文件显示的是JOURNAL_NODE。
四 Fsimage和Edits文件详解
Fsimage文件:HDFS文件系统元数据的一个永久性的检查点,其中包含HDFS文件系统的所有目录和文件idnode的序列化信息。Edits文件:存放HDFS文件系统的所有更新操作的路径,文件系统客户端执行的所有写操作首先会被记录到edits文件中。
fsimage和edits文件都是经过序列化的,在NameNode启动的时候,会将fsimage文件中的内容加载到内存中,之后执行edits文件中的各项操作,使得内存中的元数据和实际的同步,存在内存中的元数据支持客户端的读操作。
对于文件来说,包含的信息有修改时间、访问时间、块大小和组成一个文件块信息等。而对于目录来说,包含的信息主要有修改时间、访问控制权限等信息。fsimage并不包含DataNode的信息。
五 配置相关
NameNode元数据存储路径设置hdfs-site.xml:<property> <name>dfs.namenode.name.dir</name> <value>file:/home/hadoop/dfs/name</value> <final>true</final> </property>
JournalNode(在高可用性模式下会出现)元数据存储路径设置core-site.xml :
<property> <name>dfs.journalnode.edits.dir</name> <value>/path/to/journal/node/local/data</value> </property>
相关文章推荐
- 名字节点(NameNode)基本功能介绍
- 第125讲:Hadoop集群管理之SecondaryNamenode目录元数据结构详解及其内幕机制学习笔记
- 关于Tomcat的点点滴滴(体系架构、处理http请求的过程、安装和配置、目录结构、设置压缩和对中文文件名的支持、以及Catalina这个名字的由来……等)
- Hadoop源码分析之NameNode的目录构成与类继承结构
- 关于idea新建子目录时往父目录名字后叠加而不是树形结构的解决方法
- 实现对特定盘符的目录及子目录名字显示,并形成简单树状结构 ()
- hadoop之Secondary namenode目录结构
- 关于idea新建子目录时往父目录名字后叠加而不是树形结构的解决方法(转)
- Hadoop源码分析笔记(十二):名字节点--文件系统目录树
- Hadoop集群管理 Namenode的目录数据结构
- 关于idea新建子目录时往父目录名字后叠加而不是树形结构的解决方法
- handoop0.20.2:名字节点namenode的启动
- 如何删除某个目录下(包含子目录下)的某个名字的文件
- 【安装oracle——准备工作】配置内核参数+添加用户组及用户+为oracle用户配置shell限制+创建目录结构+设置oracle环境
- 【Linux学习笔记③】linux磁盘分区、文件系统及目录结构
- (转载)cocos2d-X学习之引擎源码目录结构介绍
- DNN6 目录结构
- 数据结构—链表-单链表应用-删除元素最大的节点
- linux的目录结构之etc目录
- Linux的目录结构