在 Ubuntu 上配置 HDFS 副本数
一 配置默认副本数 dfs.replication
- 进入 Hadoop 配置目录:$HADOOP_HOME/etc/hadoop,编辑 hdfs-site.xml,在 中添加或修改:
<property>
<name>dfs.replication</name>
<value>3</value>
<description>默认副本数,生产常用 3;单机或伪分布式可设为 1</description>
</property>
- 说明:HDFS 的默认副本数为 3。在伪分布式/单机环境通常设置为 1;集群环境建议与 DataNode 数量匹配(副本不会超过可用 DataNode 数)。修改后需同步到所有节点并重启 HDFS 使配置生效。
二 使配置生效
- 同步配置到所有节点后,按以下顺序操作:
- 如果集群已运行,先停止:stop-dfs.sh
- 格式化 NameNode(首次或元数据异常时执行):hdfs namenode -format
- 启动 HDFS:start-dfs.sh
- 验证进程:jps 应看到 NameNode、DataNode(及 SecondaryNameNode)
- 验证 Web UI:访问 http://:9870(Hadoop 3.x)查看副本配置与块分布
- 提示:仅修改配置而未重启守护进程,已运行服务不会自动加载新副本数。
三 按文件或目录调整副本数
- 对已有路径调整副本数(递归生效加 -R;-w 等待副本达标):
hdfs dfs -setrep -w 5 /path/to/file
hdfs dfs -setrep -R -w 2 /path/to/dir
hadoop fs -D dfs.replication=2 -put local.txt /tmp/
- 说明:命令行设置会覆盖 dfs.replication 的默认值,对已存在文件/目录有效。
四 验证与常见约束
hdfs dfsadmin -report
hdfs fsck / -files -blocks -locations
- 约束与建议:
- 实际副本数受限于可用 DataNode 数量,无法超过在线节点数。
- 副本数越高可靠性越高,但存储开销越大;在单机/伪分布式务必设为 1,避免复制失败。
- 修改 dfs.replication 后,已存在文件不会自动变更,需要 -setrep 调整。