上千生产节点的JournalNode下线,以及上线异常问题解决

背景: 集群规模上千节点,5台JournalNode节点,现在因为需要维修,下线其中一台JournalNode进行维修。

1.JournalNode下线

      在namenode的HA机制下,两个NameNode为了数据同步,会通过一组称作JournalNodes的独立进程进行相互通信。JournalNode属于轻量级的应用,可以同样在运行JournalNode节点上运行datanode,nodemanager等角色,不影响使用的。根据hadoop官网的描述:必须至少有3个JournalNode守护程序(配置三个JournalNode节点),因为必须将edits 日志修改写入大多数JN,防止单节点故障。当前多配几个也可以,官网介绍说:为了实际增加系统可以容忍的故障数量,您应该运行奇数个JN(即3、5、7等)。请注意,当与N个JournalNode一起运行时,系统最多可以容忍(N-1)/ 2个故障,并继续正常运行。我们集群上千个节点运行了5个JN,现在需要下线一台,也不必新增,就剩4个其实也是正常运行的。

     JournalNodes得下线比较简单,直接下线即可,停止主机角色进程。等待观察其他几个节点的负载会上升,稳定后即可。

2.JournalNode的上线与异常问题解决

     正常机器经过1个小时维修后,重新上线,启动JN的角色进程。启动上面的datanode,nodemanager等进程。发现datanode,nodemanager的角色都是正常的。但是JN角色虽然进程启动成功了,但是监控界面内显示告警,没有与namenode同步。查看后台日志后,显示报异常:java.io.FileNotFoundException: /hadoop/dfs/jn/ShareSdkHadoop/current/last-promised-epoch.tmp (No such file or directory)

上千生产节点的JournalNode下线,以及上线异常问题解决_journalnode报错

上千生产节点的JournalNode下线,以及上线异常问题解决_hdfs_02

上千生产节点的JournalNode下线,以及上线异常问题解决_journalnode报错_03

3.解决方案

        这种类似于JN下线后,重新上线的,比如更换了硬盘,存储等。重新上线后会碰到与namenode不同步的情况,这种情况会有多种报错,比如更换了新硬盘后,重启JournalNode 会出现"JournalNotFormattedException: Journal Storage Directory /data/2/dfs/jn/nameservice1 not formatted" 这样的错误,以及sync同步异常的问题,以及/hadoop/dfs/jn/ShareSdkHadoop/current/last-promised-epoch.tmp (No such file or directory)。异常问题种类很多。

      尖叫提示:但是解决的方式最简单有效的,就是进入JN的配置目录,以我们的为例如下:/hadoop/dfs/jn/ShareSdkHadoop/current

1.首先将该目录下所有的东西都清空(一般来说超多JN的掉线时间会默认上线后清空这些目录。)。如下:在该目录下in_use.lock是因为jn正在使用的锁。

上千生产节点的JournalNode下线,以及上线异常问题解决_journalnode_04

2.在current目录创建一个文件touch VERSION,在这个VERSION文件里,追加如下内容。注意这个VERSION里的内容要跟其他 active 的JN保持一致,直接从其他JN的节点里的VERSION复制过来即可。但是要注意,如果是单namenode HA的话,所有的JN的VERSION一致,如果是多namenode联邦的话,要跟同一namedenode的JN的内容保持一致。

 

#Sat Jul 18 19:25:41 CST 2020
namespaceID=25563396
clusterID=cluster24
cTime=0
storageType=JOURNAL_NODE
layoutVersion=-60

然后需要将这个VERSION文件的用户与组,以及读写权限配置和其他的JN一致如下:

上千生产节点的JournalNode下线,以及上线异常问题解决_journalnode报错_05

3.配置完以后直接重启JN,即可,等几分钟以后。就可以看到它不仅重建了如last-promised-epoch,last-write-epoch等文件,也开始同步了edits。从其监控指标看也已经恢复正常。

上千生产节点的JournalNode下线,以及上线异常问题解决_journalnode上线报错_06

上千生产节点的JournalNode下线,以及上线异常问题解决_journalnode_07

这类问题网上报错七七八八,解决方案也八八九九,比如通过复制edits等,搞起来比较麻烦,简单的方式就是直接初始化即可。

具体可以参考官网:

http://hadoop.apache.org/docs/r2.4.1/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值