记录一次edit文件损坏导致JournalNodes Web UI无法访问排查处理过程

今天登录大数据集群例行巡检突然发现出现了两个告警
在这里插入图片描述
查看发现是一台节点的jourmalNode webUI无法访问
在这里插入图片描述
俗话说:婶婶能忍叔叔也不能忍,一句话盘他
下面记录一下这次问题排查处理的过程:

  1. 既然说是web无法访问,那就先从前端入手,老规矩复制此链接到新的浏览器窗口打开,确实是无法访问
  2. 下面远程服务器命令行执行telnet 192.168.94.26 8480 测试端口号显示端口是存活的
    shell> telnet 192.168.94.26 8480
  3. 登录这台服务命令行执行netstat -anlp |grep 8480
shell> netstat -anlp |grep 8480

在这里插入图片描述
看到很多进程以及需要调用JournalNodes的程序,我们来统计一下有多少进程执行命令netstat -anlp |grep 8480|wc -l

shell> netstat -anlp |grep 8480|wc -l

显示与端口8480有关联的程序存在进程数如下
在这里插入图片描述
4. 命令行执行jps,我们查看进程是否存在

shell> jps

发现进程是存在的
在这里插入图片描述
端口存活而且进程存在,但是没办法访问连接,无解。

  1. 排查最后一招去/var/log/hadoop/hdfs查看journalnode日志
shell> tail -n 100 hadoop-hdfs-journalnode-xxx-dev-26.log|grep ERROR
shell> tail -n 100 hadoop-hdfs-journalnode-xxx-dev-26.log|grep WARN

在这里插入图片描述

2020-03-05 10:34:13,321 WARN  namenode.FSImage (EditLogFileInputStream.java:scanEditLog(359)) - Caught exception after scanning through 0 ops from /hadoop/hdfs/journal/xxx-ha/current/edits_inprogress_0000000000004758323 while determining its valid length. Position was 1032192
java.io.IOException: Can't scan a pre-transactional edit log.
	at org.apache.hadoop.hdfs.server.namenode.FSEditLogOp$LegacyReader.scanOp(FSEditLogOp.java:4974)
	at org.apache.hadoop.hdfs.server.namenode.EditLogFileInputStream.scanNextOp(EditLogFileInputStream.java:245)
	at org.apache.hadoop.hdfs.server.namenode.EditLogFileInputStream.scanEditLog(EditLogFileInputStream.java:355)
	at org.apache.hadoop.hdfs.server.namenode.FileJournalManager$EditLogFile.scanLog(FileJournalManager.java:551)
	at org.apache.hadoop.hdfs.qjournal.server.Journal.scanStorageForLatestEdits(Journal.java:192)
	at org.apache.hadoop.hdfs.qjournal.server.Journal.<init>(Journal.java:152)
	at org.apache.hadoop.hdfs.qjournal.server.JournalNode.getOrCreateJournal(JournalNode.java:90)
	at org.apache.hadoop.hdfs.qjournal.server.JournalNode.getOrCreateJournal(JournalNode.java:99)
	at org.apache.hadoop.hdfs.qjournal.server.JournalNodeRpcServer.getEditLogManifest(JournalNodeRpcServer.java:189)
	at org.apache.hadoop.hdfs.qjournal.protocolPB.QJournalProtocolServerSideTranslatorPB.getEditLogManifest(QJournalProtocolServerSideTranslatorPB.java:224)
	at org.apache.hadoop.hdfs.qjournal.protocol.QJournalProtocolProtos$QJournalProtocolService$2.callBlockingMethod(QJournalProtocolProtos.java:25431)
	at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:640)
	at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:982)
	at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2351)
	at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2347)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:422)
	at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1866)
	at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2345)

java.io.IOException: Can’t scan a pre-transactional edit log.
划重点找到问题原因:此节点的edit文件损坏,导致的JournalNodes Web UI无法访问


Edit文件损坏通用的解决方案是:
第一种方案
此节点的journalnode的元数据出现了问题,需要从其他正常节点的journalnode的元数据拷贝过来重启服务,同时需要注意各个文件的权限
第二种方案
先停止journalnode服务
删除此节点journalnode元数据存储路径中current文件夹中version以外的文件,重新启动journalnode

此处我们按照简单粗暴高效快速第二种方案删除处理问题。
一、在Ambari Web 界面关闭此节点的JournalNodes进程
找到此节点JournalNodes 里面选择“Turn On Maintenance Mode”然后选择“Stop”执行关闭操作
二、命令行找到此节点的edits_inprogress文件所在位置
/hadoop/hdfs/journal/xxx-ha/current/
三、小心依次对edits_inprogress、last-promised-epoch、last-writer-epoch等文件以及文件夹paxos进行删除操作
四、在Ambari Web 界面开启此节点的JournalNodes进程
找到此节点JournalNodes 选择“Start”执行开启操作,然后选择“Turn On Maintenance Mode”
五、下面见证一下我们的处理结果,这界面看着是不是就很舒服了
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值