怎么样尽快处理恢复
环境
| 组件 | 版本 |
|---|---|
| Apache Hadoop | 2.8.2 |
| Apache zookeeper | 3.4.6 |
我们是物理机,偶尔会出现cpu,内存等各种硬件问题,Namenode宕机虽然不常见,但是一旦遇到了,就是灾难性问题。所以如何快速响应,迅速恢复集群,就是一个非常重要的问题。
这也算是应急预案的实施方式之一。
情况一:standby节点宕机这种情况比较好处理,因为对在线业务基本无影响。只需要等待机器启动后,启动namenode进程就可以了
启动zookeeper 和hadoop namenode & journalnode
zk-Server.sh start hadoop-daemon.sh start journalnode hadoop-daemon.sh start namenode
然后jps 查看一下启动情况
查看一下日志是否有报错产生
如果没有报错的话,那就正常启动了,如果有报错再根据日志报错来排查
这种情况是很头疼的,因为一定会影响到在线业务。而且可能影响的事件会比较长,所以理论上来说先要跟上面领导进行报备,通知业务。说明情况,然后说明恢复时间。
我们能做的就是尽量减少影响时间和影响范围。
首先,active namenode宕机的情况下,standby节点是无法自动切换到active的,因为standby节点跟active的通信断开了,简单说就是不通,我们可以看到hdfs-site.xml的配置
dfs.ha.fencing.methods sshfence A list of scripts or Java classes which will be used to fence the Active NameNode during a failover. See the HDFS High Availability documentation for details on automatic HA configuration.
我们将配置修改为
dfs.ha.fencing.methods sshfence shell(/bin/true) A list of scripts or Java classes which will be used to fence the Active NameNode during a failover. See the HDFS High Availability documentation for details on automatic HA configuration.
然后重启namenode进程
hadoop-daemon.sh stop namenode && hadoop-daemon.sh stop zkfc hadoop-daemon.sh start namenode && hadoop-daemon.sh start zkfc
查看namenode状态(假设standby为nn2,现在已经切换为active)
hdfs haadmin -getServiceState nn2
如果为active 则代表启动成功,继续查看日志有无报错。
如果无报错则代表启动正常
然后等待原先的active节点机器启动恢复,启动namenode和zkfc
# 启动zookeeper zkServer.sh start # 启动hdfs和zkfc hadoop-daemon.sh stop namenode && hadoop-daemon.sh stop zkfc hadoop-daemon.sh start namenode && hadoop-daemon.sh start zkfc
查看namenode状态
hdfs haadmin -getServiceState nn1
如果为standby则为启动成功,继续查看日志有无报错。
待两个namenode节点都正常后,择机将配置还原。
记得先进行手动切换
hdfs haadmin -failover nn2 nn1



