数仓:解读 NameNode 的 edits 和 fsimage 文件内容
一、edits 文件
一)文件组成
- 一个edits文件记录了一次写文件的过程,该过程被分解成多个部分进行记录;(每条记录在hdfs中有一个编号)
- 每一个部分为: '<RECORD>...</RECORD>' ;
- 每一部分包含了:'<OPCODE> ... </OPCODE>' 和 '<DATA> ... </DATA>' 两部分内容;
二)文件内容理解
1. 文件首: <OPCODE>OP_START_LOG_SEGMENT</OPCODE>
- <RECORD> 
 <OPCODE>OP_START_LOG_SEGMENT</OPCODE> --- 表示对一次写操作记录的开始
 <DATA>
 <TXID>138</TXID> ---------- HDFS的第138号记录
 </DATA>
 </RECORD>
2. 文件的元数据: <OPCODE>OP_ADD</OPCODE>
# a.xml._COPYING_: 写入 'a.xml' 文件的过程中,会先将文件写到该临时文件中,最后再将该文件重命名后存放到DN;
- <RECORD> 
 <OPCODE>OP_ADD</OPCODE> ------------- 写文件操作
 <DATA>
 <TXID>139</TXID> ---------------- HDFS的第139号记录
 <LENGTH>0</LENGTH>
 <INODEID>16416</INODEID>
 <PATH>/a.xml._COPYING_</PATH> --- 写'a.xml'文件的过程中生成临时文件'a.xml._COPYING'
 <REPLICATION>3</REPLICATION> --- 副本数
 <MTIME>1603341874966</MTIME> --- 创建时间
 <ATIME>1603341874966</ATIME> --- 修改时间
 <BLOCKSIZE>134217728</BLOCKSIZE> --- 文件块的大小:128M
 <CLIENT_NAME>DFSClient_NONMAPREDUCE_-1327338057_1</CLIENT_NAME> ---- 来源哪个客户端
 <CLIENT_MACHINE>192.168.26.101</CLIENT_MACHINE> --------------- 通过哪个机器上传的
 <OVERWRITE>true</OVERWRITE> --------------- 是否允许被覆盖
 <PERMISSION_STATUS> ---------- 权限信息
 <USERNAME>heyc</USERNAME> ---------- 所属主
 <GROUPNAME>supergroup</GROUPNAME> ---------- 所属组
 <MODE>420</MODE> ---------- 权限大小(777最大)
 </PERMISSION_STATUS>
 <RPC_CLIENTID>3299ce83-ba14-4468-8cf8-b5edb5dea153</RPC_CLIENTID> ---- 集群ID
 <RPC_CALLID>3</RPC_CALLID>
 </DATA>
 </RECORD>
3. 定义块id:<OPCODE>OP_ALLOCATE_BLOCK_ID</OPCODE>
- <RECORD> 
 <OPCODE>OP_ALLOCATE_BLOCK_ID</OPCODE> ---- 表示该步为记录 “定义块ID”
 <DATA>
 <TXID>140</TXID> ---- HDFS的第140号记录
 <BLOCK_ID>1073741835</BLOCK_ID> ----- 块ID
 </DATA>
 </RECORD>
4. 为块生成一个时间戳:<OPCODE>OP_SET_GENSTAMP_V2</OPCODE>
- <RECORD> 
 <OPCODE>OP_SET_GENSTAMP_V2</OPCODE>
 <DATA>
 <TXID>141</TXID>
 <GENSTAMPV2>1012</GENSTAMPV2>
 </DATA>
 </RECORD>
5. 添加块: <OPCODE>OP_ADD_BLOCK</OPCODE>
- <RECORD> 
 <OPCODE>OP_ADD_BLOCK</OPCODE>
 <DATA>
 <TXID>142</TXID>
 <PATH>/a.xml._COPYING_</PATH>
 <BLOCK>
 <BLOCK_ID>1073741835</BLOCK_ID>
 <NUM_BYTES>0</NUM_BYTES>
 <GENSTAMP>1012</GENSTAMP>
 </BLOCK>
 <RPC_CLIENTID></RPC_CLIENTID>
 <RPC_CALLID>-2</RPC_CALLID>
 </DATA>
 </RECORD>
