数仓:解读 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登录堡垒机直接连服务器进行操作的),特此记录一下. - ...
随机推荐
- 使用 ASP.NET Core 3.1 的微服务开发指南
使用 ASP.NET Core 3.1 的微服务 – 终极详细指南 https://procodeguide.com/programming/microservices-asp-net-core/ A ...
- IM服务器:我的千万级在线聊天服务器集群
一.服务器特点 01.傻瓜式部署,一键式启动: 02.单机支持10万以上在线用户聊天(8G内存,如果内存足够大,并发量可超过10万): 03.支持服务器集群,集群间高内聚.低耦合,可动态横向扩展IM服 ...
- NOIP模拟88(多校21)
前言 对于这套题的总体感觉就是难,然后就是自己很菜... 对于 T1 考试时只会一个最垃圾的背包,考完之后对于思路这一块也不是很顺利,大概这就是薄弱的地方吧. 然后 T2 是比较简单的一道题了,但是考 ...
- 如何抓取直播源及视频URL地址-疯狂URL(教程)
直播源介绍 首先,我们来快速了解一下什么是直播源,所谓的直播源,其实就说推流地址,推流地址可能你也不知道是什么,那么我再简单说一下,推流地址就是,当某个直播开播的时候,需要将自己的直播状态实时的展示给 ...
- ELK集群之logstash(5)
Logstash工作原理 Logstash事件处理有三个阶段:inputs → filters → outputs.是一个接收,处理,转发日志的工具.支持系统日志,webserver日志,错误日志 ...
- VMware vSphere中三种磁盘:精简置备/厚置备置零/厚置备延迟置零
VMware磁盘格式分类. 厚置备延迟置零.厚置备置零和精简置备1.厚置备延迟置零(zeroed thick) 以默认的厚格式创建虚拟磁盘.创建过程中为虚拟磁盘分配所需空间.创建时不会擦除物理设备上保 ...
- msfsploit框架的使用——ms17_010漏洞的利用
开门见山,首先输入msfconsole打开msf控制台 全球最牛逼的渗透测试框架就是长这个样子(每次打开时,显示的图案都不一样) 然后搜索ms17_010的相关模块,得到了六条结果,我们需要用的是编号 ...
- 子查询之 exists 和 in
exists exists用于检查一个子查询是否至少会返回一行数据(即检测行的存在),返回值为boolean型,true或false 语法 exists subquery /* 参数: subquer ...
- webpack 打包html文件
webpack 打包html文件 webpack.config.js配置文件内容为: /** * loader: 1. 下载 2. 使用(配置) * plugins:1. 下载 2. 引入 3.使用 ...
- cwRsync 实现两台服务器Windows Server 2012 R2间的文件同步(备份)
sync下载链接:https://pan.baidu.com/s/1aZeGDA5bU9f1h6nxvVJsDw 提取码:jtv3 1.配置IP地址 Server端:192.167.1.2(自定义) ...