HDFS中的checkpoint( 检查点 )的问题

在重新部署Cloudera CDH集群后,HDFS出现checkpoint问题,导致NAME_NODE_HA_CHECKPOINT_AGE健康测试失败。错误显示检查点年龄超过4小时,且secondarynamenode在执行checkpoint时遇到'Inconsistent checkpoint field'异常。问题根源是版本不匹配,因保留了旧版本数据。解决方案是删除旧的checkpoint目录,然后重启集群。
摘要由CSDN通过智能技术生成
1、问题的描述

由于某种原因,需要在原来已经部署了Cloudera CDH集群上重新部署,重新部署之后,启动集群,由于Cloudera Manager 会默认设置dfs.namenode.checkpoint.perioddfs.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的日志,发现真正的错误是:

Flink支持将检查点存储到不同的存储系统,例如HDFS、S3、RocksDB、Kafka等。如果您要将Flink的检查点存储到自定义存储,可以通过实现CheckpointStorage接口来实现。 具体步骤如下: 1. 实现CheckpointStorage接口 ```java public class CustomCheckpointStorage implements CheckpointStorage { @Override public void initializeGlobal(int maxNumberOfCheckpointsToRetain) throws Exception { // 初始化全局检查点存储 } @Override public void initializeJob(JobID jobID) throws Exception { // 初始化作业检查点存储 } @Override public boolean supportsHighlyAvailableStorage() { // 是否支持高可用存储 return false; } @Override public CheckpointStorageLocation initializeLocationForCheckpoint(long checkpointId, CheckpointOptions checkpointOptions) throws Exception { // 初始化检查点存储位置 return null; } @Override public CheckpointStorageLocation resolveCheckpoint(String pointer) throws IOException { // 解析检查点指针 return null; } @Override public void disposeJob(JobID jobID) throws Exception { // 清理作业检查点存储 } @Override public void close() throws IOException { // 关闭检查点存储 } } ``` 2. 在Flink程序配置自定义存储 ```java StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); // 设置检查点间隔时间 env.enableCheckpointing(1000); // 配置自定义检查点存储 env.getCheckpointConfig().setCheckpointStorage(new CustomCheckpointStorage()); // 启动Flink程序 env.execute("CustomCheckpointStorageExample"); ``` 通过实现CheckpointStorage接口并在Flink程序配置,就可以将Flink的检查点存储到自定义存储
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值