一、使用 setrep 命令来设置
# 设置 /javafx-src.zip 的文件块只存三份 hadoop fs -setrep 3 /javafx-src.zip
二、文件块在磁盘上的路径
# 设置的 hdfs 目录为
/opt/hadoop-tmp/ # hdfs 文件块的路径为 /opt/hadoop-tmp/dfs/data/current/BP-362764591-192.168.8.136-1554970906073/current/finalized/subdir0/subdir0
三、文件的分割
文件大小 < 块设定值,文件不会被切割,直接存放到 hdfs 上,占用磁盘的空间就是文件大小
文件大小 > 块设定值,文件被切割为块大小的 N 份文件,最后一份不够块大小也上面一样,只占用本身大小的磁盘空间
下图可以看到该文件副本为 3 份,分别存放在 h140、h138 和 h136 三台机器上
四、改变副本数后的文件的变化
# 减少,会随机删除一个机器上的文件块,这里是删除了 h136 上的 hadoop fs -setrep 2 /javafx-src.zip
# 增加,由于只配置了三台机器无法截图 # 分两种情况: # 机器数量 >= 副本数,会把所有文件块复制到新节点 # 机器数量 < 副本数,会等有新节点增加再执行复制操作,一直到达副本数为止 # 文件块的副本数储存在 NameNode 上 hadoop fs -setrep 5 /javafx-src.zip