Ubuntu HDFS配置更新步骤
导读:Ubuntu 上更新 HDFS 配置的规范流程 一 操作前准备 备份当前配置与环境:将 $HADOOP_HOME/etc/hadoop 目录整体备份;记录关键参数(如 fs.defaultFS、dfs.replication、目录路径等)...
Ubuntu 上更新 HDFS 配置的规范流程
一 操作前准备
- 备份当前配置与环境:将 $HADOOP_HOME/etc/hadoop 目录整体备份;记录关键参数(如 fs.defaultFS、dfs.replication、目录路径等);导出当前环境:
env | grep HADOOP;确保有 sudo 权限与集群维护窗口。 - 选择变更方式:
- 动态生效:仅修改无需重启的参数,使用
hdfs dfsadmin -refreshNodes、重启单个服务或滚动重启。 - 滚动重启:逐台重启 DataNode,最后重启 NameNode(HA 环境按角色顺序执行)。
- 全量重启:停机维护窗口内执行
stop-dfs.sh & & start-dfs.sh。
- 动态生效:仅修改无需重启的参数,使用
- 规划目录与权限:新目录提前创建,权限与属主与运行用户一致(常见为 hdfs:hdfs 或 hduser:hadoop),并确保磁盘挂载与空间充足。
二 修改配置文件
- 进入配置目录:
cd $HADOOP_HOME/etc/hadoop。 - 常用文件与作用:
- core-site.xml:HDFS 入口与基础目录(如 fs.defaultFS、hadoop.tmp.dir)。
- hdfs-site.xml:副本数、NameNode/Datanode 数据目录、Web 端口、黑名单等。
- hadoop-env.sh:设置 JAVA_HOME 与 JVM 参数。
- 仅涉及 HDFS 时,通常无需改动 yarn-site.xml/mapred-site.xml。
- 示例(按需选取要更新的项):
- core-site.xml(更新默认文件系统或临时目录)
< configuration> < property> < name> fs.defaultFS< /name> < value> hdfs://namenode01:8020< /value> < /property> < property> < name> hadoop.tmp.dir< /name> < value> /data/hadoop/tmp< /value> < /property> < /configuration> - hdfs-site.xml(更新副本数、目录与端口)
< configuration> < property> < name> dfs.replication< /name> < value> 3< /value> < /property> < property> < name> dfs.namenode.name.dir< /name> < value> file:///data/hadoop/dfs/name< /value> < /property> < property> < name> dfs.datanode.data.dir< /name> < value> file:///data1/hadoop/dfs/data,file:///data2/hadoop/dfs/data< /value> < /property> < !-- 可选:Secondary NameNode Web 地址 --> < property> < name> dfs.namenode.secondary.http-address< /name> < value> secondary01:50090< /value> < /property> < /configuration> - hadoop-env.sh(确保 JAVA_HOME 正确)
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
- core-site.xml(更新默认文件系统或临时目录)
三 分发与生效
- 分发配置:将修改后的配置同步到所有节点(如
rsync -av $HADOOP_HOME/etc/hadoop/ nodeX:$HADOOP_HOME/etc/hadoop/),保持集群一致性。 - 创建与授权新目录(如变更了本地数据目录):
sudo mkdir -p /data/hadoop/dfs/{ name,data} sudo chown -R hdfs:hdfs /data/hadoop - 使环境变量生效(如修改了
JAVA_HOME或HADOOP_HOME):echo 'export HADOOP_HOME=/usr/local/hadoop' > > ~/.bashrc echo 'export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin' > > ~/.bashrc source ~/.bashrc - 动态/滚动生效建议:
- 仅调整 dfs.replication 等无需重启的参数时,可直接生效;涉及 NameNode/Datanode 存储目录 的变更需按下一节处理。
- 节点变更(退役/新增)可先更新 dfs.hosts / dfs.hosts.exclude,再执行
hdfs dfsadmin -refreshNodes使节点名单生效。
四 涉及数据目录变更时的安全做法
- 基本原则:变更 dfs.namenode.name.dir 或 dfs.datanode.data.dir 属于结构性变更,需谨慎处理数据与元数据一致性。
- 推荐步骤:
- 全量备份元数据(如 NameNode 元数据目录 与必要的 JournalNode 数据)。
- 按“滚动替换”思路逐台处理 DataNode:
- 将新目录加入
dfs.datanode.data.dir,旧目录保留; - 启动 DataNode,待 Web UI 与
hdfs dfsadmin -report显示新盘已使用且数据块恢复完成后,再下线旧盘。
- 将新目录加入
- 处理 NameNode:
- 非 HA:在停机窗口内,先安全停止集群,迁移/指向新 name.dir,执行一次 NameNode 格式化(会清空元数据,务必已备份),再启动;
- HA:通过 JournalNode 与 ZooKeeper 进行故障切换与升级,避免直接格式化;按官方 HA 流程变更并验证。
- 校验:
hdfs dfsadmin -report查看 Live Nodes、容量与磁盘使用;hdfs fsck / -files -blocks -locations检查块分布与健康;- 访问 NameNode Web UI(9870 端口) 确认状态正常。
- 重要提醒:直接修改 fs.defaultFS 并不会“移动”既有数据;如需迁移数据,请结合 DistCp 或 HDFS Balancer 完成数据重分布与均衡。
五 验证与回滚
- 快速验证:
访问 NameNode Web UI:http://:9870 检查集群健康与节点状态。hdfs dfsadmin -report hdfs dfs -ls / hdfs fsck / -files -blocks -locations - 回滚预案:
- 配置回滚:将配置文件与目录恢复至变更前版本,按“滚动重启”顺序恢复服务;
- 数据回滚:若 NameNode 被格式化或元数据受损,使用备份恢复 name.dir 与 JournalNode 数据,再启动集群。
- 常见端口参考:NameNode Web 9870、DataNode HTTP 50075、Secondary NameNode Web 50090(不同版本可能略有差异)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu HDFS配置更新步骤
本文地址: https://pptw.com/jishu/771813.html