6. 封闭文件: <OPCODE>OP_CLOSE</OPCODE>
- <RECORD> 
 <OPCODE>OP_CLOSE</OPCODE>
 <DATA>
 <TXID>143</TXID>
 <LENGTH>0</LENGTH>
 <INODEID>0</INODEID>
 <PATH>/a.xml._COPYING_</PATH>
 <REPLICATION>3</REPLICATION>
 <MTIME>1603341875516</MTIME>
 <ATIME>1603341874966</ATIME>
 <BLOCKSIZE>134217728</BLOCKSIZE>
 <CLIENT_NAME></CLIENT_NAME>
 <CLIENT_MACHINE></CLIENT_MACHINE>
 <OVERWRITE>false</OVERWRITE>
 <BLOCK>
 <BLOCK_ID>1073741835</BLOCK_ID>
 <NUM_BYTES>313</NUM_BYTES>
 <GENSTAMP>1012</GENSTAMP>
 </BLOCK>
 <PERMISSION_STATUS>
 <USERNAME>heyc</USERNAME>
 <GROUPNAME>supergroup</GROUPNAME>
 <MODE>420</MODE>
 </PERMISSION_STATUS>
 </DATA>
 </RECORD>
7. 重命名临时文件 'a.xml._COPYING_' 为 'a.xml': <OPCODE>OP_RENAME_OLD</OPCODE>
- <RECORD> 
 <OPCODE>OP_RENAME_OLD</OPCODE>
 <DATA>
 <TXID>144</TXID>
 <LENGTH>0</LENGTH>
 <SRC>/a.xml._COPYING_</SRC>
 <DST>/a.xml</DST>
 <TIMESTAMP>1603341875552</TIMESTAMP>
 <RPC_CLIENTID>3299ce83-ba14-4468-8cf8-b5edb5dea153</RPC_CLIENTID>
 <RPC_CALLID>8</RPC_CALLID>
 </DATA>
 </RECORD>
二、fsimage 文件
1)文件组成
- fsimage 由多个 '<INodeDirectorySection> ... </INodeDirectorySection>'
- 每个 '<INodeDirectorySection> ... </INodeDirectorySection>' 中有多个 '<inode> ... </inode>'
2)文件内容理解
- <inode> 
 <id>16417</id>
 <type>FILE</type> ------ 文件类型:常规文件(如果是文件夹则为 'DIRECTORY')
 <name>b.xml</name> ----- 文件名
 <replication>3</replication> --- 副本数
 <mtime>1603342078483</mtime> --- 创建时间
 <atime>1603342078253</atime> --- 修改时间
 <perferredBlockSize>134217728</perferredBlockSize> --- 块大小
 <permission>heyc:supergroup:rw-r--r--</permission> --- 权限
 <blocks> ---- 被切成了几个块
 <block> --- 一个快
 <id>1073741836</id> ----- 块的id
 <genstamp>1013</genstamp> --- 块的时间戳
 <numBytes>313</numBytes> --- 块中存放的数据的大小(该文件只有一个块,该大小即为文件大小)
 </block>
 </blocks>
 </inode>
数仓:解读 NameNode 的 edits 和 fsimage 文件内容的更多相关文章
- HDFS源码分析之FSImage文件内容(一)总体格式
		FSImage文件是HDFS中名字节点NameNode上文件/目录元数据在特定某一时刻的持久化存储文件.它的作用不言而喻,在HA出现之前,NameNode因为各种原因宕机后,若要恢复或在其他机器上重启 ... 
- 数仓面试高频考点--解决hive小文件过多问题
		本文首发于公众号:五分钟学大数据 小文件产生原因 hive 中的小文件肯定是向 hive 表中导入数据时产生,所以先看下向 hive 中导入数据的几种方式 直接向表中插入数据 insert into ... 
- hadoop源代码解读namenode高可靠:HA;web方式查看namenode下信息;dfs/data决定datanode存储位置
		点击browserFilesystem,和命令查看结果一样 当我们查看hadoop源代码时,我们看到hdfs下的hdfs-default.xml文件信息 我们查找${hadoop.tmp.dir}这是 ... 
- Hadoop-2.4.1学习之edits和fsimage查看器
		在hadoop中edits和fsimage是两个至关关键的文件.当中edits负责保存自最新检查点后命名空间的变化.起着日志的作用,而fsimage则保存了最新的检查点信息.这个两个文件里的内容使用普 ... 
- HAWQ取代传统数仓实践(十三)——事实表技术之周期快照
		一.周期快照简介 周期快照事实表中的每行汇总了发生在某一标准周期,如一天.一周或一月的多个度量.其粒度是周期性的时间段,而不是单个事务.周期快照事实表通常包含许多数据的总计,因为任何与事实表时间范围一 ... 
