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的值的路径。

  删除之后,重新启动集群即可。

时间: 2024-11-06 08:35:51

HDFS中的checkpoint( 检查点 )的问题的相关文章

HDFS中的命令行

HDFS中的命令行 本文介绍了HDFS以命令行执行的时候.几个经常使用的命令行的作用和怎样使用~ 1. fs fs是启动命令行动作,该命令用于提供一系列子命令. 使用形式为hadoop fs –cmd <args> 当中,cmd是子命令,args是详细的命令操作. 比如hadoop fs –help 或者说fs是其余子命令的父亲.其余都是在"-cmd"的模式下的! 2. –cat 输出 hadoop fs –cat URI 将路径指定的文件输出到屏幕 3. –copyFro

HBase结合MapReduce批量导入(HDFS中的数据导入到HBase)

HBase结合MapReduce批量导入 1 package hbase; 2 3 import java.text.SimpleDateFormat; 4 import java.util.Date; 5 6 import org.apache.hadoop.conf.Configuration; 7 import org.apache.hadoop.hbase.client.Put; 8 import org.apache.hadoop.hbase.mapreduce.TableOutput

hadoop学习;大数据集在HDFS中存为单个文件;安装linux下eclipse出错解决;查看.class文件插件

sudo apt-get install eclipse 安装后打开eclipse,提示出错 An error has occurred. See the log file /home/pengeorge/.eclipse/org.eclipse.platform_3.7.0_155965261/configuration/1342406790169.log. 查看错误日志然后解决 打开log文件,看到以下的错误 !SESSION 2012-07-16 10:46:29.992 --------

HDFS中JAVA API的使用

转自:http://www.cnblogs.com/liuling/p/2013-6-17-01.html 相关源代码:http://www.cnblogs.com/ggjucheng/archive/2013/02/19/2917020.html HDFS是一个分布式文件系统,既然是文件系统,就可以对其文件进行操作,比如说新建文件.删除文件.读取文件内容等操作.下面记录一下使用JAVA API对HDFS中的文件进行操作的过程. 对分HDFS中的文件操作主要涉及一下几个类: Configurat

Linux启动kettle及linux和windows中kettle往hdfs中写数据(3)

在xmanager中的xshell运行进入图形化界面 1 sh spoon.sh 新建一个job 1.往hdfs中写数据 1)linux中kettle往hdfs中写数据 双击hadoop copy files 运行此job 查看数据: 1)windows中kettle往hdfs中写数据 Windows中往power服务器中hdfs写数据 日志: 2016/07/28 16:21:14 - Version checker - OK 2016/07/28 16:21:57 - 数据整合工具-作业设计

mysql导入到hdfs中常见问题

mysql导入到hdfs中命令:sqoop import --connect jdbc:mysql://192.168.0.161:3306/angel --username anqi -password anqi --table test2 --fields-terminated-by '\t' -m 1 常见问题1:Warning: /opt/cloudera/parcels/CDH-5.12.0-1.cdh5.12.0.p0.29/bin/../lib/sqoop/../accumulo

spark streaming中使用checkpoint

从官方的Programming Guides中看到的 我理解streaming中的checkpoint有两种,一种指的是metadata的checkpoint,用于恢复你的streaming:一种是rdd的checkpoint的:下面的代码指的是第一种: // Function to create and setup a new StreamingContext def functionToCreateContext(): StreamingContext = { val ssc = new S

使用Sqoop1.4.4将MySQL数据库表中数据导入到HDFS中

问题导读:         1.--connect参数作用? 2.使用哪个参数从控制台读取数据库访问密码? 3.Sqoop将关系型数据库表中数据导入HDFS基本参数要求及命令? 4.数据默认导入HDFS文件系统中的路径? 5.--columns参数的作用? 6.--where参数的作用? 一.部分关键参数介绍 参数介绍 --connect <jdbc-uri> 指定关系型数据库JDBC连接字符串 --connection-manager <class-name> 指定数据库使用的管

HDFS中的读写数据流

1.文件的读取 在客户端执行读取操作时,客户端和HDFS交互过程以及NameNode和各DataNode之间的数据流是怎样的?下面将围绕图1进行具体讲解. 图 1 客户端从HDFS中读取数据 1)客户端通过调用FileSystem对象中的open()函数来读取它做需要的数据.FileSystem是HDFS中DistributedFileSystem的一个实例. 2)DistributedFileSystem会通过RPC协议调用NameNode来确定请求文件块所在的位置. 这里需要注意的是,Nam