您的位置:首页 > 健康 > 养生 > 智能建站推荐_武汉网站优化排名_软文代写公司_广告软文外链平台

智能建站推荐_武汉网站优化排名_软文代写公司_广告软文外链平台

2025/1/4 10:54:34 来源:https://blog.csdn.net/zxln007/article/details/142904148  浏览:    关键词:智能建站推荐_武汉网站优化排名_软文代写公司_广告软文外链平台
智能建站推荐_武汉网站优化排名_软文代写公司_广告软文外链平台

适用范围

hdfs分批次Decommission下线操作

使用背景:

在对datanode节点分批次做Decommission下线过程中,当datanode状态已经为Decommissioned状态时然后停止进程,若此时立即进行下一批次的下线,上一批次的datanode被从exclude文件中删除刷新,此时的datanode依然是会被分配读取数据的,会造成块的丢失状态。所以datanode真正被正式下线的标志是在两个namenode的日志里出现“BLOCK* removeDeadDatanode: lost heartbeat ”。

执行下线命令

登录namenode节点,分别在两台namenode做刷新

将下线的主机名加入/home/bigdata/software/hadoop/etc/hadoop/excludes文件,执行
hdfs dfsadmin -refreshNodes
将拷贝excludes到另一台namenode节点,执行
hdfs dfsadmin -refreshNodes

停datanode进程

等待50070界面Decommissioning 块搬移完成,处于Decommissioned状态。停相应的datanode进程

hadoop-daemon.sh stop datanode

并且需要关闭掉dn_alive.sh datanode保活脚本

判定下线完成标准

等待大约630秒+3min 后,namenode的日志里会出现:BLOCK* removeDeadDatanode: lost heartbeat
判断lost heartbeat是否出现(由脚本手动执行判断)
已经出现则将exclude清除,再加入下一批要下线Decommission的机器。(循环到第一步)
hdfs dfsadmin -refreshNodes

5.清空数据hdfs yarn logs目录
删除不需要的数据目录

附加:判定 lost heartbeat脚本 check_heartbeat.sh
使用方法:
将要判定的ip地址贴入 list ;然后执行
list里一定是ip地址,不能是主机名。namenode日志打出来的就是ip地址

#!/bin/shtstamp=`date -d '1 hour ago' +%Y-%m-%d-%H`
local_old_log=/home/bigdata/hadoop/logs/hadoop-bigdata-namenode-myhadoop1.log.${tstamp}
local_cur_log=/home/bigdata/hadoop/logs/hadoop-bigdata-namenode-myhadoop1.log
ssh_old_log=/home/bigdata/hadoop/logs/hadoop-bigdata-namenode-myhadoop2.log.${tstamp}
ssh_cur_log=/home/bigdata/hadoop/logs/hadoop-bigdata-namenode-myhadoop2.logstandby_ip=myhadoop2for ip in `cat list`;
do
ssh ${standby_ip} -n "grep 'lost heartbeat' ${ssh_cur_log}|grep -w ${ip}" > /dev/null
ssh_cur_stat=$?
if [ ${ssh_cur_stat} -ne 0 ];then
ssh ${standby_ip} -n "grep 'lost heartbeat' ${ssh_old_log}|grep -w ${ip}" > /dev/null
ssh_cur_stat=$?
figrep 'lost heartbeat' ${local_cur_log}|grep -w ${ip} > /dev/null
cur_stat=$?
if [ ${cur_stat} -ne 0 ];then
grep 'lost heartbeat' ${local_old_log}|grep -w ${ip} > /dev/null
cur_stat=$?
fiif [ ${ssh_cur_stat} -eq 0 -a ${cur_stat} -eq 0 ];then
echo "${ip}主备节点都下线完毕"
fi
if [ ${ssh_cur_stat} -ne 0 -a ${cur_stat} -ne 0 ];then
echo "${ip}主备节点都未下线完毕"
fi
if [ ${ssh_cur_stat} -ne 0 -a ${cur_stat} -eq 0 ];then
echo "${ip}当前节点下线完毕,另外节点未下线"
fi
if [ ${ssh_cur_stat} -eq 0 -a ${cur_stat} -ne 0 ];then
echo "${ip}当前节点未下线,另外节点下线完毕"
fidone

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com