注意:说明:
注意:1. 该操作仅支持 Hadoop3.x 及以上版本。
注意:2. 暂停状态的 DataNode 不支持维护操作。
一、开启控制台切换管理状态操作入口
1. 修改 hdfshosts 中的内容为 json 格式。
使用控制台集群脚本功能在 Master 节点上执行脚这篇件 hdfshosts_txt_to_json.sh 和 hdfshosts_txt_to_jso_rollback.sh,脚这篇件内容如下:
#!/bin/bashcd /usr/local/service/hadoop/etc/hadoopfile=hdfshostsif [ ! -f "$file" ];then echo "$file not exists" exit -1fibak_file="$file.txt.bak"if [ ! -f "$bak_file" ];then cp -f $file $file.txt.bakfi output_file="$file.tmp"## 生成json文件echo '[' > "$output_file"first_record=truewhile IFS= read -r linedo if [ "$first_record" = false ]; then echo ',' >> "$output_file" fi echo " {\\"hostName\\": \\"$line\\"}" >> "$output_file" first_record=falsedone < "$file"echo ']' >> "$output_file"mv -f $output_file $filechown hadoop:hadoop $filechmod 755 $filecat $file
#!/bin/bashcd /usr/local/service/hadoop/etc/hadoopfile=hdfshostsbak_file="$file.txt.bak"cp -f $bak_file $filechown hadoop:hadoop $filechmod 755 $filecat $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 退出维护状态操作。