前面了解了HDFS文件系统的数据安全,是依靠多个副本来确保的
如何设置默认文件夹上传到HDFS中拥有的副本数量呢?可以在hdfs-site.xml中配置:
这个属性默认是3,一般情况下,无需主动配置(除非需要设置非3的数值)
如果要自定义这个属性,就要修改每一台服务器的hdfs-site.xml文件,并设置此属性
HDFS副本块数量的配置
除了配置文件外,还可以在文件上传的时候,临时决定被上传文件以多少个副本存储
hadoop fs -D dfs.replication=2 -put test.txt /tmp/
如上命令,就可以在上传test.txt的时候,临时设置其副本数位2
对于已经存在HDFS的文件,修改dfs.replication属性不会生效,如果要修改已存在文件可以通过命令
hadoop fs -setrep [-R] 2 path
如上命令,指定path的内容将会被修改为2个副本存储
-R选项可选,使用-R表示对子目录也生效
fsck命令检查文件的副本数
同时,可以使用hdfs提供的fsck命令来检查文件的副本数
hdfs fsck path [-files [-blocks [-locations]]]
fsck可以检查指定路径是否正常
-files可以列出路径内的文件状态
-files -blocks输出文件块报告(有几个块,多少副本)
-files -blocks -locations 输出每一个block的详情
这个文件叫test3.txt,大小为28bytes,replication=1,就是一个副本,后面的1 blck就是一个块
这个就是有两个副本的,一个副本在192.168.88.103,一个副本在192.168.88.101里
block配置
可以看到通过fsck命令验证了:
文件有多个副本
文件被分成多个块存储在hdfs
对于块(block),hdfs默认设置为256一个,也就是一个1GB的文件会被划分为4个块(block)存储
块大小可通过参数来修改
268435456b也就是256MB,单位是=MB-KB-B,每一次换算x1024