现场Namenode和JournalNode挂掉,影响整个hadoop集群稳定,写个健康检查的脚本,将节点拉起,任务重启。
现场Namenode和JournalNode挂掉,影响整个hadoop集群稳定,写个健康检查的脚本,将节点拉起,任务重启。
#!/bin/bash
# Hadoop进程健康检查脚本
# 用法:通过cron定时调用此脚本进行检查
LOG_FILE="/tmp/hadoop-monitor.log"
# 日志函数
log() {
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a "$LOG_FILE"
}
# 检查进程状态
check_process() {
local process=$1
jps | grep -q "$process"
}
# 重启指定进程
restart_process() {
local process=$1
local service="hadoop-hdfs-${process}"
log "[${process}] 开始重启流程"
# 优先尝试systemctl
if command -v systemctl >/dev/null && systemctl is-active --quiet "$service"; then
systemctl restart "$service" 2>/dev/null
else
# 降级使用hadoop-daemon.sh
hadoop-daemon.sh stop "$process" 2>/dev/null
sleep 2
hadoop-daemon.sh start "$process"
fi
}
# 执行核心检查逻辑
do_check() {
# 检查JournalNode
if ! check_process "JournalNode"; then
log "检测到 JournalNode 异常,正在重启..."
restart_process "journalnode"
fi
# 检查NameNode
if ! check_process "NameNode"; then
log "检测到 NameNode 异常,正在重启..."
restart_process "namenode"
fi
}
# 执行检查
do_check

浙公网安备 33010602011771号