数据分块存储和副本的存放,是保证可靠性和高性能的关键
将每个文件的数据进行分块存储,每一个数据块又保存有多个副本。这些数据块副本分布在不同的机器节点上
设置备份数
方法一:配置文件hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
方法二:通过命令修改备份数
bin/hadoop fs -setrep -R 1 /
hadoop fs -setrep -R 3 hdfs://master:9000/
注意:方法二可以改变整个HDFS里面的备份数,不需要重启HDFS系统,
方法一需要重启HDFS系统才能生效。
副本存放位置:
默认的同一份数据的副本,会有3个
第一份:存放到本机器的HDFS目录下
第二份:存放到不同于第一份所在的机架上的另外一个机架上的某台服务器上
第三份:存放在该机架下的随机一台机器上
更多的副本:选择任意一台服务器上进行存储
NameNode如何选择在哪个datanode存储副本,这里需要对可靠性,写入带宽和读取带宽进行权衡。例如,吧所有副本都存储在一个节点损失的写入带宽最小,因为复制pipeline都在同一个节点上运行,但这并不提供真实的冗余(如果节点发生故障,那么该块中的数据就会丢失)。同时,同一机架上服务器间的读取带宽是很高的。另一个极端,把副本放在不同的数据中心可以最大限度的提高冗余度,但是带宽的消耗非常大。