HDFS理论基础
-
思考:为什么需要开发HDFS?
- 思路:开发hdfs肯定是为了更好地去支持分布式存储和计算。
- 1.hdfs对于分布式中的分而治之,并行计算的支持
- 2.hdfs对于分布式中的计算向数据移动的支持。
- 思路:开发hdfs肯定是为了更好地去支持分布式存储和计算。
-
存储模型
- 文件线性按字节切割成块(block),有offset,id
- 不同文件的块大小可以不一样
- 同一个文件除了最后一个块,其他的块大小一致
- block的块大小依照硬件到I/O调整。hadoop2.x默认块大小为128MB
- block分散在集群的节点上,有自己的location信息。
- block有副本机制(replication),没有主从概念,副本存在不同的节点上。
- 副本是为了满足数据可靠性和计算性能
- 文件上传可以指定block大小和副本数,上传后只能修改副本数(增加副本数)
- 文件支持追加数据,不支持修改数据
-
架构设计
- hdfs是一个主从架构(Master/Slaves)
- 主要由NameNode和DataNode组成
- hadoop2.x支持两种集群模式:非高可用和高可用(HA)
- 非高可用:由一个SecondaryNameNode对NameNode进行数据备份更新FsImage和EditLog。
- 高可用(HA):2.x支持一个Active和一个StandyBy的NameNode组成