HDFS存储原理
1.block 管理单位
默认256MB
如丢失了某个块,导致文件不完整-> 通过多个副本解决(备份)
设置,默认文件上传到HDFS中拥有的副本数量:hdfs-site.xml
属性默认是3,除非需要特殊设置,不需要修改
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
上传文件的时候,临时决定上传以多少个副本存储
hadoop fs -D dfs.relication=2 -put test.txt /tmp/
对于已经存在的HDFS的文件,修改dfs.replication属性不会生效,如果需要修改已经存在的文件可以通过命令:
hadoop fs -setrep [-R] 2 path
查看副本数
hdfs fsck path [-files[-blocks[-locations]]]
Block配置:
块大小可以通过参数,默认设置是256MB一个,一个1G的文件会被划分为4个block存储
<property>
<name>dfs.blocksize</name>
<value>268435456</value>
<description>
</property>
2.NameNode元数据
namenode基于edits文件和fsimage文件管理块
edits:流水账文件,记录hdfs中的每一次操作,以及被操作影响的blocks
fsimage:edits合并,记录数据的最终状态,压缩edits的空间
元数据合并---SecondaryNameNode实现,通过http协议拉到数据,拉到数据之后在自己的内存中合并之后发送出去