现场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

 

posted @ 2025-09-09 11:33  技术虫  阅读(13)  评论(0)    收藏  举报