hadoop集群高可用之常见问题分析

namenode-HA问题:

  • 两个或以上的namenode节点数启动后都是standby状态
    解决办法:1、先查看namenode节点的状态(nn1是namenode的节点名称)
bin/hdfs haadmin -getServiceState nn1

在这里插入图片描述
然后使用命令切换状态即可

bin/hdfs haadmin -transitionToActive nn1

*:手动装换如果报错,是因为配置自动转换,依靠zkfc来控制namenode的状态

dfs.ha.automatic-failover.enabled

在这里插入图片描述
2、手动装换失败且namenode节点都是standby状态,那么就是zkfc问题,jps查看是否启动DFSZKFailoverController,即重新启动hdfs集群和zookeeper集群,如果还没有DFSZKFailoverController进程,说明hdfs注册zookeeper集群状态信息出错,需要重新格式化hadoop集群在zookeeper集群中的状态信息,先关闭hadoop集群,使用如下命令

bin/hdfs zkfc -formatZK

在这里插入图片描述
:是在hadoop安装目录下执行该命令,执行完毕后重新启动hadoop集群即可
在这里插入图片描述
通过jps查看,DFSZKFailoverController启动成功,再一次通过web端口访问每一个namenode节点,有一个是active状态。


resourcemanager-HA问题:

配置两个及以上的resourcemanager节点,配置了resourcemanager节点启动resourcemanager的时候,与namenode启动不一样,多个namenode可以直接通过一个sbin/start-dfs.sh全部启动,但resourcemanager的启动可以使用守护进程启动,也可以用sbin/start-yarn.sh直接启动集群中所有的nodemanager(类似sbin/start-dfs.sh启动所有的namenode和datanode)和本节点的resourcemanager,其他节点的resourcemanager是不会启动的,需要单独到其他配置了resourcemanager的节点执行启动resourcemanager命令,否则没有启动无法实现高可用。
可以用脚本直接全部启动所有,也可以挨个到配置了resourcemanager的节点去启动resourcemanager


jobhistoryserver问题:

都检查过没问题就重新启动所有集群,先启动zookeeper集群,再启动hadoop集群中的namenode,用sbin/start-dfs.sh,再启动resourcemanager,用sbin/start-yarn.sh,再启动jobhistoryserver,用sbin/mr-jobhistory-daemon.sh start historyserver(启动historyserver之前必须确定namenode和resourcemanager以及zookeeper集群都全部启动了,多个resourcemanager必须每个都要启动,最后启动historyserver)启动后
在这里插入图片描述

总结:集群是由多个组件通过一定的通信方式进行运作的,每个组件有自己的特性和兼容性,所以有时候集群组件中各个组件的配置文件都是规范的,但是集群运行报错,这就可能是组件之间的兼容性问题导致。在hadoop集群中,hdfs和zookeeper等各部分之间的问题,如果各个部分配置都没问题,可以尝试先停止所有集群组件,传出hadoop的data文件,重新格式化namenode,再启动zookeeper集群,然后从新注册hadoop在zookeeper中的状态信息(sbin/hdfs zkfc -formatZK),再启动namenode和datanode、journalnode(sbin/start-dfs.sh),再启动resourcemanager,historyserver,有其他组件再考虑顺序,zookeeper和namenode,datanode,journalnode等都是最先启动的

猜你喜欢

转载自blog.csdn.net/yhblog/article/details/84851270
今日推荐