数据盘故障导致journalnode异常恢复
背景环境:hdp2.6.6部署的小集群(4节点),这个投入生产后,转手了很多批次人维护,安装源介质这些通通都找不到了,目前官网无法下载hdp的安装介质,中途有坏了一个节点的系统盘,维修好了后,因为没有安装介质,一直都没有恢复。集群部署了4个jn,昨天一个节点的data1故障,导致namenode异常无法启动和ha切换。
异常原因:因为是小集群,没有做服务进程规划,组件都是公用的节点的情况,刚刚好data1这个盘是namenode和journalnode的数据存储盘,导致editlog读取写入异常,ha的切换失败,最后两个节点namenode同时异常,后面停掉该节点的jn,但是因为部署了4个jn,导致没有超过半数以上的jn存活,所以无法拉起namenode
处理方式:journalnode的作用有点像zookeeper,每个节点的数据都是一样的,所以恢复思想是从正常的节点将数据复制到故障节点,然后重新启动journalnode,启动完成后再重启namenode
操作步骤:
1、将故障节点的data1给umount掉,umount报错无法移除,可以通过losf|grep data1,看看是什么进程在占用了该目录,然后将进程kill掉 2、将正常节点上的journalnode数据拷贝到异常节点,然后给建个软链回到data1下面,目录权限跟正常节点一致 3、重启故障节点的journalnode,查看日志看看是不是正常 4、重启namenode(非故障节点),等待启动完成后加载,看看状态能不能回到active的情况 5、故障节点的namenode数据存储目录也建一个软连接,使用的目录要跟正常的一样,这个可以不用拷贝数据,启动后会在journalnode拉取新的,正常会成为备用节点 6、检查hdfs是否可以进行读写了,正常后就恢复了,后面可以写故障分析和故障报告了 |