- 技术专家说 | 如何基于 Spark 和 Z-Order 实现企业级离线数仓降本提效?
		[点击了解更多大数据知识] 市场的变幻,政策的完善,技术的革新--种种因素让我们面对太多的挑战,这仍需我们不断探索.克服. 今年,网易数帆将持续推出新栏目「金融专家说」「技术专家说」「产品专家说」等, ... 
- 数仓1.4 |业务数仓搭建| 拉链表| Presto
		电商业务及数据结构 SKU库存量,剩余多少SPU商品聚集的最小单位,,,这类商品的抽象,提取公共的内容 订单表:周期性状态变化(order_info) id 订单编号 total_amount 订单金 ... 
- 数仓1.1 分层| ODS& DWD层
		数仓分层 ODS:Operation Data Store原始数据 DWD(数据清洗/DWI) data warehouse detail数据明细详情,去除空值,脏数据,超过极限范围的明细解析具体表 ... 
- 在HUE中将文本格式的数据导入hive数仓中
		今天有一个需求需要将一份文档形式的hft与fdd的城市关系关系的数据导入到hive数仓中,之前没有在hue中进行这项操作(上家都是通过xshell登录堡垒机直接连服务器进行操作的),特此记录一下. - ... 
随机推荐
- Vulnhub实战-dr4g0n b4ll靶机👻
			Vulnhub实战-dr4g0n b4ll靶机 地址:http://www.vulnhub.com/entry/dr4g0n-b4ll-1,646/ 描述:这篇其实没有什么新奇的技巧,用到的提权方式就 ... 
- jquery正则表达式验证【是否带有小数、是否中文名称组成、是否全由8位数字组成、电话码格式、邮件地址】
			1 <form name="myform" action="" onsubmit="return fun1()"> 2 < ... 
- 第K个数 牛客网 程序员面试金典 C++ Python
			第K个数 牛客网 程序员面试金典 C++ Python 题目描述 有一些数的素因子只有3.5.7,请设计一个算法,找出其中的第k个数. 给定一个数int k,请返回第k个数.保证k小于等于100. 测 ... 
- 树形DP 枚举祖宗的例题
			这类题目是真的很头疼....其实这类题目的特征也很明显,叶子结点贡献答案时和其所在链的祖宗有关,也就是说要想得知其贡献必须知道他的所有祖宗的贡献,其实处理方法也不是太难,就是在dfs枚举时顺便把祖宗的 ... 
- cf16E Fish(状压DP)
			题意: N只FISH.每个回合会有一只FISH吃掉另一个FISH.直到池塘里只剩一只FISH. 给出aij:第i只FISH吃掉第J只FISH的概率. 问每一只FISH是最后存活者的概率. Input ... 
- 印象最深的一个bug——排查修复问题事件BEX引发的谷歌浏览器闪退崩溃异常
			前言 最近,我们部门负责项目运维的小王频频接到甲方的反馈,运行的项目使用谷歌浏览器登录后,每次点击处理2秒后,浏览器自动闪退崩溃.小王同学折腾了一个星期,还没找到问题的原因.甲方客户都把问题反馈给项目 ... 
- Docker 部署前后端项目
			Docker 部署前后端项目 平生不会相思,才会相思,便害相思. 简介:都是被逼的,从零开始一个Docker 部署九个微服务和三个前端项目.其中,这些服务需要用到Nacos.MySQL.Nginx.E ... 
- 攻防世界 Misc 新手练习区 give_you_flag Writeup
			攻防世界 Misc 新手练习区 give_you_flag Writeup 题目介绍 题目考点 gif图片分离 细心的P图 二维码解码 Writeup 下载附件打开,发现是一张gif图片,打开看了一下 ... 
- 经过4次优化我把python代码耗时减少95%
			背景交代 团队做大学英语四六级考试相关服务.业务中有一个care服务,购买了care服务考试不过可以全额退款,不过有一个前提是要完成care服务的任务,比如坚持背单词N天,完成指定的试卷. 在这个背景 ... 
- SpringCloud升级之路2020.0.x版-33. 实现重试、断路器以及线程隔离源码
			本系列代码地址:https://github.com/JoJoTec/spring-cloud-parent 在前面两节,我们梳理了实现 Feign 断路器以及线程隔离的思路,并说明了如何优化目前的负 ... 
