有奖捉虫:行业应用 & 管理与支持文档专题 HOT
文档中心 > 弹性 MapReduce > 最佳实践 > EMR on CVM 运维实践 > HDFS DataNode 维护状态切换最佳实践
DataNode 维护状态(IN_MAINTENANCE)适用于 DataNode 短暂下线,但不需要迁移数据的场景,如服务快速维修,磁盘更换等。DataNode 维护模式操作入口控制台默认不开启,需要用户手动配置后支持。
说明:
1. 该操作仅支持 Hadoop3.x 及以上版本。
2. 暂停状态的 DataNode 不支持维护操作。

开启控制台切换管理状态操作入口

1. 修改 hdfshosts 中的内容为 json 格式。
使用控制台集群脚本功能在 Master 节点上执行脚本文件 hdfshosts_txt_to_json.sh 和 hdfshosts_txt_to_jso_rollback.sh,脚本文件内容如下:
#!/bin/bash
?
cd /usr/local/service/hadoop/etc/hadoop
file=hdfshosts
if [ ! -f "$file" ];then
echo "$file not exists"
exit -1
fi
?
bak_file="$file.txt.bak"
if [ ! -f "$bak_file" ];then
cp -f $file $file.txt.bak
fi
?
output_file="$file.tmp"
## 生成json文件
echo '[' > "$output_file"
first_record=true
while IFS= read -r line
do
if [ "$first_record" = false ]; then
echo ',' >> "$output_file"
fi
?
echo " {\\"hostName\\": \\"$line\\"}" >> "$output_file"
?
first_record=false
done < "$file"
echo ']' >> "$output_file"
mv -f $output_file $file
chown hadoop:hadoop $file
chmod 755 $file
cat $file
#!/bin/bash
?
cd /usr/local/service/hadoop/etc/hadoop
file=hdfshosts
bak_file="$file.txt.bak"
cp -f $bak_file $file
chown hadoop:hadoop $file
chmod 755 $file
cat $file
2. 在 hdfs-site.xml 中新增配置项。
新增配置参数 dfs.namenode.hosts.provider.classname,参数值 org.apache.hadoop.hdfs.server.blockmanagement.CombinedHostFileManager。
?
3. 保存并下发配置后,重启 NameNode。
4. 查看 WebUI 或者执行 hdfs dfsadmin -report 进行检查。
5. (建议)缩容、扩容 core 节点一次,因为上述操作会修改 hdfshosts 文件,避免后续出现问题。
6. 在 HDFS 角色管理中出现切换管理状态按钮。

DataNode 进入维护状态

1. 登录 EMR 控制台,在集群列表中单击对应的集群 ID/名称进入集群详情页。
2. 在集群详情页中单击集群服务,然后选择 HDFS 组件右上角操作 > 角色管理
3. 角色管理勾选操作状态为已启动的 DataNode 角色后,选择更多>切换管理状态执行 DataNode 进入维护状态操作。
4. 选择进入维护状态时,可设置维护时间。维护时间内 DataNode 将不再对外提供服务,且不会进行数据迁移;超过配置的维护时间之后还没有恢复服务将开始数据迁移。

DataNode 退出维护状态

若维护时间内节点维修完成,超时后 DataNode 将重新对外提供服务,但是维护状态需要用户在控制台手动操作退出。
1. 登录 EMR 控制台,在集群列表中单击对应的集群 ID/名称进入集群详情页。
2. 在集群详情页中单击集群服务,然后选择 HDFS 组件右上角操作 > 角色管理
3. 角色管理勾选操作状态为已启动(维护中)的 DataNode 角色后,选择更多>切换管理状态执行 DataNode 退出维护状态操作。


http://www.vxiaotou.com