Hadoop HDFS中的检查点是如何工作的?我想澄清fs.checkpoint.period和fs.checkpoint.size

Hadoop HDFS中的检查点是如何工作的?我想澄清fs.checkpoint.period和fs.checkpoint.size,hadoop,mapreduce,hdfs,Hadoop,Mapreduce,Hdfs,当它这么说的时候,secondary namenode每小时检查一次(fs.checkpoint.period,以秒为单位),或者如果编辑日志已达到64 MB(fs.checkpoint.size,以字节为单位),则更快?这到底是什么意思 据我所知,编辑日志存储在本地文件磁盘中 HDFS元数据可以认为由两部分组成:基本文件系统表(存储在名为fsimage的文件中)和编辑日志,其中列出了对基本表所做的更改(存储在名为edits的文件中)。检查点是将fsimage与edits进行协调的过程,以生成新

当它这么说的时候,secondary namenode每小时检查一次(fs.checkpoint.period,以秒为单位),或者如果编辑日志已达到64 MB(fs.checkpoint.size,以字节为单位),则更快?这到底是什么意思


据我所知,编辑日志存储在本地文件磁盘中

HDFS元数据可以认为由两部分组成:基本文件系统表(存储在名为
fsimage
的文件中)和编辑日志,其中列出了对基本表所做的更改(存储在名为
edits
的文件中)。检查点是将
fsimage
edits
进行协调的过程,以生成新版本的
fsimage
。这有两个好处:更新版本的
fsimage
,以及截断的编辑日志

fs.checkpoint.period
控制触发此对账的频率
3600
意味着每小时
fsimage
都将更新一次,并截断编辑日志。Checkpiont并不便宜,因此在频繁运行它和让编辑日志增长过大之间有一个平衡点。假设集群中使用典型的文件系统,应该设置此参数以获得良好的平衡


fs.checkpoint.size
是一个大小阈值,如果通过
编辑
达到该阈值,则无论上次检查点经过多长时间,都将触发立即检查点。这是一种保险,因为编辑日志在文件系统元数据异常繁忙的写入流量下变得太大。

NameNode在HDFS中维护名称空间。所有DataNode文件元数据都存储在NameNode的editLog和fsImage中。 fsImage是给定时间的HDFS文件系统的映像,它是集群发生的所有更改的累积。 editLog包含最近的更改。 检查点是将editLog合并到fsImage的过程。此过程是资源密集型的,可能会影响NameNode上正在进行的请求

辅助NameNode为HDSF NameNode执行检查点设置。 它向NameNode发出HTTP请求,获取最新的fsImage日志,并将其与editLogs中捕获的最新更改合并。 使用合并的fsImage和editLog的主NameNode请求和次NameNode响应被截断

这是一个事件驱动的过程,在此过程中,根据以下任一条件触发事件: 1) 以秒为单位的特定时段fs.checkpoint.period 2) editLog达到特定大小fs.checkpoint.size

其中任何一个都可以在core-default.xml中配置。
应根据可用网络带宽以及指定时间内可能发生的变化的累积情况将其设置为最佳状态。

您阅读了吗?非常感谢您的回复。这解释了很多事情。但我有一个小问题。基本文件系统表是什么意思?基本文件系统表的数量是恒定的吗?如果在这个过程中创建了新的基本表,那么元数据将直接写入fsimage中,如果我没有错的话,此检查点是否由次要名称节点执行?主要名称节点不会将最新版本的
fsimage
写回磁盘,以最大限度地提高吞吐量,同时保证一致性。这项工作通常会转移到次要的namenode(您的直觉在这里是正确的),它必须从旧版本+最新的编辑日志中重新创建新的
fsimage