一、使用 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 上文件块的副本数设置 随笔 第1张

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

 

三、文件的分割

文件大小 < 块设定值,文件不会被切割,直接存放到 hdfs 上,占用磁盘的空间就是文件大小
文件大小 > 块设定值,文件被切割为块大小的 N 份文件,最后一份不够块大小也上面一样,只占用本身大小的磁盘空间

下图可以看到该文件副本为 3 份,分别存放在 h140、h138 和 h136 三台机器上

 HDFS 上文件块的副本数设置 随笔 第2张

四、改变副本数后的文件的变化

# 减少,会随机删除一个机器上的文件块,这里是删除了 h136 上的
hadoop fs -setrep 2 /javafx-src.zip

HDFS 上文件块的副本数设置 随笔 第3张

# 增加,由于只配置了三台机器无法截图
# 分两种情况:
# 机器数量 >= 副本数,会把所有文件块复制到新节点
# 机器数量 <  副本数,会等有新节点增加再执行复制操作,一直到达副本数为止
# 文件块的副本数储存在 NameNode 上
hadoop fs -setrep 5 /javafx-src.zip

 

http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