【hadoop】记录一次HDFS集群自动转移故障问题排查和解决方案

一、问题情况:

  1. 今天早上收到报警,HDFS namenode 服务异常,发生了自动故障迁移。
    在这里插入图片描述

二、报错内容:

2021-10-26 07:13:56,310 INFO org.apache.hadoop.hdfs.server.namenode.FileJournalManager: Fina      lizing edits file /home/hadoop/dfs/nn/current/edits_inprogress_0000000000824809456 -> /home/      hadoop/dfs/nn/current/edits_0000000000824809456-0000000000824809550
2021-10-26 07:13:56,310 INFO org.apache.hadoop.hdfs.server.namenode.FSEditLog: Starting log       segment at 824809551
2021-10-26 07:16:30,946 INFO org.apache.hadoop.hdfs.server.blockmanagement.CacheReplicationM      onitor: Rescanning after 162713 milliseconds
2021-10-26 07:16:30,947 WARN org.apache.hadoop.hdfs.qjournal.client.QuorumJournalManager: Wa      ited 154637 ms (timeout=20000 ms) for a response for startLogSegment(824809551). No response      s yet.
2021-10-26 07:16:30,947 FATAL org.apache.hadoop.hdfs.server.namenode.FSEditLog: Error: start      ing log segment 824809551 failed for required journal (JournalAndStream(mgr=QJM to [10.11.2.      140:8485, 10.11.2.141:8485, 10.11.2.142:8485], stream=null))
java.io.IOException: Timed out waiting 20000ms for a quorum of nodes to respond.
    at org.apache.hadoop.hdfs.qjournal.client.AsyncLoggerSet.waitForWriteQuorum(AsyncLoggerS      et.java:137)
    at org.apache.hadoop.hdfs.qjournal.client.QuorumJournalManager.startLogSegment(QuorumJou      rnalManager.java:403)
    at org.apache.hadoop.hdfs.server.namenode.JournalSet$JournalAndStream.startLogSegment(Jo      urnalSet.java:107)                                                                          
    at org.apache.hadoop.hdfs.server.namenode.JournalSet$3.apply(JournalSet.java:222)

在这里插入图片描述

三、问题原因:

仔细查看nn的日志,和对源码的分析,发现是由于 namenode这个时间点进行了多次长时间的 full gc (持续1分钟以上 ),导致写 journalnode 超时(默认是20s), namenode进程退出。同时从jn的日志可以看出,后面是没有nn的请求过来的(因为nn已经挂掉了)。

  1. 查看下namenode 的堆内存使用情况。目前JVM 配置了32G,已几乎没有剩余。
    在这里插入图片描述

  2. 查看下namenode 的gc 情况。
    在这里插入图片描述
    可以看到Full gc 时间基本在1分钟以上,甚至有些数据都无法被正确采集到,而恢复正常的namenode 基本gc 时间是很短的。

那么为什么会导致多次长时间的full gc呢。主要是namenode 堆内存几乎被耗尽。导致一直在做长时间的GC,使得写入journalNode 超时,引发了自动的故障转移。

四、解决方案:

通过这次问题排查,也梳理下集群,发现有些不合理的地方,一并处理了:

  1. 增加zookeeper 连接数 60 -> 300
  2. 增加namenode jvm大小 32G -> 40G
  3. 增加journalNode jvm大小 256M -> 4G
  4. 增加journalNode 写入数据超时时间为60s
  5. 降低datanode jvm大小 16 -> 8G
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在搭建Hadoop服务器集群过程中,可能遇到一些常见问题。以下是一些可能出现的问题及相应的解决办法: 1. 网络连接问题:确保集群中的服务器能够相互通信,检查网络配置、防火墙设置等。可以通过ping命令检查服务器之间的连通性。 2. SSH连接问题:如果无法通过SSH进行免密登录,可以检查SSH配置、密钥文件等。确保每台服务器的SSH服务正常运行,并且公钥已正确配置。 3. Java环境问题:如果Hadoop无法找到Java环境,可以检查Java的安装路径和环境变量设置。确保每台服务器上都正确安装了适合的Java Development Kit (JDK)。 4. Hadoop配置问题:在编辑Hadoop的配置文件时,可能出现错误的配置或格式不正确导致集群无法正常启动。建议仔细检查配置文件的语法和参数设置,可以参考官方文档或其他资源进行正确配置。 5. HDFS格式化问题:在格式化HDFS时,可能遇到权限或文件系统错误导致格式化失败。确保有足够的权限执行格式化操作,并且没有其他进程占用HDFS的相关目录。 6. 资源分配问题:如果集群中的节点无法正常分配资源或任务无法运行,可以检查资源管理器(如YARN)的配置和日志,确保资源分配策略和配置正确。 7. 集群安全问题:如果需要启用Hadoop的安全功能(如Kerberos认证),可能遇到配置和认证问题。在启用安全功能前,建议详细阅读相关文档,并按照指导进行正确配置。 8. 高可用性配置问题:如果需要实现Hadoop集群的高可用性,配置过程可能较为复杂。建议仔细阅读相关文档,并按照指导进行正确配置,包括故障转移、备份节点等。 9. 日志和错误排查:在搭建过程中,如果遇到问题,可以查看Hadoop的日志文件和错误信息,以便更好地定位问题。可以通过日志来分析异常、错误和警告信息,并尝试解决或定位问题。 以上是一些常见的问题及解决办法,具体的问题解决方案可能因环境和配置的不同而有所差异。在遇到问题时,可以参考官方文档、社区论坛或其他相关资源,进行更详细的排查和解决。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值