Hadoop之NameNode目录结构

原文地址: https://itweknow.cn/detail?id=69 ,欢迎大家访问。

为了后面能够更加熟悉的保障Hadoop集群的平稳运行,我们需要深入的了解NameNode、SecondaryNameNode(也称辅助NameNode)以及datanode等HDFS组件在磁盘上的目录结构以及运行的原理。这篇文章我们就一起来看一下NameNode的目录结构。

namenode的目录结构一览

NameNode的工作目录就是我门指定的hadoop工作目录(由hadoop.tmp.dir配置项指定,配置在core-site.xml文件内)下的dfs/name目录。

root@test:~/hadoop/tmp/dfs# tree name
name
├── current
│   ├── edits_0000000000000000001-0000000000000000002
│   ├── edits_0000000000000000003-0000000000000000003
│   ├── edits_0000000000000000004-0000000000000000005
│   ├── edits_0000000000000000006-0000000000000000006
│   ├── edits_0000000000000000007-0000000000000000008
│   ├── edits_0000000000000000009-0000000000000000010
│   ├── edits_0000000000000000011-0000000000000000012
│   ├── edits_0000000000000000013-0000000000000000014
│   ├── edits_0000000000000000015-0000000000000000016
│   ├── edits_0000000000000000017-0000000000000000018
│   ├── edits_0000000000000000019-0000000000000000020
│   ├── edits_inprogress_0000000000000000021
│   ├── fsimage_0000000000000000000
│   ├── fsimage_0000000000000000000.md5
│   ├── fsimage_0000000000000000020
│   ├── fsimage_0000000000000000020.md5
│   ├── seen_txid
│   └── VERSION
└── in_use.lock

  • edits_0000xxxx -> 编辑日志文件
  • edits_inprogress_000xxx -> 当前打开可写的编辑日志
  • fsimage_000xxx -> 文件系统镜像文件
  • VERSION -> HDFS版本信息的描述文件
  • in_use.lock -> 一个锁文件,namenode使用该文件为存储目录枷锁,避免其它namenode实例同时使用同一个存储目录的情况。

VERSION

VERSION文件中包含正在运行的HDFS的版本信息,一般情况下应该包含下面的内容:

#Wed Jan 02 07:08:58 UTC 2019
namespaceID=1447158958
clusterID=CID-67c5cf48-73da-4469-9c90-2759b2e0481c
cTime=1544608355749
storageType=NAME_NODE
blockpoolID=BP-1627059714-192.168.142.9-1544608355749
layoutVersion=-63
  • layoutVersion是一个负整数,描述HDFS持久性数据结构(也称之为布局)的版本,但是这个与Hadoop发布包的版本号无关。
  • namespaceID是文件系统命名空间的唯一标识,是在namenode首次格式化的时候创建的。
  • clusterID是将HDFS集群作为一个整体赋予的唯一标识符,对于联邦HDFS分厂中药,因为在联邦HDFS机制下一个集群由多个命名空间组成,每个命名空间由一个namenode管理。
  • blockpoolID是数据块池的唯一标识符,数据块池中包含了由一个namenode管理的命名空间中的所有文件
  • cTime属性标记了namenode存储系统的创建时间。对于刚刚格式化的文件系统这个属性值为0,在文件系统升级之后这个值就会更新到新的时间戳。
  • storageType说明该存储目录包含的是namenode的数据结构。

编辑日志和文件系统镜像

  • 编辑日志

当我们操作HDFS中的文件时,这些操作首先会被写入到编辑日志中,然后相关的文件数据也会被更新。编辑日志文件在概念上是单个实体,但是它其实是存储在磁盘上的多个文件上的,我们看到了很多的edits_000xxx就是编辑日志。但是任何一个时刻都只有一个编辑日志文件处于打开可写的状态(edits_inprogress_000xxx)。
其实这个有点类似日志滚动的概念。

  • 文件系统镜像
    每个fsimage_000xxx文件都是HDFS文件系统的一个镜像(也称之为文件系统元数据的一个完整的永久性检查点),镜像文件的大小一般都比较大,我们对HDFS中文件的操作并不会直接记录到镜像文件中,而是写入到编辑日志中,在namenode启动的时候会首先载入最近的一个镜像文件,然后再读取编辑日志中的改变,这样我们就可以将namenode恢复到上一次正常工作时的状态了。

  • 编辑日志合并到文件系统镜像

编辑日志不会是无限的增长的,集群中的SecondaryNameNode会定期为namenode内存中的文件系统元数据创建系统镜像,具体的创建过程参照下图。

编辑日志合并过程
  1. SecondaryNameNode请求NameNode停止使用当前打开的edits文件(即edits_inprogress_000xxx文件),并重新打开一个新的编辑日志文件以记录新的操作。
  2. SecondaryNameNode从NameNode中获取最近的fsimage和edits文件,使用HTTP GET方式获取。
  3. SecondaryNameNode将fsimage载入内存,然后逐一执行edits文件中记录的操作,然后创建一个新的镜像文件。
  4. SecondaryNameNode将合并后的镜像文件发送到NameNode(HTTP PUT),NameNode将其保存为一个临时文件。
  5. NameNode重新命名该临时的镜像文件,此为最新的镜像文件。

edits日志文件合并的触发条件受两个配置项的控制,dfs.namenode.checkpoint.period(单位为秒),这个配置项是从时间维度上的控制,默认情况下是每隔1个小时触发一次合并。
第二个配置项是dfs.namenode.checkpoint.txns,这个配置是从编辑日志大大小维度上进行控制的,默认是如果从上一个检查点开始编辑日志已经达到了100万个事务就合并。检查编辑日志大小的频率默认是1分钟检查一次,可由dfs.namenode.checkpoint.check.period(单位为秒)配置项来改变。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,723评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,003评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,512评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,825评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,874评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,841评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,812评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,582评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,033评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,309评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,450评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,158评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,789评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,409评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,609评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,440评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,357评论 2 352

推荐阅读更多精彩内容