HDFS中的checkpoint( 检查点 )的问题
1、问题的描述
由于某种原因,需要在原来已经部署了Cloudera CDH集群上重新部署,重新部署之后,启动集群,由于Cloudera Manager 会默认设置dfs.namenode.checkpoint.period和dfs.namenode.checkpoint.txns分别是1个小时和1000000。只要达到这两个条件之一,secondarynamenode会执行checkpoint操作,此时会出现如下的问题:
ERROR:The health test result for NAME_NODE_HA_CHECKPOINT_AGE has become bad: The filesystem checkpoint is 4 hour(s) old. This is 401.25% of the configured checkpoint period of 1 hour(s). Critical threshold: 400.00%. 2,793 transactions have occurred since the last filesystem checkpoint. This is 0.28% of the configured checkpoint transaction target of 1,000,000.
经过初步分析,是由于secondarynamenode没有执行checkpoint的原因所导致,于是就查看了一下secondarynamenode的日志,发现真正的错误是:
ERROR: Exception in doCheckpoint java.io.IOException: Inconsistent checkpoint field
此时,说明查看个角色运行的日志很重要的,能够很精确的定位错误所在。
那么这两个问题的联系是什么呢?主要是secondarynamenode没有执行检查点的操作,导致会产生上面的错误,上面的错误说明的是你一直没有执行检查点的操作。下面的错误说明的是执行检查点操作失败,不执行。
2、问题的解决前的知识储备
在解决问题之前首先需要介绍一下检查点的作用及重要性。
(1)检查点
何为检查点:检查点是给secondarynamenode设置的,通过设置hdfs-site.xml中参数dfs.namenode.checkpoint.period和dfs.namenode.checkpoint.txns 来触发,只要达到这两个条件之一就可以出发secondarynamenode执行检查点的操作。
(2)检查点的的内容:
secondarynamenode执行检查点的内容是首先从namenode中读取Fsimage,并执行namenode中editslog文件中的操作,并最终生成一个新的FSimage文件,并将这个文件上传给Namenode。注意 :在这个过程中,如果editlog没有任何的记录的话,达到了检查点的条件后,也由于没有发生任何改变,因此不执行检查点操作。
(3)检查点的作用:
secondarynamenode执行这个检查点的操作,可以减少namenode的启动时间。
3、问题的解决方法
通过真正的错误的描述,发现主要是版本不匹配,说明在重新安装CDH的时候,保留了以前版本的CDH的数据,导致不一致的版本问题,所以导致secondarynamenode不执行检查点的操作。那么解决办法就是删除之前的数据,所以通过删除secondarynamenode执行检查点是的目录,即hdfs-site.xml中参数fs.checkpoint.dir, dfs.namenode.checkpoint.dir的值的路径。
删除之后,重新启动集群即可。
HDFS中的checkpoint( 检查点 )的问题的更多相关文章
- SparkStreaming之checkpoint检查点
一.简介 流应用程序必须保证7*24全天候运行,因此必须能够适应与程序逻辑无关的故障[例如:系统故障.JVM崩溃等].为了实现这一点,SparkStreaming需要将足够的信息保存到容错存储系统中, ...
- 关于oracle的缓冲区机制与HDFS中的edit logs的某些关联性的思考
可能大家会问,oracle和HDFS属于不同场景的存储系统,它们之间为什么会有联系呢?确实,从技术本身来看,他们确实无关联,但利用“整体学习”的思想,跳出技术本身,可以发现Oracle的缓冲区和HDF ...
- spark读取 kafka nginx网站日志消息 并写入HDFS中(转)
原文链接:spark读取 kafka nginx网站日志消息 并写入HDFS中 spark 版本为1.0 kafka 版本为0.8 首先来看看kafka的架构图 详细了解请参考官方 我这边有三台机器用 ...
- HDFS中NameNode管理元数据机制
NameNode职责 响应客户端请求 维护目录树 管理元数据(查询,修改) HDFS元数据存储 内存中有一份完整的元数据(特定数据结构) 磁盘有一个“准完整”的元数据的镜像文件 当客户端对HDFS中的 ...
- flink---实时项目----day03---1.练习讲解(全局参数,数据以parquet格式写入hdfs中) 2 异步查询 3 BroadcastState
1 练习讲解(此处自己没跑通,以后debug) 题目见flink---实时项目---day02 kafka中的数据,见day02的文档 GeoUtils package cn._51doit.flin ...
- [转]HDFS中JAVA API的使用
HDFS是一个分布式文件系统,既然是文件系统,就可以对其文件进行操作,比如说新建文件.删除文件.读取文件内容等操作.下面记录一下使用JAVA API对HDFS中的文件进行操作的过程. 对分HDFS中的 ...
- HDFS中JAVA API的使用
HDFS中JAVA API的使用 HDFS是一个分布式文件系统,既然是文件系统,就可以对其文件进行操作,比如说新建文件.删除文件.读取文件内容等操作.下面记录一下使用JAVA API对HDFS中的 ...
- spark streaming中使用checkpoint
从官方的Programming Guides中看到的 我理解streaming中的checkpoint有两种,一种指的是metadata的checkpoint,用于恢复你的streaming:一种是r ...
- 【Hadoop学习】HDFS中的集中化缓存管理
Hadoop版本:2.6.0 本文系从官方文档翻译而来,转载请尊重译者的工作,注明以下链接: http://www.cnblogs.com/zhangningbo/p/4146398.html 概述 ...
随机推荐
- Bash:-变量替换后利用大括号获取数字存在的间隔
比如脚本输入位置变量:1_5 输出效果为: 1 2 3 4 5 脚本代码如下: #!/bin/bash i=1_5 for j in $(eval echo {${i/_/\..}});do echo ...
- 使用Android studio 出现的问题解决
问题一.安装过程中出现的报错Failed to install Intel HAXM 解决:重启电脑,启动BIOS,我的是惠普的,开机时按F10就进去了 切换到Configuration选项,将设置I ...
- LINK : fatal error LNK1104: 无法打开文件“LIBCD.lib”
出现这类问题一般是由于所运行的项目是VC6(或者vs2003)创建的,而后又用VS2005或者更高版本工具打开项目导致的,原因都是因为LIBCD.lib文件被更改了.要解决问题的话,只要在链接设置那里 ...
- if 语句运用
运用if语句完成对年.月.日的判断. Console.WriteLine("其输入年份:"); int a = int.Parse(Console.ReadLine()); Con ...
- U3D使anim,unity,prefab文件不显示乱码
Edit-Project Setting-Editor-Asset Serialization-mode Force Text
- 使用HttpClient发送数据 到WebApi
发送和JSON数据 /=============================webAPI接受POST的JOSN数据=============================/ POST api/& ...
- javscript 中的术语和俚语
语言中俚语和方言.在JavaScript中也有一些俚语或者说是术语,看似奇淫巧技,还是有一些用处,有三种语言组件可以来构造术语:强转.逻辑运算符和位变换. 1.强转:在javascript和大部分的语 ...
- 【Spring】Junit加载Spring容器作单元测试
如果我们需要对我们的Service方法作单元测试,恰好又是用Spring作为IOC容器的,我们可以这么配置Junit加载Spring容器,方便做单元测试. > 基本的搭建 (1)引入所需的包 & ...
- jsp表格数据导出到Execl
1.关于“下载” 需要设置页面header的一个属性为:Content-Disposition: attachment; filename=下载的文件.txt 如: <a href=" ...
- [java基础]循环结构1
[java基础]循环结构1 循环结构:for循环,while循环,do_while循环在,增强型for循环 /** 文件路径:G:\JavaByHands\循环语句\ 文件名称:WhileTest.j ...