前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一次误格式化引发的hdfs集群不可用

一次误格式化引发的hdfs集群不可用

原创
作者头像
EMR小助手
修改2020-10-30 16:47:24
1.5K0
修改2020-10-30 16:47:24
举报

前言

我们知道hadoop集群搭建之后,并不能马上启动集群进行使用,需要对namenode做格式化。具体执行的命令:hadoop namenode -format。namenode格式化是删除hdfs-site.xml中dfs.namenode.name.dir指定目录下已有的文件信息(包含fsimage和edit文件),然后在该目录下创建VERSION等文件。初次使用集群必须执行,但对已有数据的集群,会导致集群不可用。如若是非HA集群,会导致丢失所有数据的严重后果。

背景

用户反馈HDFS集群崩溃,namenode UI页面上看到大量的MISSING blocks,集群不可用。

问题定位

查看namenode日志,发现如下异常,journalnode的namespaceid和clusterid和主备namenode不一致,定位出有人对集群进行过格式化操作,导致集群不可用

解决方案

1、手动修改journalnode,主active的配置与备namenode保持一致,改动文件/data/emr/hdfs/journalnode/hadoop/current/VERSION。修改上述文件的namespaceID和clusterID保持和备NN一致即可(EMR集群位于NN节点/data/emr/hdfs/namenode/current/VERSION)。

2、将备namenode current目录copy到主namenode同样位置下,删除备namenode current目录下文件,重启主namenode。

3、重启journalnode,执行hdfs namenode -initializeSharedEdits命令,?将所有journal node的元文件的VERSION文件的参数修改成与主namenode的元数据相同。因edits log有较大文件,调整参数 ipc.maximum.data.length 536870912

4、在主namenode执行hdfs namenode -bootstrapStandby,?将active namenode的 {dfs.namenode.name.dir} 目录的内容复制到 standby namenode的{dfs.namenode.name.dir} 目录下,重启备namenode。

5、发现备安全模式退出缓慢,原因是namenode已经提供读写,并且DN全量块上报导致备NN压力大,监测到有DN块上报超时,所以调整namenode检测datanode健康状态超时参数dfs.namenode.heartbeat.recheck-interval 修改为300000。

DN被认定下线的标准为:超过10*心跳时间+2*dfs.namenode.heartbeat.recheck-interval时间NN未接收到DN的心跳

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 背景
  • 问题定位
  • 解决方案
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com